Skip to main content

System design

System design interview questions

The classic “design X” prompts, each worked end to end the way a senior interviewer expects: clarify the requirements, size the system, sketch the data model and API, draw the high-level design, then deep-dive the decisions that separate a hire from a no-hire. Start with an entry-level prompt and work up.

All system design problems

How to approach any system design interview

Every prompt above follows the same seven-step structure, and learning the structure is more valuable than memorising any single design. The biggest mistake candidates make is jumping straight to drawing boxes. Instead, open by clarifying scope: what features are in and out, what scale we are designing for, and which non-functional properties matter most. A payment system is dominated by correctness; a news feed by read latency; a web crawler by politeness and deduplication. Naming that priority early tells the interviewer you design for requirements rather than reciting a generic template.

Next, do back-of-the-envelope math. You do not need precision, you need to identify the hard part. If reads outnumber writes a hundred to one, the conversation should centre on caching and replication; if writes spike a hundredfold during an event, it should centre on queues and buffering. Then propose a minimal data model and a small API, sketch the happy-path architecture, and only then start optimising. Optimising before you have a working high-level design is a common way to run out of time with nothing coherent on the board.

Where the interview is actually won

The deep dives are where strong candidates pull ahead. Once the high-level design is on the board, the interviewer probes the decisions that carry real weight: fan-out on write versus read for a feed, token bucket versus leaky bucket for a rate limiter, consistent hashing and quorum tuning for a key-value store, idempotency and a double-entry ledger for payments. These are not trivia. Each one has a tradeoff, and the signal the interviewer is reading is whether you can name the tradeoff, pick a side, and justify it against the requirements you set at the start. Saying “it depends” and then explaining what it depends on is a strong answer; saying it and stopping is not.

Finish by talking about how the design breaks. Identify the bottleneck (a single counter, a celebrity account, a hot cache key, a provider outage) and the specific mitigation. The same handful of building blocks reappear across every problem, which is why the system design cheat sheet is worth internalising: load balancing, caching, sharding, replication, consistent hashing, the CAP theorem, message queues, and the consistency models. Learn those once and most “design X” questions become a recombination of pieces you already understand.

Related prep