System Design January 30, 2026 11 min read

Concurrency Questions That Trip Up 90% of Candidates

Nina Simone

Nina Simone

Senior Engineer

Concurrency is the topic that makes even experienced engineers sweat during interviews. It's abstract, the bugs are non-deterministic, and the wrong answer can reveal fundamental gaps in systems knowledge. Here's the complete guide to mastering the concurrency questions that trip up 90% of candidates.

Close-up of a high-performance computing motherboard with parallel processors

Concurrency vs. Parallelism: The Foundation

The first question interviewers ask to test your understanding is deceptively simple: "What's the difference between concurrency and parallelism?" Most candidates conflate them. Here's the precise distinction:

ConceptDefinitionAnalogy
ConcurrencyMultiple tasks making progress in overlapping time periodsOne chef working on 3 dishes, switching between them
ParallelismMultiple tasks executing simultaneously on multiple coresThree chefs each making one dish simultaneously
"Concurrency is about dealing with lots of things at once. Parallelism is about doing lots of things at once. They're related but different concepts."
- Rob Pike, Co-creator of Go, Distinguished Engineer at Google

Threads vs. Processes

This is a favorite interview question at companies like Amazon, Microsoft, and Stripe. Understanding the trade-offs is critical:

FeatureThreadsProcesses
MemoryShared memory spaceIsolated memory space
Creation costLightweight (~1MB stack)Heavyweight (full address space)
CommunicationDirect (shared vars)IPC needed (pipes, sockets)
Crash isolationOne crash kills allIsolated failures
SynchronizationRequired (mutexes, etc.)Not needed (isolated)
Complex circuit board illustrating parallel processing pathways

Race Conditions: The Silent Killer

A race condition occurs when the correctness of a program depends on the relative timing of events. They're the hardest bugs to reproduce and the most common concurrency interview topic.

⚠️ Classic Race Condition: Check-Then-Act

// Thread A and Thread B both execute this:
if (balance > amount) {
balance -= amount; // RACE: both threads read same balance
}
// Fix: wrap in synchronized block or use atomic operations

Deadlock: The Four Conditions

Deadlock occurs when two or more threads are waiting for each other to release resources, and none can proceed. In interviews, you must know the four Coffman conditions-all four must be present for deadlock to occur:

  • 1. Mutual Exclusion: Resources can only be held by one thread at a time
  • 2. Hold and Wait: A thread holding resources can request additional ones
  • 3. No Preemption: Resources can't be forcibly taken from a thread
  • 4. Circular Wait: A circular chain of threads, each waiting for a resource held by the next

To prevent deadlock, you only need to break one of these conditions. The most practical approach is preventing circular wait by always acquiring locks in a consistent global order.

Server room with organized rack-mounted servers at a data center

Mutex vs. Semaphore vs. Monitor

PrimitivePurposeAnalogyUse Case
MutexMutual exclusion (1 thread)Bathroom key (1 user)Protecting shared state
SemaphoreLimit concurrent access (N)Parking lot (N spots)Connection pools, rate limiting
MonitorMutex + condition variablesWaiting room with a buzzerProducer-consumer patterns

Modern Async Patterns

Beyond traditional threading, modern systems rely on async/await patterns and event loops. Understanding these is increasingly critical for interviews at companies building high-throughput systems.

Callbacks

The original async pattern. Simple but leads to "callback hell" with deep nesting. Common in Node.js legacy code.

Promises/Futures

Chainable, composable async operations. Better error handling. The backbone of modern JavaScript and Java CompletableFuture.

Async/Await

Syntactic sugar over promises. Reads like synchronous code. Available in Python, JS, Rust, C#, and Kotlin.

"If a candidate can explain the difference between optimistic and pessimistic locking, and tell me when to use each one, they've demonstrated more systems maturity than 80% of applicants."
- James Hamilton, VP & Distinguished Engineer at Amazon Web Services
Close-up of technology circuits representing concurrent processing systems

Top 5 Concurrency Interview Questions

Q1
Design a thread-safe singleton

Discuss double-checked locking, the volatile keyword, and why enum singletons are preferred in Java.

Q2
Implement a bounded blocking queue

Producer-consumer pattern with wait/notify or condition variables. Discuss spurious wakeups.

Q3
Dining Philosophers Problem

Classic deadlock scenario. Discuss resource ordering, Chandy/Misra solution, and real-world parallels.

Q4
Read-write lock implementation

Allow multiple readers or a single writer. Discuss starvation and fairness policies.

Q5
Design a rate limiter (Token Bucket)

Thread-safe token bucket with configurable refill rate. Discuss atomic operations vs locks.

Digital visualization of interconnected global networks and data flows

Master Concurrency Under Pressure

Devana's system design mock interviews include dedicated concurrency rounds where the AI evaluates your understanding of threading models, synchronization primitives, and distributed consistency.