I interviewed for a Software Engineer position at Oracle OCI. I was referred by current employees. The interview process started with a technical screening round. The interviewer asked me which topics I wanted to be evaluated on and if I had experience with Java. I chose to be evaluated on data structures and algorithms. The first question was a warm-up related to tree traversals, followed by a question solvable by standard BFS. The third question involved finding the minimum cost to carry out a task. I initially provided an O(n^2) solution and then optimized it to O(32n) using binary search. The interviewer was satisfied and scheduled me for the onsite rounds.
The onsite consisted of five rounds: coding, bar tender, system design, coding, and hiring manager.
The first coding round involved a discussion on the Leetcode problem "Insert Delete GetRandom O(1)". I was able to solve the problem and explain my approach to handle duplicates. The interviewer then asked me about how I handle blockers or unknowns in my projects.
The bar tender round was conducted by a senior director. We discussed my work portfolio and I was asked to draw the architecture of one of my projects on a whiteboard. He then asked me in-depth questions about the system. He also asked me about my knowledge of the JVM. I provided a high-level overview of how it works, including the lifecycle of Java code compilation, the memory model, and garbage collection.
The system design round involved designing a video streaming website. I started with the functional requirements like uploading and watching videos and then added non-functional requirements like scalability and availability. We discussed the choice of storage, required APIs, metadata, and how to implement the solution using AWS services like S3 for object storage, a CDN for content distribution, encoding/decoding flows, TCP vs UDP for streaming, and the design of the play bar.
The second coding round involved a Leetcode hard problem that I was unable to solve fully. The problem involved finding the node with the maximum value of a given function in a tree. I solved it using a brute force BFS approach, which passed 60% of the test cases. I tried to come up with a better approach but was unable to do so within the allotted time.
The hiring manager round involved an in-depth discussion on my projects and various situational questions. I was asked to come up with basic design choices based on different scenarios.
After a few days, I received positive feedback and was informed that the offer rollout process would begin. The recruiter mentioned that due to the current market, they would not be able to provide any salary increases and would only match my current compensation. I did not argue. The background check was completed and I received a written offer letter. I am not too inclined on switching at nearly 0% hike.