System design interview questions ask you to architect a product under vague requirements, then defend trade-offs. Exponent frames a typical session as 45–60 minutes. Indeed and prep platforms like DesignGurus, ByteByteGo, and Hyring repeatedly surface the same families of prompts: TinyURL, Instagram feed, chat, crawler, rate limiter, notifications, and related variants. What searchers usually need is not another giant list. They need a repeatable answer framework, core building blocks, and worked answers they can adapt under pressure. This guide gives you that kit.
This page was reviewed on October 1, 2026.
TL;DR
- Use one framework every time: clarify → estimate → API → high-level design → deep dive → trade-offs.
- Non-functionals like latency, availability, and consistency drive architecture choices.
- Master building blocks: load balancers, caches, databases, queues, CDNs, and sharding.
- Practice high-frequency prompts: URL shortener, news feed, chat, rate limiter, crawler, notifications, recommendations, search, file storage, and video streaming.
- Talk trade-offs out loud. Interviewers score reasoning more than a perfect diagram.
What a system design interview is
You receive an open-ended prompt like “Design a URL shortener” or “Design a notification system.” You define requirements, sketch components, discuss data flow, scaling, and failure modes. Coding is usually secondary. APIs, schemas, and bottlenecks matter more.
Pair this round with coding and behavioral prep from interview questions and answers and behavioral interview questions.
The answer framework (use this every time)
Adapted from common prep structures, including Exponent’s five-step arc:
| Phase | Minutes (approx.) | What to do |
|---|---|---|
| 1. Clarify | 5–8 | Functional + non-functional requirements; out of scope |
| 2. Estimate | 3–5 | Users, QPS, storage, bandwidth, read/write ratio |
| 3. API | 2–4 | Sketch key endpoints, events, or contracts |
| 4. High-level | 8–12 | Boxes and arrows: clients, APIs, services, data stores |
| 5. Deep dive | 15–20 | Hottest paths: schema, consistency, caching, sharding |
| 6. Trade-offs | 5–8 | Bottlenecks, failure modes, what you’d do with more time |
Clarifying questions cheat sheet
Who are the users? Read vs write ratio?
Mobile / web / both? Global traffic?
Consistency needs (strong vs eventual)?
Latency targets? Availability target?
Must we support search, analytics, admin tools?
What is explicitly out of scope for this interview?
State assumptions aloud when the interviewer stays vague.
Core non-functional requirements
| Concern | Plain meaning | Levers |
|---|---|---|
| Scalability | Grow with load | Horizontal scale, partitioning |
| Availability | Stay up when parts fail | Replication, failover, graceful degradation |
| Latency | Time to respond | Caching, CDNs, efficient queries |
| Throughput | Requests or events per second | Async processing, batching |
| Consistency | How fresh or agreed data is | Quorums, transactions, eventual sync |
| Durability | Data not lost | Replication, backups, write-ahead logs |
You rarely optimize all at once. Name the priority for this product.
Essential building blocks
Load balancer. Distributes traffic across app instances. Health checks remove bad nodes.
Cache (Redis/Memcached). Speeds hot reads. Decide TTL, invalidation, and stampede protection.
Database. SQL for relational integrity and flexible queries. NoSQL when access patterns are fixed and scale is extreme. Many designs use both.
Object storage. Blobs like images and videos live outside the primary DB.
CDN. Edge caches for static and some dynamic content. Cuts latency globally.
Message queue / pub-sub. Decouples producers and consumers. Essential for feeds, notifications, fan-out, and retries.
Search index. Useful when DB LIKE queries will not scale.
Rate limiter. Protects APIs from abuse using token bucket or sliding window patterns.
For production architecture patterns, skim Google Cloud Architecture Center, AWS Well-Architected, and Cloudflare Learning Center.
Capacity estimation (back-of-envelope)
Interviewers care that you try:
DAU × actions_per_user × bytes_per_action ≈ daily write volume
peak QPS ≈ average QPS × peak multiplier (often 2–5×)
storage ≈ daily bytes × retention_days × replication_factor
Round aggressively. “About 10K QPS at peak” is better than fake precision.
Worked answer template you can reuse
Use this skeleton for almost every prompt:
1) Clarify
- Core user actions
- Non-functional priorities
- Out of scope
2) Estimate
- DAU / MAU
- Peak QPS
- Read/write ratio
- Storage growth
3) API / contracts
- 2–4 core endpoints or events
4) High-level design
- Entry point
- Core services
- Primary data stores
- Cache / queue / CDN boundaries
5) Deep dive
- Data model
- Scaling strategy
- Consistency model
- Failure handling
6) Trade-offs
- Why this design first
- What breaks at 10× scale
- What you would change next
10 common walkthroughs
Below are 10 concise walkthroughs using the same skeleton: clarify → estimate → API → trade-offs. If you practice these with rough diagrams, you will cover a large share of real interview prompts from Exponent, DesignGurus, ByteByteGo, Hyring, and common company loops.
1) URL shortener (TinyURL)
Clarify. Create short links, redirect to long URLs, optional custom aliases, expiry, basic analytics.
Estimate. 100M new URLs/month. Reads dominate writes, maybe 100:1. Metadata per record is small.
API.
POST /api/v1/urls { long_url, custom_alias?, ttl? } -> { short_code }
GET /{short_code} -> 302 Location: long_url
High-level.
Client -> LB -> URL Service -> DB
|
Cache
|
Event Queue -> Analytics
Trade-offs. Base62 over sequential IDs is simple and compact. Cache hot redirects heavily. Analytics should be async.
2) News feed (Instagram-style)
Clarify. Follow graph, reverse chronological feed first, media attachments, celebrities with huge fanout.
Estimate. Reads far exceed writes. Peak feed reads can be many times write volume.
API.
POST /posts
GET /feed?cursor=...
POST /follow/{user_id}
High-level.
Client -> API Gateway
|-> Post Service -> DB
|-> Graph Service -> DB
|-> Feed Service -> Cache
Post events -> Queue -> Fanout Workers
Media -> Object Storage -> CDN
Trade-offs. Fan-out on write is fast for readers but expensive for celebrity posts. Hybrid push/pull is common.
3) Chat / messaging
Clarify. 1:1 and small groups, delivery receipts, offline storage, push notifications for offline users.
Estimate. Write-heavy compared with many social products. Need low latency and durable history.
API / protocol.
WS /connect
SEND_MESSAGE { conversation_id, body, client_msg_id }
ACK_MESSAGE { message_id, status }
GET /conversations/{id}/messages?cursor=...
High-level.
Clients <-> WebSocket Gateway -> Message Service -> Message Store
|-> Presence Service
|-> Queue -> Push Notification Service
Trade-offs. Usually at-least-once delivery plus idempotency. Ordering is easier per conversation than globally.
4) API rate limiter
Clarify. Per API key, distributed, approximate is acceptable, low added latency.
Estimate. Every incoming request hits the limiter, so it must scale with gateway traffic.
API.
checkLimit(api_key, route) -> allow/deny, retry_after
High-level.
Client -> API Gateway -> Rate Limiter -> App
|
Redis
Trade-offs. Sliding window is intuitive but more expensive. Token bucket is simpler and common in practice.
5) Web crawler
Clarify. Crawl public web pages, respect robots.txt, deduplicate URLs, support recrawl.
Estimate. Massive URL volume, network-bound fetches, large storage footprint.
API / contracts.
enqueue(url)
fetch(url) -> html
extract(html) -> links
High-level.
Seed URLs -> Frontier Queue -> Crawl Workers -> Document Store
|-> Parser -> New URLs -> Dedup Store
|-> robots/politeness scheduler
Trade-offs. Need host-based politeness to avoid abuse. URL dedup can use hashes or Bloom filters with false positives.
6) Notification system
Clarify. In-app, email, push, SMS. User preferences matter. Retry failures. Avoid duplicate sends.
Estimate. Burst traffic from product events. Delivery providers can throttle.
API / events.
UserEvent { user_id, type, payload }
SendNotification { channel, template_id, user_id }
High-level.
Product Event -> Queue -> Notification Service
|-> Preference Service
|-> Template Service
|-> Channel Workers -> Providers
|-> DLQ
Trade-offs. Strong consistency is less important than reliable eventual delivery. Idempotency keys prevent duplicate sends.
7) Recommendation system
Clarify. Start with “people may also like” or content recommendations, not full ads ranking.
Estimate. Read-heavy online serving plus batch/offline computation.
API.
GET /recommendations?user_id=...&context=home
High-level.
User Events -> Data Pipeline -> Feature Store / Offline Jobs
Client -> Rec Service -> Candidate Gen -> Ranker -> Cache
Trade-offs. Start simple with popularity + collaborative signals. Better to explain fallback logic than overclaim ML complexity.
8) Search autocomplete
Clarify. Prefix suggestions, low latency, typo tolerance optional, language scope limited.
Estimate. Very high read QPS, tiny payloads, freshness can be eventual.
API.
GET /autocomplete?q=iph
High-level.
Client -> API -> Autocomplete Service -> In-memory Trie / Search Index
\-> Cache
Trade-offs. Precomputed tries are fast but need rebuild strategies. Search index is more flexible but may add latency.
9) Dropbox / file storage
Clarify. Upload, download, folders, sharing links, versioning optional, large-file chunking.
Estimate. Heavy bandwidth, large object storage, metadata much smaller than blobs.
API.
POST /files/initiate-upload
PUT /files/{upload_id}/chunk
POST /files/{upload_id}/complete
GET /files/{file_id}/download
High-level.
Client -> API -> Metadata Service -> Metadata DB
|-> Upload Service -> Object Storage -> CDN
Trade-offs. Store blobs in object storage, not DB. Chunked upload improves retries and resumability.
10) Video streaming platform
Clarify. Upload video, transcode multiple resolutions, stream globally, basic view counts.
Estimate. Huge storage and outbound bandwidth. Uploads are low QPS but expensive to process.
API.
POST /videos
GET /videos/{id}/manifest
GET /videos/{id}/segments/{n}
High-level.
Uploader -> API -> Object Storage -> Transcode Queue -> Workers
Viewer -> CDN -> Streaming Service -> Metadata DB
Trade-offs. Precompute renditions for reliable playback. CDN is central to cost and latency control.
Two classic questions in a bit more depth
Classic question 1: Design a URL shortener
Clarify. Create short links, redirect to long URLs, custom aliases, expiry, and maybe analytics.
Estimate. 100M new URLs/month is roughly 40 writes/sec average. Reads dominate.
APIs.
POST /api/v1/urls { long_url, custom_alias?, ttl? } -> { short_code }
GET /{short_code} -> 302 Location: long_url
Deep dive: ID generation.
| Approach | Pros | Cons |
|---|---|---|
| Hash long URL | Simple | Collisions; awkward length control |
| Base62 encode unique ID | Compact, sortable | Needs ID generator |
| Random string + uniqueness check | Easy | Collision retries |
Trade-offs. Cache redirects, expire dead links, and push analytics asynchronously.
Classic question 2: Design a news feed
Clarify. Follow graph, basic reverse-chronological feed first, then ranking if time allows.
High-level. Post service, graph service, feed service, media store, CDN, cache.
Fan-out strategies.
| Strategy | How | When |
|---|---|---|
| Fan-out on write | Push post IDs to followers’ feed caches | Normal users |
| Fan-out on read | Pull from followees at read time | Celebrities |
| Hybrid | Push for most; pull for mega-followers | Real systems |
Trade-offs. Freshness vs compute cost. Celebrity hot keys and cache churn are common pain points.
SQL vs NoSQL, sync vs async
| Need | Lean toward |
|---|---|
| Multi-row transactions, joins | SQL |
| Massive simple key lookups | KV / wide-column |
| Spiky fan-out work | Async queues |
| User waiting on response | Sync path + careful timeouts |
| Global low latency reads | CDN + regional replicas |
How to practice
- Pick 10 prompts and timebox 45 minutes each.
- Use the same skeleton every time.
- Draw on a whiteboard or blank doc and narrate constantly.
- After each session, write three trade-offs you missed.
- Study failure modes: cache stampede, hot keys, split brain, retry storms, backlog growth.
Career foundation if you are still leveling into these loops: how to become a software engineer.
Common mistakes
- Jumping to Kafka and Kubernetes before requirements
- Never estimating scale
- Ignoring failure and partial outages
- Silent diagramming for ten minutes
- Saying “we’ll shard” without naming the shard key
- Designing for perfect consistency when the product does not need it
Whiteboard checklist
Before you say “done”:
- [ ] Functional requirements listed
- [ ] Non-functionals prioritized
- [ ] Rough QPS and storage stated
- [ ] API signatures sketched
- [ ] Primary data model named
- [ ] Cache and async boundaries explained
- [ ] One failure scenario walked through
- [ ] One explicit trade-off articulated
If time remains, discuss monitoring with metrics, logs, traces, and rollback strategy.
Consistency models in one minute
| Model | User-visible meaning | Typical use |
|---|---|---|
| Strong | Reads see latest committed write | Banking, hard inventory constraints |
| Eventual | Reads may lag; converges | Social counts, timelines |
| Read-your-writes | A user sees their own updates | Profile edits, dashboards |
Say which model your design needs. Claiming strong consistency everywhere is usually a red flag.
Leveling hints
Junior loops may stop at a correct high-level design and one decent deep dive. Mid-level candidates should own capacity math and failure modes. Senior and staff candidates should drive trade-offs, multi-region thoughts, migration plans, and operational concerns. Match your depth to the level on the req.

