← Oracle Interview Insights

Oracle·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
Apr 2026

Summary

System design round at Oracle for a software engineer role. The whole thing was a job scheduler question and they wanted a lot of ground covered fast, so pacing was a real issue.

Questions Asked (6)

Q1

Design a job scheduler system from scratch. Walk through functional requirements, architecture, and how jobs get dispatched to workers.

System DesignData Modeling
Author's notes

I started with the data model which felt right but I spent too long on it and barely had time for the dispatch path.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying functional and non-functional requirements, then propose a high-level architecture with core components like job queue, scheduler, and workers. Finally, detail the dispatch mechanism, including how workers pull jobs and handle failures.

Pro tip: Emphasize idempotency and at-least-once delivery semantics to show you understand real-world reliability concerns. Also, discuss how you would monitor and scale the system, as Oracle values operational excellence.

1. Clarify Requirements

Ask questions to understand job types (e.g., one-time, recurring), scale (jobs per second), latency, durability, and failure handling. Define functional requirements like job submission, scheduling, execution, and monitoring.

2. High-Level Architecture

Outline components: API for job submission, persistent job store, scheduler service, job queue, worker pool, and monitoring. Explain how they interact and the data flow.

3. Data Model and Storage

Describe how jobs are stored (e.g., relational DB for metadata, queue for pending jobs). Include fields like job ID, payload, schedule time, status, retry count, and dependencies.

4. Scheduling and Dispatch

Explain how the scheduler picks jobs (e.g., priority, FIFO, cron) and dispatches them to workers. Discuss push vs. pull models, and how to ensure exactly-once or at-least-once execution.

5. Reliability and Scalability

Cover fault tolerance (retries, dead-letter queues), scaling workers horizontally, and handling failures (worker crashes, network issues). Mention monitoring and alerting.

Key Points to Mention

  • Job prioritization and fairness (e.g., weighted queues, rate limiting)
  • Idempotency and deduplication to handle retries safely
  • Distributed locking or leader election for scheduler HA
  • Backpressure and queue depth management
  • Observability: metrics, logging, tracing for job execution
  • Support for cron-like recurring jobs and one-off jobs

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

Q2

How would you handle retries and job dependencies in your scheduler design?

System DesignTechnical Trade-offs
Author's notes

Talked through at-least-once delivery with idempotency keys and it landed okay.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements: what types of jobs, expected scale, and failure semantics. Then describe a design that separates retry logic from dependency management, using a state machine for job states and a DAG for dependencies. Discuss trade-offs between simplicity and robustness, and how to handle partial failures and idempotency.

Pro tip: Emphasize idempotency and exactly-once semantics: in distributed systems, retries can cause duplicate execution, so designing jobs to be idempotent is crucial. Also, mention that dependency resolution should be event-driven to avoid polling overhead.

1. Clarify Requirements and Constraints

Ask about job types (batch, streaming), scale (jobs per second), failure handling expectations, and whether exactly-once or at-least-once semantics are needed. This shows you don't jump to solutions.

2. Design Retry Mechanism

Describe retry policies: exponential backoff with jitter, max retries, dead-letter queues. Explain how to track retry counts and avoid infinite loops. Mention idempotency keys to prevent duplicate side effects.

3. Model Job Dependencies

Use a directed acyclic graph (DAG) to represent dependencies. Explain how to detect cycles, topologically sort, and trigger dependent jobs only after all parents succeed. Discuss handling of failed dependencies (e.g., skip or fail downstream).

4. Integrate Retries with Dependencies

Explain how retries affect dependency scheduling: a job's retry should not block independent jobs, but dependent jobs must wait until the job succeeds or is permanently failed. Use a state machine (PENDING, RUNNING, RETRYING, SUCCEEDED, FAILED) to manage transitions.

5. Discuss Trade-offs and Scalability

Compare approaches: centralized scheduler vs. distributed workers, polling vs. event-driven. Mention how to scale (sharding, partitioning) and ensure fault tolerance (persistence, leader election). Highlight trade-offs between consistency and availability.

Key Points to Mention

  • Idempotency and exactly-once semantics to handle duplicate executions from retries
  • Exponential backoff with jitter to avoid thundering herd
  • Dead-letter queues for jobs that exceed max retries
  • DAG-based dependency resolution with cycle detection
  • State machine for job lifecycle (e.g., PENDING, RUNNING, RETRYING, SUCCEEDED, FAILED)
  • Event-driven triggering vs. polling for dependency completion

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

