Interview questions
System design interview questions, grouped by concept
Updated Oct 6, 2026
Most system design prompts are a small set of concepts wearing different product names. Learn to spot which concept a prompt is really about and you can design systems you've never seen before.
Why a list of 50 prompts doesn't help much
"Design Twitter" and "design a notification service" sound unrelated. Both turn on the same question: when one event has to reach many people, do you do the work when it's written or when it's read? Once you see that, the second prompt stops being new. Memorized answers fall apart the moment the interviewer changes a requirement. A concept lets you reason from the requirement you were just given.
The answer structure that holds up for 45 minutes
The order matters more than the exact timings. Freezing halfway through usually means you started drawing before you knew what you were building.
- Requirements, about five minutes. Ask what the system must do, for whom, and what can be left out. Agree the two or three features you'll design and say out loud what you're dropping.
- Scale, about five minutes. Rough numbers for users, requests per second, data size and read-to-write ratio. Round hard. The point is to find out which part of the system is under pressure, not to get the arithmetic right.
- API and data model, about five minutes. The handful of calls clients make, and the main entities with their keys.
- High-level design, about ten minutes. The request path end to end, with the simplest design that meets the requirements.
- Deep dive, about fifteen minutes. The one or two hard parts the scale estimate pointed at. This is where most of the signal is.
- Failure and trade-offs, the last five minutes. What breaks, what you'd monitor, and what you'd change with more time or a different requirement.
The interviewer will steer. Go where they steer, and come back to the structure when they let go.
The six concepts behind most system design questions
1. Read-heavy scale and caching
Prompts that test it
- Design a URL shortener.
- Design a product catalog for a large online store.
- Design search autocomplete.
- Add a caching layer to a slow web application.
What they listen for
Where you cache, how stale a result is allowed to be, and how you invalidate. A cache is easy to add and hard to keep correct, and interviewers know which half candidates skip.
Where answers fail
Adding Redis as a reflex, with no word on invalidation or on what happens to the database when the cache goes down and every request falls through at once.
2. Fan-out and write amplification
Prompts that test it
- Design a news feed or timeline.
- Design a notification system for push, email and SMS.
- Design a follower-based activity stream.
What they listen for
Whether you see the trade-off between doing work at write time (fast reads, expensive writes) and at read time (cheap writes, slow reads), and what you do about accounts with enormous audiences.
Where answers fail
Picking one approach for every user. The account with tens of millions of followers is the whole point of the question, and a design that ignores it isn't finished.
3. Contention and consistency
Prompts that test it
- Design a ticket booking system.
- Design inventory for flash sales.
- Design a payments ledger.
- Design a distributed rate limiter.
What they listen for
What happens when many requests want the same scarce thing at the same moment. They want to hear where the source of truth lives, how you stop two people getting the last seat, and what you do when a request is retried.
Where answers fail
Saying "use a transaction" or "use a lock" without saying what's locked, for how long, and what happens to the lock if the process holding it dies.
4. Real-time connections and ordering
Prompts that test it
- Design a chat system.
- Design presence (who's online).
- Design a collaborative document editor.
What they listen for
How clients stay connected, how a message finds the server holding the recipient's connection, how order is preserved within a conversation, and what an offline user sees when they come back.
Where answers fail
Polling for new messages, or a design that works only while both users are online.
5. Async work and delivery guarantees
Prompts that test it
- Design a distributed task queue.
- Design webhook delivery.
- Design a video processing pipeline.
What they listen for
At-least-once versus at-most-once delivery, retries with backoff, what happens when a worker dies mid-task, and how the consumer makes a repeated message harmless.
Where answers fail
Promising "exactly once" without explaining how. The usual honest answer is at-least-once delivery plus an idempotent consumer, and interviewers like hearing it said plainly.
6. Partitioning and hot keys
Prompts that test it
- Design a counter for likes or views at large scale.
- Design a key-value store.
- Shard the database for any of the prompts above.
What they listen for
How you choose a partition key, what happens when one key gets far more traffic than the rest, and how you add capacity without moving everything.
Where answers fail
"Shard by user ID" as the whole answer. It's often right, and the follow-up is always about the one user, event or product that breaks it.
Walkthrough: design a concert ticket booking system
This prompt looks like a simple CRUD app and isn't. It is mostly concept 3, contention, with some of concept 1 for browsing.
Requirements
Ask first. Specific seats or just a section? Is payment in scope? Say we agree: users browse events, pick specific seats, hold them while they pay, and either complete the purchase or lose the hold. Payment is an external provider. Resale and refunds are out, and you say so.
Scale
Most days, traffic is light and read-heavy. On sale day for a big show, far more buyers than seats arrive within minutes. The exact numbers matter less than that shape. It tells you the hard part isn't storage. It's thousands of people grabbing the same few rows in the same second.
API and data model
Three calls carry the design: get the seat map, hold a set of seats, confirm a booking with a payment reference. The core table is seats, keyed by event and seat ID, with a status (available, held, sold), the holder and a hold expiry.
High-level design
Seat maps are read far more than they change, so browsing goes through a cache; a few seconds of staleness is fine because the real check happens at hold time. Holds and bookings go to a single relational database, the source of truth for seat status. The payment provider confirms by callback.
Deep dive: two people, one seat
This is where the interview is won or lost. To hold a seat, the service runs a conditional update: set the status to held, with this user and an expiry, only where the status is currently available. For example, UPDATE seats SET status = 'held', holder = ?, expires_at = ? WHERE event_id = ? AND seat_id = ? AND status = 'available'. If the update touches zero rows, someone else got there first, and the user is told immediately. For several seats at once, do it in one transaction and roll back if any seat fails, so nobody ends up holding half a row.
Holds expire. A background job, or a check at read time, returns expired holds to available. The expiry should be generous enough to finish payment and short enough that abandoned carts don't lock up the show.
For the sale-day spike, put a waiting room in front of the booking path: admit users in batches at a rate the database can handle and show everyone else their place in the queue. That protects the database and it's fairer than letting the fastest retry loop win.
Confirmation has to be safe to retry. The confirm call carries an idempotency key, and the service checks the hold is still owned by this user and not expired before marking seats sold. If payment succeeds after the hold expired, you either honor it when the seat is still free or refund automatically. Saying which, and why, is a trade-off the interviewer will want to hear.
Failure and trade-offs
Name what you'd watch, such as hold success rate and payments that arrive after expiry, then the trade-off you made on purpose. One database for seat status limits write throughput, but it makes double-selling much easier to rule out. If the interviewer pushes on scale, partition by event: seats in different shows never contend.
What a strong wrap-up sounds like
"The core decision is that seat status has one source of truth and every hold is a conditional write against it, so two people can't hold the same seat. The waiting room exists to keep that database within its limits on sale day. If I had more time, I'd look at what happens when payment confirms after a hold expires, because that's the case most likely to produce an angry customer."
Senior vs staff: what changes
The prompts are often the same at both levels. What changes is what the interviewer is listening for. Levels and titles vary between companies, so treat this as a direction rather than a rubric.
Public career ladders show the shape of the difference. In Dropbox's engineering career framework, the level below staff (IC4) reads "I own and deliver semi-annual/annual goals for my team," and staff (IC5) reads "I deliver multi-year, multi-team product or platform goals." In a design round, that difference in scope is what you're demonstrating.
At senior level, the bar is a sound design you drive yourself: scoped without being led, trade-offs made for stated reasons, depth on the hard component when asked. The walkthrough above, done cleanly and on time, is a senior answer.
At staff level, that design is the starting point. Question the framing: does every event need a seat-level map, or only some venues? Talk about how the system rolls out alongside what exists today, which teams it touches, what it costs to run, and what you'd deliberately not build yet. Bring up operations before you're asked, and say which parts you'd want another team's view on.
The common mistake at staff level is giving a very good senior answer and stopping there. The common mistake at senior level is trying to sound staff by talking about org structure instead of finishing the design.
Engineering manager loops often include a design round too, judged with more weight on the trade-offs and the people around the system than on the details. The engineering manager interview guide covers how that round differs.
How to practice
Read less and talk more. Pick a prompt, set a 45-minute timer, and design it out loud with a whiteboard or a blank document, following the structure above. Then go back and ask which concept it tested and whether you spent your deep-dive time on it. Doing that with one prompt per concept covers more ground than reading fifty solutions.
Loops differ in what they emphasize, so before a specific interview, check the guide for that loop, for example the Google software engineer guide or the Anthropic infrastructure engineer guide.
Practice on questions built from the job you're actually interviewing for. Paste the job description and Orava builds practice questions from it, then reads back which reasoning moves your spoken answer made.
Start free analysisWhen you get a prompt you've never seen
You will, eventually. Ask the requirements questions anyway, then ask yourself which of the six concepts the scale points at. If the answer is "more than one," pick the one that would hurt most to get wrong and say that's where you'll spend your deep dive. Naming the concept out loud tells the interviewer you know where the difficulty is, and that's most of what they're trying to find out.
Sources
- Dropbox Engineering Career Framework, IC4 Software Engineer: dropbox.github.io/dbx-career-framework/ic4_software_engineer.html
- Dropbox Engineering Career Framework, IC5 Staff Software Engineer: dropbox.github.io/dbx-career-framework/ic5_staff_software_engineer.html