Run it on Parlel
Map system design practice to roles that actually ask for it.
target_roles: SWE / platform / backend postings with system design rounds
prep: 2 timed designs per week from this question set
digest: weekly matching mid/senior eng roles
Digest shape: { role, company, level_signal, matched_skills }. Find targets on /jobs and /explore.
Related reading: work from home jobs no experience, work from home jobs india, thank you email after interview.
Frequently asked questions
What is a system design interview?
A system design interview is usually a 45–60 minute conversation where you architect a system from an open-ended prompt and explain components, data flow, scaling, and trade-offs.
How do you answer system design interview questions well?
Use a repeatable structure: clarify requirements, estimate scale, define APIs, propose a high-level architecture, deep dive on one or two hot paths, then discuss trade-offs and failure modes.
What are the most common system design interview questions?
URL shortener, news feed, chat, rate limiter, crawler, notification system, recommendation system, file storage, and video streaming are among the most common.
Do I need exact capacity numbers?
No. Interviewers usually want order-of-magnitude reasoning, not perfect arithmetic. Clear assumptions matter more than precision.
Do system design interviews require coding?
Usually not a full implementation. Expect APIs, schemas, data flow, bottlenecks, and trade-off discussion. Some companies add light coding or SQL.
How should I practice for system design interviews?
Practice 8–10 recurring prompts, timebox each session, narrate out loud, and review missed trade-offs after every round.