System design interviews are the most feared part of the software engineering interview process. Here is the complete guide to preparing for and acing them.
What is a System Design Interview?
A system design interview asks you to design a large-scale distributed system — like "Design Twitter" or "Design a URL shortener." The interviewer is evaluating your ability to think through complex technical problems, make trade-offs, and communicate your reasoning.
The RESHADED Framework
Use this framework to structure every system design answer:
R — Requirements: Clarify functional and non-functional requirements
E — Estimation: Calculate scale (users, requests per second, storage)
S — Storage: Choose the right database(s) for each use case
H — High-Level Design: Draw the main components and their interactions
A — APIs: Define the key API endpoints
D — Deep Dive: Go deep on the most interesting/challenging components
E — Edge Cases: Discuss failure modes and how to handle them
D — Decisions: Summarise your key trade-offs
Common System Design Questions
Design a URL Shortener (e.g., bit.ly)
Requirements:
- Shorten long URLs to short codes
- Redirect short URLs to original URLs
- Handle 100M URLs, 1B redirects/day
Key design decisions:
- Use a hash function (MD5, SHA-256) to generate short codes
- Store mappings in a key-value store (Redis for caching, Cassandra for persistence)
- Use CDN for redirect performance
- Handle collisions with retry logic
Design a Social Media Feed (e.g., Twitter/Instagram)
Requirements:
- Users can post content
- Users can follow other users
- Show a personalised feed of followed users' posts
Key design decisions:
- Fan-out on write vs fan-out on read (depends on follower count)
- Use a message queue (Kafka) for async feed updates
- Cache hot feeds in Redis
- Use a graph database for the social graph
Design a Ride-Sharing App (e.g., Uber)
Requirements:
- Match riders with nearby drivers
- Real-time location tracking
- Dynamic pricing
Key design decisions:
- Use geospatial indexing (QuadTree or S2 cells) for location queries
- WebSockets for real-time location updates
- Separate services for matching, pricing, and tracking
How to Practice
- LeetCode System Design — 50+ system design problems with solutions
- Grokking System Design — Structured course with worked examples
- Mock interviews — Practice with peers or use Pramp/Interviewing.io
- Read engineering blogs — Netflix, Uber, Airbnb, and Google publish detailed system design posts






