System Design Interview Guide: How to Think Like a Senior Engineer
A complete framework for tackling system design interviews — from requirements gathering to choosing databases and designing for scale.
What Is a System Design Interview?
System design interviews assess your ability to design scalable, reliable software systems. Unlike coding interviews that have a single correct answer, system design is open-ended — the interviewer evaluates *how* you think, not just what you design.
Target roles: Senior Software Engineer, Staff Engineer, Architect, Tech Lead.
The Framework: 6 Steps
Step 1: Clarify Requirements (5 min)
Before drawing anything, ask:
- **Functional requirements**: What does the system do? (e.g., URL shortener: shorten + redirect)
- **Non-functional**: Scale? Latency? Consistency? Availability?
- **Constraints**: Read-heavy or write-heavy? Global or regional?
"Before I start, let me clarify requirements. Are we designing for global scale or a specific region?"
Step 2: Back-of-Envelope Estimation (3 min)
Estimate scale to inform your design:
- **DAU** (Daily Active Users): 10M users → ~115 requests/sec
- **Storage**: 10M tweets/day × 280 bytes = 2.8 GB/day
- **Bandwidth**: Read/write ratio determines CDN and caching needs
Step 3: Define the API (5 min)
Sketch the core API endpoints:
POST /shorten { url: string } → { shortCode: string }
GET /:code → 301 Redirect
Step 4: High-Level Design (10 min)
Draw the main components:
- **Load Balancer** → **Application Servers** → **Database**
- Add **CDN**, **Cache (Redis)**, **Message Queue** as needed
Step 5: Deep Dive (15 min)
Interviewer will ask you to go deeper on 1-2 components. Common deep dives:
- **Database**: SQL vs NoSQL? Sharding strategy? Replication?
- **Caching**: What to cache? Cache invalidation strategy?
- **Consistency**: Strong vs eventual? CAP theorem trade-offs?
Step 6: Identify Bottlenecks & Trade-offs (5 min)
Always close by identifying weaknesses in your design and proposing solutions.
Key Concepts to Master
Consistent Hashing — for distributed caching and load balancing
Database Sharding — horizontal scaling strategies
CAP Theorem — consistency vs availability vs partition tolerance
Message Queues — Kafka, RabbitMQ for async processing
CDN — static asset delivery and edge caching
Rate Limiting — token bucket, leaky bucket algorithms
Practice System Design Interviews with AI
VerbalForge's technical interview mode lets you practice system design verbally — articulate your thinking out loud and receive structured feedback.
Practice What You've Learned
Use VerbalForge AI to put these techniques into practice right now.
Start Free AI Mock Interview