A software engineer at a company known for its database, its cloud infrastructure and the Java language works on systems that customers run for many years, often on older versions. Prepare to reason about how a database recovers from a crash, which index fits which query, a memory leak in a long-running Java service, keeping a standby copy in another region, and a query that got slower after an upgrade. What to show here: careful engineering on systems customers keep for years. Each question below has what the interviewer is checking, an answer frame and a sample spoken answer to adapt.
How Oracle hires, in its own words, and its questions for every job →
“In my last job we found a bug where a report lost rows at a year boundary. The code had changed a lot between the current version and the two older ones customers still ran. I fixed the current version first, with a test. Then I checked which older versions were still supported and had the bug, and ported the fix by hand, because the surrounding code was different. Each port ran the full test suite for that version. I wrote a release note in plain words for customers. It took longer than the fix itself. The result was your result.”
Weak answers fix only the latest version and tell customers to upgrade.
“A batch job sometimes wrote wrong values into a numeric column, but only on one server. I assumed my code was at fault, so I logged the values right before the write, and they were correct. I then wrote a program of a few lines that inserted a known value through the same database driver, and it reproduced the problem on that server only. The driver version there was older and handled a certain precision wrongly. I upgraded the driver, added a check that all servers use the same version, and reported the case to the driver team with my small program. The result was your result.”
Weak answers blame the lower layer without a reproduction, or never look below their own code.
“Every change is first written as a record in a log, and only later are the data pages updated on disk. A commit is complete when the log records are safely on disk, which is a fast sequential write, while data pages can be written later in a cheaper order. After a crash, recovery reads the log. Changes that were committed but not yet in the data files are redone, and changes from transactions that never committed are undone. Because the log has everything, no committed change is lost. Checkpoints write out dirty pages regularly, so recovery only needs to replay the log from the last checkpoint.”
Weak answers describe the log as a backup, or cannot explain why writing it first makes commits safe.
“A tree index keeps keys in sorted order, so it can find the start of a date range and read forward, and it can return rows already ordered. A hash index turns a key into a bucket, which is very fast for an exact match but useless for a range, because nearby keys sit in unrelated buckets. So the date range needs a tree index. The order number lookup could use a hash index, but a tree index works nearly as well and also serves sorting and prefix searches, so in practice I would use trees for both. Column order matters when one index serves both conditions.”
Weak answers suggest one index for everything and cannot say why a hash index fails for ranges.
“First I would confirm it is a real leak by watching memory in use right after each garbage collection. If that low point climbs day after day, something is holding on to objects. Then I would take heap dumps a day apart and compare them to see which class grows. The dump also shows the chain of references that keeps those objects alive, and at the end of the chain there is usually a static map, a cache without a limit, or a listener that is never removed. I would fix that, and add a long-running test that watches memory so the leak cannot return.”
Weak answers increase the heap size or schedule a nightly restart and call it solved.
“I would send the primary's log records to the standby, which applies them and stays a close copy. If the primary waits for the standby to confirm before it commits, no committed transaction is ever lost, but every commit pays the distance between regions, and the standby's trouble becomes the primary's trouble. If it does not wait, commits stay fast, but the last moments of changes can be lost in a failure. Many customers accept a small loss for speed, and some cannot. Failover must be decided by a third party or a quorum so that both regions never think they are primary. The old primary rejoins as a standby.”
Weak answers copy files on a schedule, or do not mention the risk of two primaries.
“I would ask for the exact query and the execution plans before and after the upgrade. Comparing them usually shows the difference, such as a join method that changed because the new version estimated the number of rows differently. For quick relief I would check that statistics are fresh, and if the plan is still bad, pin the old plan or use a hint so the customer's business is not waiting on our investigation. Then I would find out why the new version chose that plan, reproduce it on our side, and either fix it or document the change clearly for other customers.”
Weak answers say the new version is better and ask the customer to rewrite the query.
“Most software I have worked on was replaced within a few years. A database or a finance system runs for decades, and every change must respect what customers built on it. I like that discipline. It rewards careful design, thorough testing and honest release notes over quick wins. My best work so far was making a storage layer recover correctly after crashes, and I found that I care about that kind of correctness. The areas that draw me here are recovery, replication and query planning. I want to learn how these are engineered at a scale my past projects never reached.”
Weak answers give reasons about the brand and show no interest in long-term correctness.
No figures on this page: pay depends on the level, the city and the offer in front of you. When the offer comes, the free salary negotiation script helps with that part.
ClapAssist is an AI interview assistant for Mac and Windows. It listens to the interview on your computer and shows you what to say, in short lines you can read while you talk. Your live interview audio and screen are never stored. Your resume and notes are saved to your account so the app fills them in on any computer. It is hidden from screen share on every plan, including Free; only you can see it.