← Optiver Interview Insights

Optiver·Software Engineer·Technical Phone Screen·Intermediate

Intermediate
Jun 2026

Summary

Optiver software engineer interview with a classic OS internals question. Nothing flashy, but it made me realize how rusty I was on scheduler internals under pressure.

Questions Asked (1)

Q1

A 2-core system runs 5 identical processes continuously. Four of them share CPU time equally, but the fifth gets none. Which part of the OS would you investigate to understand why, and what could be causing this?

Root Cause AnalysisSystem DesignTechnical Trade-offs
Author's notes

This one tripped me up more than it should have.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the scenario: 5 identical processes, 2 cores, 4 sharing CPU equally, 1 starved. Then systematically investigate OS components: scheduler, process states, priorities, affinity, and resource limits. Conclude with likely causes such as CPU affinity, priority inversion, or cgroup constraints.

Pro tip: Mention that you'd use tools like top, ps, and /proc to inspect per-process CPU usage, priority, and affinity, and check dmesg for OOM or throttling messages. This shows hands-on debugging experience.

1. Clarify the scenario

Confirm that all processes are identical, CPU-bound, and continuously runnable. Verify that the fifth process is truly starved (0% CPU) rather than just low priority.

2. Check process states and scheduling

Inspect process states (R, S, D) and scheduling policies (nice values, real-time priorities). Look for priority inversion or a process stuck in uninterruptible sleep.

3. Examine CPU affinity and cgroups

Check if the starved process is pinned to a CPU that is fully utilized, or if it's in a cgroup with CPU quota that is exhausted.

4. Investigate resource limits and kernel logs

Review ulimits, OOM killer logs, and kernel messages for throttling or errors affecting the process.

5. Synthesize and propose causes

Based on findings, identify the most likely cause: CPU affinity misconfiguration, priority inversion, cgroup CPU quota, or a bug in the scheduler.

Key Points to Mention

  • CPU affinity (taskset) and how pinning can starve a process
  • Scheduling policies: CFS, real-time, nice values, and priority inversion
  • cgroups CPU quota and throttling
  • Process states (R, S, D) and uninterruptible sleep
  • Tools: top, ps, /proc, dmesg, perf
  • Kernel scheduler behavior with multiple cores and runnable processes

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