Master System Design Interviews: 10 Proven Questions and Expert Answers
Read this article in clean Markdown format for LLMs and AI context.System design interviews feel like a maze. One minute you’re drawing boxes, the next you’re stuck on a tiny detail that could sink the whole solution. Getting a handle on the most common questions can turn that maze into a clear path—especially now that more companies are using design rounds to filter candidates. Below are ten questions I see over and over, plus the kind of answer that impresses interviewers and shows you can think big and act practical. If you also want to ace the non‑technical portion, mastering behavioral interview techniques is essential.
1. Design a URL Shortener (e.g., bit.ly)
What they want to see
- Ability to break down the problem
- Understanding of read‑heavy workloads
- Knowledge of data consistency and scaling
Expert answer in a nutshell
Start with the core entities: User, URL, ShortCode. Explain that writes (creating a short link) are far less frequent than reads (redirects). Use a hash function or base‑62 encoding to generate a fixed‑length code. Store the mapping in a key‑value store like DynamoDB or Redis for fast lookups. Discuss sharding the key space by the short code prefix to spread load. Mention a background job that cleans up expired links and a rate limiter to stop abuse. End with a quick note on analytics: a separate table for click events that can be processed in a data pipeline.
2. Build a Real‑Time Chat Service
What they want to see
- Handling of low latency and high concurrency
- Message ordering and delivery guarantees
Expert answer in a nutshell
Sketch a client‑server model where each client opens a WebSocket connection to a gateway. The gateway forwards messages to a message broker (Kafka or RabbitMQ) that guarantees ordering per chat room. Consumers read from the broker and push messages to the appropriate connection pool. Store chat history in a document store (MongoDB) with TTL for old messages. Highlight how you would scale horizontally by adding more gateway instances behind a load balancer and partitioning topics by chat room ID.
3. Design a Ride‑Sharing Matching System (e.g., Uber)
What they want to see
- Real‑time location handling
- Matching algorithm basics
- Fault tolerance
Expert answer in a nutshell
Explain that the system has three main parts: Driver Service, Rider Service, and Matching Service. Drivers and riders stream their GPS coordinates to a geospatial index (Redis Geo or Elasticsearch). When a rider requests a ride, the matching service queries the index for nearby drivers, ranks them by ETA, and sends a push notification. Use a state machine to track ride status (requested, accepted, en‑route, completed). For reliability, keep a replicated log of ride events so that a crash can replay the state. Mention eventual consistency for driver locations to keep latency low.
4. Create a Scalable Photo Sharing Platform (e.g., Instagram)
What they want to see
- Storage strategy for large binary files
- Content delivery network (CDN) usage
- Feed generation approach
Expert answer in a nutshell
Store raw images in an object store like S3, and generate multiple sizes with a media processing service (Lambda or a worker queue). Serve the images through a CDN to reduce latency. For the feed, discuss two options: pull model (client asks for recent posts) vs push model (fan‑out service writes each new post to followers’ timelines). Explain why a hybrid works: push for active users, pull for casual ones. Use a NoSQL store (Cassandra) for timeline data because it handles high write throughput.
5. Design a Distributed Rate Limiter
What they want to see
- Understanding of token bucket or leaky bucket algorithms
- Distributed coordination without a single point of failure
Expert answer in a nutshell
Pick the token bucket algorithm: each user has a bucket that refills at a fixed rate. Store bucket state in a fast, distributed cache like Redis. To avoid race conditions, use Lua scripts that atomically check and decrement tokens. For global limits (e.g., API-wide), shard the counters by a hash of the key and aggregate results. Mention fallback to local in‑memory cache if the Redis node is temporarily unavailable, with a safe‑fail mode that denies traffic.
6. Build a Search Autocomplete Service
What they want to see
- Low latency query handling
- Trie or prefix tree usage
- Ranking of suggestions
Expert answer in a nutshell
Use a prefix tree (trie) stored in memory for the most popular queries. Keep the trie on each search node to avoid network hops. For less common prefixes, fall back to a search index (Elasticsearch) that can do prefix matching. Rank suggestions using a combination of frequency and recency scores. Update the trie periodically with a batch job that pulls the latest stats from the main index. Explain how you would scale by adding more nodes behind a load balancer and using consistent hashing to route users to the same node for cache hits.
7. Design a Video Streaming Service (e.g., Netflix)
What they want to see
- Content storage and delivery pipeline
- Adaptive bitrate streaming
- Caching strategy
Expert answer in a nutshell
Store raw video files in a cold storage bucket. A transcoding pipeline creates multiple bitrate versions and stores them in a CDN edge cache. The client requests a manifest (M3U8) that lists the available streams; the player picks the best bitrate based on current bandwidth. Use regional edge caches to keep latency low, and a metadata service (SQL) to manage titles, user preferences, and licensing. Discuss DRM as a separate microservice that issues decryption keys.
8. Create a Notification System (email, SMS, push)
What they want to see
- Decoupling of producers and consumers
- Reliability and ordering where needed
Expert answer in a nutshell
Set up a message queue (Kafka) where each event type (email, SMS, push) has its own topic. A set of worker services subscribe to the topics and call the appropriate third‑party API. Use idempotency keys to avoid duplicate sends if a worker retries. For high‑priority alerts, add a dead‑letter queue to capture failures for later inspection. Store delivery status in a relational DB for reporting.
9. Design a File Sync Service (e.g., Dropbox)
What they want to see
- Conflict resolution
- Efficient delta transfer
- Consistency model
Expert answer in a nutshell
Each client maintains a local index of file hashes. When a change occurs, the client sends a metadata diff to a sync server. The server uses Merkle trees to detect which blocks differ and asks the client to upload only those blocks. For conflicts, apply a last‑writer‑wins rule combined with a version vector so the client can show a merge UI. Store files in an object store and keep a metadata DB for folder hierarchy. Replicate data across regions for durability.
10. Build a Monitoring & Alerting Platform
What they want to see
- Data ingestion pipeline
- Real‑time aggregation
- Alert routing
Expert answer in a nutshell
Collect metrics via agents that push to a time‑series database (Prometheus or InfluxDB). Use a stream processing engine (Flink) to compute aggregates and detect anomalies. Define alert rules in a DSL and send alerts to a routing service that can forward to Slack, PagerDuty, or email. Store raw metrics for long‑term analysis in cheap object storage. Emphasize high availability by running multiple collector nodes behind a load balancer.
These ten questions cover the core ideas interviewers test: scalability, reliability, and clear thinking under pressure. When you walk through each one, remember to:
- Clarify the scope first – ask about read/write ratios, latency goals, and data size.
- Sketch a high‑level diagram – boxes and arrows help both you and the interviewer stay on track.
- Dive into one or two key components – show depth without getting lost in minutiae.
- End with trade‑offs – no design is perfect, and acknowledging limits shows maturity.
Keep a notebook of these patterns, practice them out loud, and you’ll turn the system design interview from a scary obstacle into a showcase of your engineering instincts. For deeper guidance on answering behavioral questions that often accompany system design rounds, explore the dedicated resources. Good luck, and see you on the other side of the whiteboard!
- →
- →
- →
- →
- →