System Design Interview Guide: How to Design Large-Scale Systems
The complete system design interview guide for software engineers — learn how to design Twitter, YouTube, Uber, and other systems from scratch in under an hour.
Why System Design Interviews Are Different
Unlike coding interviews that have objectively correct answers, system design interviews are deliberately open-ended. There's no "right" design for Twitter — only trade-offs with different implications. The interviewer isn't checking for the perfect answer. They're evaluating your ability to think through complex problems systematically, communicate technical trade-offs clearly, and make pragmatic decisions with incomplete information.
This makes system design one of the most learnable interviews with dedicated practice, but also one of the easiest to fail without a structured approach.
The Universal System Design Framework (45-Minute Version)
Minutes 1–5: Requirements Clarification
Never start designing without understanding what you're building. Ask these questions:
- Scale: How many users? Daily Active Users (DAU)? Peak traffic?
- Functional requirements: What are the core features? (Not everything — the most important ones)
- Non-functional requirements: Availability? Consistency? Latency requirements?
- Constraints: Read-heavy or write-heavy? Strong or eventual consistency needed?
Example: For "Design Twitter," establish: 300M DAU, 100M tweets/day, read:write ratio ~100:1, must support timeline generation in <200ms, 99.99% availability.
Minutes 5–8: Capacity Estimation
Back-of-envelope calculations demonstrate your understanding of scale. Calculate:
- Requests per second (QPS): DAU × requests/day ÷ 86,400
- Storage: Daily data generated × retention period
- Bandwidth: Requests/second × average request size
Minutes 8–18: High-Level Design
Draw the basic architecture covering: client → load balancer → application servers → database layer → cache. Keep it simple first — you'll add complexity in the deep dive. Label your components clearly.
Minutes 18–35: Deep Dive on Key Components
The interviewer will guide you to specific components they want to explore. For Twitter: the timeline generation service is the most interesting. For YouTube: the video upload and streaming pipeline. Be ready to go deep on:
- Database choice and schema design
- Caching strategy (what to cache, cache invalidation, TTL)
- The most technically interesting component of your design
Minutes 35–40: Scale and Reliability
Address how your design handles failures and scale:
- Database replication and sharding strategy
- CDN for static content delivery
- Message queue for async processing
- Service degradation strategy (what happens when components fail)
Minutes 40–45: Trade-offs and Alternatives
Proactively discuss the trade-offs of your design choices. Showing awareness of what your design doesn't handle well demonstrates genuine architectural maturity.
Core Concepts to Master
Database Selection
- SQL (PostgreSQL, MySQL): ACID compliance, complex queries, strong consistency. Use for financial transactions, user accounts, relational data.
- NoSQL Document (MongoDB, DynamoDB): Flexible schema, horizontal scaling, good for catalogs, user profiles, content.
- NoSQL Key-Value (Redis, DynamoDB): Extremely fast reads/writes, great for caching, sessions, leaderboards.
- Wide-Column (Cassandra, HBase): Massive write throughput, time-series data, activity feeds.
- Search (Elasticsearch): Full-text search, faceted filtering, log analysis.
Caching Strategies
- Cache-aside: Application reads from cache first; on miss, reads from DB and populates cache
- Write-through: Data written to cache and DB simultaneously — strong consistency, higher write latency
- Write-back: Data written to cache first, asynchronously persisted to DB — high performance, risk of data loss
- Eviction policies: LRU (most common), LFU, FIFO
Common System Design Questions and Key Insights
- Design URL Shortener: Focus on hash function collision handling, database read optimization, analytics pipeline
- Design Instagram/Twitter: Fan-out on write vs. read for timeline generation; sharding by user_id; CDN for images
- Design Uber/Lyft: Real-time location updates (WebSockets), geospatial indexing (Geohash, QuadTree), matching algorithm
- Design YouTube: Chunked video upload, transcoding pipeline, adaptive bitrate streaming, CDN distribution
- Design a Rate Limiter: Token bucket vs. sliding window algorithms, distributed rate limiting with Redis
- Design a Notification System: Fan-out via message queue, multiple channel delivery (push, email, SMS), deduplication
Land the job that requires these skills — browse senior software engineering positions on JobPickers that include system design in the interview process.
JobPickers Admin
Career Advice Editor, JobPickers
The JobPickers editorial team comprises experienced recruiters, hiring managers, and career coaches. Our mission is to provide actionable, data-driven career advice that helps job seekers at every stage land their next role faster.
