← Oracle Interview Insights

Oracle·Software Engineer·Onsite - Multi Round·Senior

SeniorPrefer not to say
Jul 2026

Summary

Four rounds at Oracle OCI for a senior backend role. The technical bar was pretty consistent across rounds but the last round was a mess, the interviewer kept cutting me off mid-sentence and I never got to finish a single answer. Good prep material here if you're going in.

Questions Asked (4)

Q1

Design a distributed load testing service that can send traffic to a target service and track metrics like requests per second, average latency, and error rate.

System DesignTechnical Trade-offs
Author's notes

This one opened the loop and I thought I handled it decently.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements: scale, target protocol, metrics granularity, and real-time vs batch reporting. Then design a distributed architecture with a controller, load generator workers, and a metrics pipeline, discussing trade-offs in coordination, data collection, and fault tolerance.

Pro tip: Emphasize how you would avoid the load generators becoming the bottleneck and ensure accurate metrics under high concurrency, e.g., using efficient I/O and local aggregation with periodic reporting.

1. Clarify Requirements and Scope

Ask about expected scale (requests per second, number of targets), protocols (HTTP, gRPC), metrics precision, and whether results need to be real-time. This shapes the design.

2. High-Level Architecture

Propose a controller that orchestrates multiple load generator workers, a metrics aggregator, and a dashboard. Explain how workers are distributed and how they communicate.

3. Load Generation and Coordination

Detail how workers generate load (e.g., using async I/O, connection pooling) and how the controller ensures synchronized start, consistent load distribution, and handles worker failures.

4. Metrics Collection and Aggregation

Describe how each worker collects local metrics (RPS, latency percentiles, error rates) and periodically reports to a central aggregator. Discuss trade-offs between push vs pull and sampling.

5. Scalability, Fault Tolerance, and Trade-offs

Address scaling workers horizontally, handling network partitions, and ensuring metrics accuracy. Discuss trade-offs like accuracy vs overhead, and real-time vs batch processing.

Key Points to Mention

  • Use of distributed workers with a central controller for orchestration and coordination.
  • Efficient load generation techniques: async I/O, connection reuse, and avoiding bottlenecks.
  • Metrics aggregation strategies: local pre-aggregation, percentiles calculation, and push vs pull models.
  • Fault tolerance: handling worker failures, network issues, and ensuring no single point of failure.
  • Scalability: dynamic worker provisioning and load balancing across workers.
  • Trade-offs: accuracy vs resource overhead, real-time monitoring vs cost, and simplicity vs flexibility.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

Implement a delayed task scheduler where a user submits a task ID and a future timestamp, and the system executes the task at that time.

System DesignAlgorithms & Data StructuresTechnical Trade-offs
Author's notes

This went way beyond just writing a scheduler.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then propose a design using a priority queue (min-heap) for efficient retrieval of the next task, and discuss persistence and distributed coordination for reliability. Compare trade-offs between in-memory and distributed approaches, and outline how to handle failures and concurrency.

Pro tip: Emphasize idempotency and at-least-once execution semantics, and mention using a database with a time-ordered index for durability, as this shows production-level thinking beyond basic data structures.

1. Clarify Requirements

Ask about scale (tasks per second, max delay), durability needs, and whether tasks can be cancelled or updated. This ensures the design meets actual constraints.

2. Choose Core Data Structure

Propose a min-heap (priority queue) keyed by execution time for efficient O(log n) insertion and O(1) peek of the next task. Discuss alternatives like time-wheel for high-throughput scenarios.

3. Design Execution Loop

Describe a worker thread that sleeps until the next task's timestamp, then pops and executes due tasks. Handle spurious wakeups and clock drift.

4. Address Persistence and Distribution

For reliability, persist tasks in a database with an index on execution time, and use a distributed lock or leader election to coordinate multiple schedulers. Discuss at-least-once vs exactly-once semantics.

5. Discuss Trade-offs and Extensions

Compare in-memory vs persistent, single-node vs distributed, and polling vs event-driven. Mention monitoring, retries, and dead-letter queues for failed tasks.

