System design
System Design Interview Guide
Prepare for system design interviews with a repeatable framework, estimation, requirements, architecture trade-offs, and SeeItFlow design problems.
Every system design interview question below can be worked through the same sequence. Treat it as a checklist, not a script — the interviewer cares more about the reasoning at each step than the order itself.
- 1Requirements
Clarify functional scope and the non-functional constraints (consistency, availability, latency) before naming a single component.
- 2Estimation
Translate expected users/traffic into rough numbers — requests per second, storage growth, bandwidth — so later decisions have a scale to justify them.
- 3Architecture
Sketch the high-level components and data flow that satisfy the requirements at the estimated scale.
- 4Bottlenecks
Identify which component saturates first as load grows, and why.
- 5Trade-offs
Compare alternatives at each major decision point — there is rarely one correct answer, only a reasoned choice.
- 6Failure & scaling discussion
Walk through what happens when a dependency fails or traffic spikes, and how the design degrades or recovers.
Learning
Foundations
Pick a system to design. Each one moves from requirements, to architecture, to what happens under real load.
A deceptively simple system with a 100:1 read/write ratio — ID generation strategies, aggressive Redis caching, async analytics via Kafka, and viral traffic spike handling.
Decouple intent from delivery — queues, priority lanes, multi-channel routing, rate limiting, retry storms, backoff with jitter, dead-letter queues, and delivery tracking.
A naive DB search hits its limit, an indexing pipeline emerges, a prefix trie powers autocomplete, and a sharded, cache-fronted architecture serves millions of queries per second.
Chunked resumable uploads, metadata separation, multi-device sync, conflict resolution, versioning, and access control — design a file storage platform from scratch.
Persistent connections, fan-out, ordering, presence, offline delivery — design a messaging system from scratch.
From a single cron job to a globally distributed scheduler — leader election, Redis sorted sets, worker heartbeats, exponential backoff, and the 9 AM thundering herd problem.
Learning
Intermediate
Pick a system to design. Each one moves from requirements, to architecture, to what happens under real load.
Idempotency keys, timeout ambiguity, safe retry, provider failure, reconciliation — design a payment system where correctness is the first constraint.
Catalog caching, inventory reservation, checkout orchestration, the transactional outbox, and async fulfillment — design an e-commerce platform bottleneck by bottleneck.
Seat inventory, the double-booking race condition, atomic reservation, temporary holds, hold expiration, high-demand events, caching, and admission control.
Room-night inventory, the last-room double-booking race, atomic multi-night allocation, bounded holds, payment crash recovery, and PMS/channel-manager sync.
Resumable uploads, async transcoding, segmented adaptive streaming, CDN delivery — design a video platform from scratch.
From one trending list everyone sees to a personalized, real-time recommendation platform — candidate generation, ranking, feature stores, and feedback loops.
From one person editing a file to thousands shaping the same document at once — WebSockets, operational transform, presence, offline sync, and sharded document servers.
Ranking infrastructure for online games — Redis sorted sets, deterministic tie-breaking, idempotent score ingestion, live rank-change delivery, sharded exact-rank trade-offs, and season rollover.
Group expense sharing and balance tracking — split algorithms, an immutable ledger, debt simplification, idempotent writes, optimistic concurrency, transactional outboxes and payment-settlement semantics.
Learning
Advanced Distributed Systems
Pick a system to design. Each one moves from requirements, to architecture, to what happens under real load.
From a single overloaded origin server to a globally distributed edge network — caching, invalidation, shielding, anycast, and DDoS protection, evolved bottleneck by bottleneck.
Media uploads, social graph, fanout-on-write, the hot-user problem, and hybrid fanout — design a social platform from scratch.
Fanout-on-write, the celebrity write-amplification problem, hybrid fanout, ranking, timeline caching, and hot-partition handling — design a large-scale social feed from scratch.
A guided engineering story — start simple, hit real bottlenecks, evaluate options, evolve the architecture.
Control-plane vs data-plane separation, async transcoding, CDN delivery, adaptive bitrate streaming, and regional resilience — design a global streaming platform from scratch.
Price-time priority matching, deterministic sequencing, durable journaling, epoch-fenced failover, and market-data fan-out — design an electronic stock exchange bottleneck by bottleneck.
Learning
AI Systems
Pick a system to design. Each one moves from requirements, to architecture, to what happens under real load.
From a stateless chat call to a production AI assistant — streaming, RAG, vector search, memory, tool calling, agent loops, and cost control, evolved bottleneck by bottleneck.
A permission-aware enterprise knowledge assistant — connectors, durable ingestion, chunking, hybrid retrieval, authorization-before-generation, citation validation, and tenant isolation, evolved bottleneck by bottleneck.