On this page
The round isn't testing whether you know the answer
Who this is for
Anyone who freezes when an interviewer says "design a system that does X." Especially first-timers who assume there's a correct architecture they're supposed to have memorised, and panic when they realise there isn't one.
The whiteboard system design round looks like a knowledge test. It isn't. There's no answer key, and the interviewer usually doesn't have one either. What they're actually watching is *how you think when the problem is deliberately vague*. Real engineering work starts with an ambiguous request and a blank page. This round is a 45-minute simulation of exactly that.
So the thing being graded is your process, not your recall. Can you turn a one-line prompt into real requirements? Do you reason about scale before you draw boxes? When you hit a trade-off, do you name both sides and pick one out loud, or do you go quiet and hope? A candidate who builds a messy design while narrating clear reasoning beats one who silently draws a perfect diagram.
- Structured thinking: breaking a fuzzy problem into parts in a sensible order.
- Requirements gathering: asking what it needs to do before deciding how.
- Trade-off reasoning: there is no free lunch, and they want to hear you weigh the bill.
- Communication: thinking out loud so they can follow, and inviting them in.
- Judgement: knowing what to go deep on and what to wave past.
They are not asking "do you know how to build this?" They are asking "would I want to be in a design meeting with you?"
The framework: five steps, in order, every time
The single best thing you can do is run the *same repeatable script* on every prompt, no matter what the system is. It stops you from freezing, it makes you look senior, and it guarantees you cover the things that get graded. Memorise these five beats and run them in order.
- 1
1. Clarify requirements and scope
Spend the first 5 minutes asking questions, not drawing. What does it actually do? Who uses it and how often? What's in scope and, crucially, what's out? Separate functional needs ("users can post") from non-functional ones ("reads are fast, the system stays up"). Write them down where the interviewer can see.
- 2
2. Estimate the scale
Put rough numbers on it. How many users, how many requests per second, how much data per day, read-heavy or write-heavy? You don't need precision, you need an order of magnitude. Scale is what justifies every later decision: a system for thousands and a system for hundreds of millions look nothing alike.
- 3
3. Sketch the high-level design
Now draw, but stay shallow. Client, an entry point, the main services, the data stores, the path a request takes through them. One clean diagram of the whole thing. Resist the urge to optimise anything yet. Get the skeleton agreed before you add organs.
- 4
4. Deep-dive one or two components
Pick the part that actually matters for this problem and go deep. Often the interviewer will point you. This is where you show real depth: the data model, the algorithm, how a specific tricky piece works. One or two components done well beats a tour of all of them.
- 5
5. Discuss bottlenecks and trade-offs
Pressure-test your own design. Where does it fall over as traffic grows? What's the single point of failure? Then talk scaling: caching, replication, sharding, queues. Naming your own weak spots before they do is the strongest signal you can send.
Pro tip
Say the framework out loud at the start: "I'll clarify requirements, estimate scale, sketch a high-level design, then go deep on a piece and talk trade-offs." You've just shown structure before you've drawn a single box.
The mistake that sinks most candidates
There is one failure mode more common than all the others combined: jumping straight to a solution. The interviewer says "design a chat app" and the nervous candidate immediately starts drawing databases and load balancers. It feels productive. It's the wrong move, and experienced interviewers clock it instantly.
Why it's fatal: you're now solving a problem you haven't defined. Maybe it's a two-person chat, maybe it's group chat for a billion users. Those are completely different systems, and you just committed to one by accident. You've also skipped the part that's actually being graded, the requirements conversation, to rush to the part that isn't.
Jumps to a solution
"Okay, design a URL shortener. So I'll have a database to store the URLs, and a web server, and when someone hits the short link I'll look it up and redirect them. I'll probably use a NoSQL database for scale, and add a cache in front..."
Clarifies first
"Before I design, let me make sure I understand the scope. Are we shortening URLs and redirecting, or do we also need analytics like click counts? Roughly what scale, are we talking thousands of links a day or millions? Should short links expire, or live forever? And is this read-heavy, lots of redirects per created link, which I'd expect? Let me note these down, then size it."
- The weak version commits to NoSQL and a cache before knowing the scale that would justify either. It's guessing.
- The strong version surfaces the read-heavy insight in the first 60 seconds, which shapes every later decision.
- Asking what's out of scope (analytics, expiry) is what stops the design sprawling and shows judgement.
- It ends by pointing at the next step, sizing, so the interviewer sees the framework running.
A worked example: design a URL shortener
Let's run the framework on a classic, kept deliberately tight. A URL shortener takes a long link and returns a short one, then redirects anyone who visits the short one. Simple to state, which is exactly why it's a good lens on your process.
- 1
Clarify
Functional: create a short link, redirect to the original. Non-functional: redirects must be fast and almost always available, creation can be slower. Out of scope (agreed with the interviewer): user accounts, custom aliases, analytics. Now the problem is bounded.
- 2
Estimate
Say 100 million new links a year, and reads roughly 100x writes because each link is clicked many times. That's a read-heavy system. Storage is modest, a few hundred bytes per link. This tells us: optimise the read path hard, the write path can be ordinary.
- 3
High-level design
Client hits an API service. To create: generate a short unique key, store key plus long URL in a database, return the short link. To redirect: look up the key, return an HTTP redirect to the long URL. One service, one data store, two simple paths.
- 4
Deep-dive: the key
The interesting part is generating the short key. Options: hash the URL and take a prefix (risk of collisions), or use an incrementing counter encoded into a short base-62 string (no collisions, but the counter is now a shared resource you must scale). I'd pick the counter approach and flag the coordination cost. That naming of the cost is the point.
- 5
Bottlenecks and trade-offs
Reads dominate, so put a cache in front of the database; popular links live in memory and never touch disk. The database becomes the scaling concern, so you'd shard by key. The redirect can be a 301 (cacheable by browsers, fewer hits, but you lose per-click data) or a 302 (every click reaches you). That 301-versus-302 choice is a textbook trade-off, name both and pick.
Pro tip
Notice the example never needed exotic technology. A clear small design with one well-reasoned deep-dive and two named trade-offs is a strong pass. Cramming in every buzzword is not.
The building blocks, and when each earns its place
Most designs are assembled from a small kit of standard parts. You don't need to memorise dozens. You need to know what each one buys you and, just as important, what it costs, so you reach for it for a *reason* rather than out of habit.
| Building block | What it buys you | When to reach for it |
|---|---|---|
| Load balancer | Spreads traffic across many servers; lets one fail without downtime. | The moment you say "more than one server," which is almost always at scale. |
| Cache | Serves hot data from memory; cuts read latency and database load. | Read-heavy systems with popular, repeated items (the URL shortener, a feed). |
| Message queue | Decouples producers from consumers; absorbs spikes; enables async work. | When a task can happen later (sending notifications, processing uploads) instead of blocking the request. |
| Database (relational) | Strong consistency, joins, transactions across related data. | When relationships and correctness matter more than raw write volume. |
| Database (NoSQL / key-value) | Horizontal scale and fast lookups by key; flexible schema. | Huge volume, simple access patterns, willing to trade some consistency for scale. |
| CDN | Serves static content from servers near the user. | Global users fetching images, video, or other static assets. |
Watch out
Adding a component you can't justify hurts you. If you draw a queue and can't say what it's decoupling, the interviewer learns you pattern-match instead of reason. Every box needs a because.
Juniors and seniors get graded differently, and how to drive
Two people can get the same prompt and a totally different bar. Knowing which bar applies to you lets you spend your energy where it counts. The framework is the same for everyone; the depth and the ownership expected on top of it are not.
| Dimension | Junior / new grad | Senior |
|---|---|---|
| Main goal | Show a sound, structured approach and clean fundamentals. | Lead the design and own the trade-offs end to end. |
| Requirements | Asks a few good clarifying questions when prompted. | Drives scoping unprompted; surfaces the edge cases nobody mentioned. |
| Trade-offs | Recognises a trade-off when it's pointed out. | Names trade-offs first, picks a side, and explains the cost they accept. |
| Depth | Solid on the obvious component. | Goes deep on the genuinely hard part and anticipates failure modes. |
| Conversation | Answers the interviewer's questions well. | Steers the session; treats the interviewer as a teammate, not an examiner. |
Either way, you're expected to drive the conversation, not wait to be quizzed. Narrate every move ("now I'll size it, because that decides the database"). Check in at each step ("does that scope sound right before I draw?"). Treat hints as collaboration, not correction; an interviewer who's nudging you wants you to pass. The worst thing you can do is go silent and design in your head, because then there's nothing for them to grade.
Key takeaways
- The round grades your process, not a memorised answer; think out loud.
- Run the same five steps every time: clarify, estimate, high-level, deep-dive, trade-offs.
- The number one mistake is solving before you've scoped; spend the first minutes on requirements.
- Every component needs a because; reach for cache, queue, or shard only when a requirement demands it.
- Name trade-offs out loud and pick a side; that's the strongest senior signal there is.
- Drive the conversation and treat the interviewer as a teammate, not an examiner.
Reading is step one. Now do it for real.
When you're ready, the platform has live mock interviews and portfolio-grade capstone projects you can actually talk about.
Keep reading
This is general, educational career guidance, not legal, financial, immigration, or professional advice. Examples are illustrative and simplified. Norms vary widely by country, company, role, and over time, so always verify what applies to your own situation. Nothing here guarantees an interview, an offer, or any particular outcome.