Key Points to Mention

  • Priority queue (min-heap) for efficient scheduling
  • Persistence and durability using a database with time-ordered index
  • Distributed coordination (e.g., leader election, distributed locks) for scalability
  • Idempotency and at-least-once execution semantics
  • Handling failures, retries, and dead-letter queues
  • Time-wheel or hierarchical timing wheel for high-throughput scenarios

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q3

Given a binary tree node that includes a parent pointer, find the next node in post-order traversal without restarting from the root.

Algorithms & Data Structures
Author's notes

Honestly a fun problem once I stopped panicking.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

First clarify the definition of post-order traversal and the node structure with parent pointers. Then derive the next node by considering the node's position relative to its parent: if it's a left child, the next node is the leftmost node in the parent's right subtree; if it's a right child, the next node is the parent. Handle edge cases like being the last node in the traversal.

Pro tip: Mention that this approach runs in O(h) time where h is the height of the tree, and O(1) space, which is optimal. Also, note that if the node is the last in post-order, return null.

1. Understand post-order traversal

Post-order visits left subtree, then right subtree, then the node itself. The next node after a given node depends on whether it is a left or right child.

2. Case 1: Node is a left child

If the node is the left child of its parent, the next node is the leftmost node in the parent's right subtree. If the right subtree is empty, the next node is the parent.

3. Case 2: Node is a right child

If the node is the right child of its parent, the next node is the parent, because the parent's left subtree and the node's subtree have been fully traversed.

4. Handle edge cases

If the node is the root or the last node in post-order, there is no next node; return null. Also, consider if the node has no parent (root).

5. Implement and test

Write the function using the parent pointers, and test with various tree shapes (balanced, skewed, single node) to ensure correctness.

Key Points to Mention

  • Post-order traversal order: left, right, root.
  • Use of parent pointers to navigate without restarting from root.
  • Time complexity O(h) and space complexity O(1).
  • Edge cases: node is root, node is last in traversal, empty tree.
  • Handling of left and right child cases distinctly.
  • Potential follow-up: how to find previous node in post-order.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q4

Design and implement a networked key-value store where both keys and values are strings, accessible by clients over the network.

System DesignAPI & IntegrationsTechnical Trade-offs
Author's notes

This was the last round and the context made it rough.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements (consistency, durability, scale, latency) and then present a high-level design covering API, storage engine, and distribution. Dive into trade-offs for key decisions like replication, partitioning, and consistency model, and conclude with a simple implementation sketch and testing strategy.

Pro tip: Emphasize that you would start with a single-node implementation and then evolve it, showing you understand incremental complexity and avoid over-engineering. Also, explicitly state assumptions about client expectations (e.g., synchronous vs asynchronous replication) to demonstrate requirement gathering.

1. Clarify Requirements and Constraints

Ask questions to understand expected scale (QPS, data size), consistency needs (strong vs eventual), durability guarantees, latency targets, and client protocol (HTTP, TCP, etc.). This ensures the design meets actual needs.

2. Define API and Data Model

Specify the network protocol (e.g., REST over HTTP, gRPC, custom TCP) and operations: GET, PUT, DELETE, maybe LIST. Define key/value size limits and error handling.

3. Design Single-Node Storage Engine

Choose an in-memory or disk-based store (e.g., hash map with write-ahead log, LSM tree, B-tree). Discuss indexing, persistence, and concurrency control (locking, MVCC).

4. Scale Out: Partitioning and Replication

Explain how to partition data (consistent hashing) and replicate for fault tolerance (leader-follower, quorum). Discuss consistency models (strong, eventual) and trade-offs (CAP theorem).

5. Implementation Sketch and Testing

Outline a simple implementation (e.g., using a TCP server and a hash map) and mention testing strategies: unit tests, integration tests, chaos engineering for failure scenarios.

Key Points to Mention

  • CAP theorem and trade-offs between consistency, availability, and partition tolerance
  • Consistent hashing for partitioning and data distribution
  • Replication strategies (synchronous vs asynchronous) and quorum-based consistency
  • Durability mechanisms: write-ahead logging, snapshots, and fsync policies
  • Concurrency control: locking, MVCC, or actor model
  • Client-server communication protocols and serialization formats (JSON, Protobuf)

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.