Q3

How do you scale the scheduler itself and ensure high availability?

System DesignTechnical Trade-offs
Author's notes

Leader election was the answer they were fishing for and I got there, but I framed it as an afterthought rather than a core design decision.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the scheduler's role and current architecture, then discuss scaling dimensions (horizontal vs vertical) and HA strategies (replication, failover). Emphasize trade-offs like consistency vs availability and how you'd handle stateful components.

Pro tip: Mention that scaling the scheduler often requires decoupling state from compute, and that using a distributed consensus system like Raft or Paxos for leader election is key to HA. Also, highlight the importance of idempotent job execution to handle retries safely.

1. Clarify Requirements and Constraints

Ask about the scheduler's workload (e.g., number of jobs, frequency), consistency needs, and latency requirements. This shows you tailor solutions to specific needs.

2. Scale the Scheduler

Discuss horizontal scaling by partitioning jobs across multiple scheduler instances (e.g., by job type or hash), and vertical scaling for short-term gains. Mention using a distributed queue or sharding.

3. Ensure High Availability

Explain active-passive or active-active setups with leader election (e.g., using ZooKeeper, etcd) and automatic failover. For active-active, ensure idempotency and conflict resolution.

4. Address State Management

Describe how to persist scheduler state (e.g., job metadata, locks) in a replicated database or distributed store like Cassandra, ensuring durability and consistency.

5. Discuss Trade-offs and Monitoring

Acknowledge trade-offs like increased complexity vs. scalability, and the need for monitoring, alerting, and chaos testing to validate HA.

Key Points to Mention

  • Horizontal scaling via sharding/partitioning of jobs
  • Leader election using consensus algorithms (Raft, Paxos) or coordination services (ZooKeeper, etcd)
  • Active-passive vs active-active HA configurations and their trade-offs
  • Idempotent job execution to handle retries and duplicate scheduling
  • Distributed state management with replicated databases or distributed stores
  • Monitoring, alerting, and failure detection mechanisms

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

Q4

What happens when the scheduler misses a scheduled run? How do you decide between catch-up and skip?

System DesignTechnical Trade-offs
Author's notes

This one I actually had a decent answer for.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by explaining the mechanics of a missed scheduled run in a distributed scheduler, then discuss the trade-offs between catch-up and skip based on job semantics, idempotency, and business impact. Conclude with a decision framework that considers factors like job criticality, data freshness requirements, and system load.

Pro tip: Emphasize that the decision should be configurable per job, and mention that you'd implement monitoring and alerting for missed runs to detect issues early. This shows you think about operational maturity and not just the immediate fix.

1. Explain what happens when a run is missed

Describe how the scheduler detects a missed run (e.g., due to downtime, overload, or misconfiguration) and the typical outcomes: the run is either skipped, queued for catch-up, or triggers an alert.

2. Define catch-up and skip

Clarify that catch-up means executing the missed run(s) as soon as possible, while skip means ignoring the missed run and waiting for the next scheduled time.

3. Analyze trade-offs

Discuss the pros and cons of each approach: catch-up ensures data completeness but may cause resource contention or duplicate processing; skip avoids overload but may lead to stale data or missed SLAs.

4. Consider job characteristics

Evaluate factors such as idempotency, criticality, data dependencies, and business requirements to decide which approach is appropriate for a given job.

5. Propose a decision framework

Outline a policy: for idempotent, critical jobs, catch-up; for non-idempotent or non-critical jobs, skip; and make it configurable with monitoring and alerting.

Key Points to Mention

  • Idempotency: whether re-running the job produces the same result without side effects.
  • Job criticality: impact on business operations or SLAs if the job is skipped.
  • Data freshness requirements: how up-to-date the data needs to be for downstream consumers.
  • Resource contention: catch-up may cause spikes in load, affecting other jobs.
  • Monitoring and alerting: detect missed runs and track catch-up execution.
  • Configurability: allow per-job policies to balance trade-offs.

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

Q5

What metrics and observability would you build into this system?

System DesignProduct Analytics & Metrics
Author's notes

Rattled off queue depth, job duration, and success rate.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the system's critical user journeys and business goals, then propose a layered observability strategy covering metrics, logs, and traces. Focus on actionable metrics that tie directly to reliability, performance, and user experience, and explain how you'd use them for alerting and debugging.

