System Design Interview — Examples & Questions
Master system design interviews with 24 real-world case studies (TinyURL, Instagram, YouTube, Uber, and more) with architecture diagrams. Plus 19 foundational concepts — load balancing, caching, sharding, and more.
How to Approach Any System Design Question
- 1 Clarify requirements — functional and non-functional (scale, latency, consistency)
- 2 Estimate scale — daily active users, requests per second, storage needs
- 3 Design high-level architecture — components and data flow
- 4 Deep-dive into bottleneck components — DB schema, caching, sharding strategy
- 5 Discuss trade-offs — SQL vs NoSQL, push vs pull, consistency vs availability
- 6 Identify and address failure modes — what happens when X goes down?
System Design Case Studies
Design TinyURL — URL Shortening Service
Design Pastebin — Text Paste Service
Design Instagram — Photo Sharing Service
Design Dropbox — Cloud File Storage
Design Facebook Messenger — Real-Time Chat
Design Twitter — Social Network and Microblogging
Design YouTube — Video Streaming Service
Design Typeahead Suggestion — Search Autocomplete
Design API Rate Limiter
Design Twitter Search — Real-Time Tweet Search
Design Web Crawler — Internet-Scale Crawling
Design Facebook Newsfeed
Design Yelp — Proximity Search Service
Design Uber — Ride-Sharing Service
Design Ticketmaster — Event Ticketing System
Scale From Zero to Millions of Users
Design a Rate Limiter
Design a Key-Value Store
Design a Unique ID Generator in Distributed Systems
Design a Notification System
Design a News Feed System
Design a Chat System
Design a Search Autocomplete System
Back-of-the-Envelope Estimation
Foundational Concepts
Master these building blocks before tackling case studies.
Related Interview Prep
Frequently Asked Questions
What is system design in a software engineering interview?
System design interviews test your ability to design large-scale distributed systems. You are given an open-ended problem (e.g., "design Twitter") and must architect a scalable, reliable solution covering components like load balancers, databases, caches, message queues, and CDNs.
How do I prepare for system design interviews?
Study the foundational concepts (load balancing, caching, sharding, replication, CAP theorem, consistent hashing) then practice designing real systems (TinyURL, Twitter, YouTube, Uber). Use a structured approach: clarify requirements, estimate scale, design the high-level architecture, dive into components, and discuss trade-offs.
What companies ask system design questions?
System design interviews are standard at FAANG companies (Google, Amazon, Meta, Apple, Netflix) and most mid-to-large tech companies. They typically start for senior software engineer roles and above, though some companies ask them for mid-level engineers too.
What is the difference between vertical and horizontal scaling?
Vertical scaling (scale up) means adding more resources to a single server — more CPU, RAM, or disk. It has a hard limit and creates a single point of failure. Horizontal scaling (scale out) means adding more servers. It is more resilient but requires distributed systems techniques like load balancing and sharding.