Company: Oracle (CGIU) - 6M Intern + FTE
Role: Associate Software Developer
Date: August '25
Mode: On-campus
Verdict: Selected
The OA had four sections covering aptitude, reading comprehension, probability, and core CS fundamentals like DBMS, OOP, SQL, OS, and Networking. There were also two coding problems:
1. Minimize Maximum of Array
Given an array of positive integers. In each operation, you could pick an index i (2 ≤ i ≤ N) and a value x (1 ≤ x ≤ arr[i]), then do:
arr[i-1] = arr[i-1] + x
arr[i] = arr[i] - x
The goal was to minimize the maximum value in the array. I solved it using binary search on the possible maximum combined with a greedy check function that pushed surplus values left.
2. JSON Diff Tool
Develop a simple service to compare two JSON objects (up to size 1e5) and identify differences in their key-value pairs.
This round started with introductions and some resume-based questions. The interviewer asked me about my internship experience and technical concepts I had worked on.
Resume-based Questions:
What are messaging queues? Give examples.
What is AOF and RDB in Redis? Explain the differences.
Explain the architecture and details of the projects on my resume.
DSA Question: Longest Increasing Subsequence (LIS)
I first explained the brute force recursive approach.
Then I optimized it using DP tabulation (O(n²)).
Finally, I discussed further optimization using binary search with extra space (O(n log n)) and wrote pseudocode in C++.
The round started with a conceptual question:
Why do we need Redis when programming languages already have hashmaps?
DSA Questions:
Find the nth node from the back of a linked list – solved using two pointers.
Find the Lowest Common Ancestor (LCA) in a binary tree – solved using DFS.
Find all pairs of numbers whose sum is divisible by 60 – solved using complements and hashing.
This was a short round with one question:
Question: Count all substrings in a very long string of digits that represent powers of 2. The string was too large to fit in RAM and resided on disk.
My Approach:
I processed the string in chunks, making sure to handle overlaps at chunk boundaries. I precomputed all powers of 2 as strings and stored them in a hash set for fast lookup. Then, I slid a window over each chunk and checked substrings against the set. From a system design perspective, I treated it like a small pipeline: a disk reader loads chunks, a processor extracts and checks substrings, and an aggregator combines counts. Multiple chunks could be processed in parallel to make it scalable...
This round included a mix of puzzle and behavioral questions.
Puzzle:
Behavioral / Scenario Questions:
Where do you see yourself in 5 years?
If you were a tech lead, how would you manage your team?
How would you handle a situation where a team member is absent, manpower is short, and a deadline is approaching?
Do you have plans for pursuing MS in the future?
What are some real-life applications of data structures?