Pro tip: Tie every metric to a specific failure mode or business outcome, and mention how you'd avoid alert fatigue by setting thresholds based on SLOs. Show you understand that observability is not just about collecting data but about enabling fast diagnosis and data-driven decisions.

1. Clarify system goals and critical paths

Ask about the system's key user journeys, business objectives, and non-functional requirements (e.g., latency, availability). This ensures your observability plan aligns with what matters most.

2. Define the three pillars of observability

Outline how you'd instrument metrics, logs, and distributed traces. Explain what each pillar provides and how they complement each other for debugging and monitoring.

3. Select key metrics across layers

Propose specific metrics for infrastructure (CPU, memory), application (request rate, error rate, latency), and business (conversion, revenue). Use frameworks like RED (Rate, Errors, Duration) and USE (Utilization, Saturation, Errors).

4. Design for actionable alerting and dashboards

Explain how you'd set SLOs and alerts based on symptoms (e.g., high latency) rather than causes (e.g., high CPU). Describe dashboards for different audiences (on-call, product, executives).

5. Plan for iteration and tooling

Mention specific tools (e.g., Prometheus, Grafana, ELK, Jaeger) and how you'd evolve the observability stack as the system scales. Emphasize continuous improvement based on incidents and feedback.

Key Points to Mention

  • The three pillars of observability: metrics, logs, and traces, and how they work together.
  • Specific metric frameworks like RED (Rate, Errors, Duration) for services and USE (Utilization, Saturation, Errors) for resources.
  • Service Level Objectives (SLOs) and Service Level Indicators (SLIs) to drive alerting and measure reliability.
  • Distributed tracing for microservices to pinpoint latency bottlenecks and failures across service boundaries.
  • Structured logging with correlation IDs to enable efficient log analysis and debugging.
  • Tooling ecosystem: Prometheus for metrics, Grafana for dashboards, ELK/EFK for logs, Jaeger/Zipkin for tracing, and OpenTelemetry for instrumentation.

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

Q6

Compare a pull-based versus push-based dispatch model for sending jobs to workers.

Technical Trade-offsSystem Design
Author's notes

Pull vs push is one of those trade-offs where both answers are correct depending on context and I tried to say exactly that.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by defining both models clearly: pull-based (workers request jobs when ready) and push-based (dispatcher assigns jobs to workers). Then compare them across key dimensions like load balancing, fault tolerance, latency, and complexity, and conclude with when to use each, ideally tying it to Oracle's scale and reliability needs.

Pro tip: Mention that many real-world systems use a hybrid approach, such as push-based dispatch with pull-based backpressure, to get the best of both worlds. This shows you understand practical trade-offs beyond textbook definitions.

1. Define the models

Briefly explain pull-based (workers poll or request work) and push-based (dispatcher sends work to workers) dispatch, including the direction of communication.

2. Compare on key dimensions

Analyze differences in load balancing, latency, throughput, fault tolerance, and complexity. For example, pull-based naturally handles slow workers, while push-based can reduce latency but requires careful load tracking.

3. Discuss trade-offs and failure modes

Highlight scenarios where each model excels or fails, such as push-based causing overload on slow workers, or pull-based adding polling overhead and potential idle time.

4. Relate to real-world systems

Give examples like Kafka (pull-based consumers) vs. traditional message queues (push-based), and mention hybrid approaches used in large-scale systems.

5. Conclude with recommendations

Summarize when to choose each model based on requirements like scalability, latency sensitivity, and operational complexity, and note that the choice often depends on the specific use case.

Key Points to Mention

  • Load balancing: pull-based allows workers to self-regulate, while push-based requires the dispatcher to track worker capacity.
  • Latency: push-based can deliver jobs immediately, whereas pull-based may introduce delay due to polling intervals.
  • Fault tolerance: pull-based is resilient to worker failures (jobs remain in queue), while push-based needs acknowledgment and retry mechanisms.
  • Complexity: push-based requires the dispatcher to manage worker state and backpressure, while pull-based is simpler but may waste resources with idle polling.
  • Scalability: pull-based scales well with many workers, but push-based can become a bottleneck if the dispatcher is centralized.
  • Hybrid approaches: combining push for low latency and pull for backpressure, as seen in systems like Kubernetes and Kafka.

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