System design interviews are a critical component of senior engineering interviews at top tech companies. Unlike coding interviews that test your algorithmic skills, system design interviews evaluate your ability to design large-scale distributed systems.
How to Approach System Design Questions
Before diving into specific questions, let us establish a framework for approaching any system design problem:
Step 1: Clarify Requirements
Always start by asking questions to understand:
- Functional requirements: What should the system do?
- Non-functional requirements: Scale, latency, availability needs
- Constraints: Budget, timeline, existing infrastructure
Step 2: Estimate Scale
Calculate rough estimates for:
- Daily/monthly active users
- Read vs write ratio
- Storage requirements
- Bandwidth needs
Step 3: Design High-Level Architecture
Sketch the main components:
- Client applications
- Load balancers
- Application servers
- Databases
- Caches
- Message queues
Step 4: Deep Dive into Components
Pick 2-3 critical components to discuss in detail:
- Data models
- API design
- Database choices
- Caching strategies
Step 5: Address Bottlenecks
Identify potential issues and solutions:
- Single points of failure
- Performance bottlenecks
- Scalability limits
Top 20 System Design Questions
1. Design a URL Shortener (like bit.ly)
Key considerations:
- Hash generation strategy
- Handling collisions
- Read-heavy workload
- Analytics and tracking
2. Design Twitter
Key considerations:
- Timeline generation (fan-out on write vs read)
- Real-time updates
- Trending topics
- Search functionality
3. Design Instagram
Key considerations:
- Image storage and CDN
- News feed generation
- Stories feature
- Direct messaging
4. Design WhatsApp
Key considerations:
- Real-time messaging
- End-to-end encryption
- Message delivery guarantees
- Group chat scaling
5. Design YouTube
Key considerations:
- Video upload and processing
- Adaptive bitrate streaming
- Recommendation system
- Comment system
6. Design Netflix
Key considerations:
- Content delivery network
- Video transcoding pipeline
- Personalization engine
- Offline viewing
7. Design Uber/Lyft
Key considerations:
- Real-time location tracking
- Matching algorithm
- Surge pricing
- ETA calculation
8. Design a Rate Limiter
Key considerations:
- Algorithm choice (token bucket, sliding window)
- Distributed rate limiting
- Different limits for different users
- Graceful degradation
9. Design a Web Crawler
Key considerations:
- URL frontier management
- Politeness policies
- Duplicate detection
- Distributed crawling
10. Design Google Search
Key considerations:
- Web crawling
- Inverted index
- PageRank algorithm
- Query processing
11. Design a Chat System (Slack/Discord)
Key considerations:
- Real-time messaging with WebSockets
- Channel/room management
- File sharing
- Search functionality
12. Design Dropbox/Google Drive
Key considerations:
- File synchronization
- Conflict resolution
- Chunking and deduplication
- Version history
13. Design a Notification System
Key considerations:
- Multiple channels (push, email, SMS)
- Priority and batching
- User preferences
- Delivery guarantees
14. Design a News Feed System
Key considerations:
- Content ranking
- Real-time updates
- Personalization
- Content moderation
15. Design an E-commerce Platform
Key considerations:
- Product catalog
- Shopping cart
- Inventory management
- Payment processing
16. Design a Parking Lot System
Key considerations:
- Spot allocation
- Entry/exit management
- Payment system
- Real-time availability
17. Design a Key-Value Store
Key considerations:
- Consistency model
- Partitioning strategy
- Replication
- Conflict resolution
18. Design a Distributed Cache
Key considerations:
- Cache eviction policies
- Consistency with database
- Hot spot handling
- Cache warming
19. Design a Ticketing System (like Ticketmaster)
Key considerations:
- Inventory management
- Handling high concurrency
- Seat selection
- Queue management
20. Design a Metrics/Monitoring System
Key considerations:
- Data collection
- Time-series database
- Aggregation strategies
- Alerting system
Essential Concepts to Master
Databases
- SQL vs NoSQL trade-offs
- Database sharding
- Replication strategies
- ACID vs BASE
Caching
- Cache invalidation strategies
- Distributed caching
- Cache-aside vs write-through
- CDN caching
Message Queues
- Pub/sub patterns
- Message ordering
- Exactly-once delivery
- Dead letter queues
Load Balancing
- Layer 4 vs Layer 7
- Health checks
- Session affinity
- Geographic load balancing
Preparation Tips
- Practice regularly: Dedicate 30-60 minutes daily to system design practice
- Study real systems: Read engineering blogs from top companies
- Understand trade-offs: Every design decision has pros and cons
- Draw diagrams: Visual communication is essential
- Practice explaining: System design is as much about communication as technical knowledge
Good luck with your system design interviews!