💻Technical16 min

System Design Interview Guide

System design interviews are the most feared round in senior engineering and architect hiring. They are also the most valuable — companies pay top salary for engineers who can think at scale. This guide gives you a proven, repeatable framework for any system design question.

The 8-Step System Design Framework

Use this structure for every system design interview:

  • Step 1: Clarify requirements (functional and non-functional) — spend 5 minutes here
  • Step 2: Estimate scale (users, requests per second, storage) — back of envelope math
  • Step 3: High-level design — draw a simple box diagram of key components
  • Step 4: API design — define the key endpoints the system needs
  • Step 5: Database schema — identify entities, relationships, and storage choice
  • Step 6: Deep dive on critical components — the interviewer will guide this
  • Step 7: Discuss trade-offs — why you chose SQL over NoSQL, push vs. pull, etc.
  • Step 8: Handle failure scenarios — what happens when a component goes down?

Key Concepts Every System Design Interview Requires

Build deep knowledge in these 10 areas — they appear in every design question:

  • Load balancing: Round-robin, least connections, consistent hashing
  • Caching: Redis vs. Memcached, cache-aside, write-through, TTL strategies
  • Database: SQL vs. NoSQL trade-offs, sharding, replication, indexing
  • Message queues: Kafka, RabbitMQ — async decoupling, fan-out patterns
  • CDN: Content delivery for static assets, edge caching
  • Rate limiting: Token bucket, leaky bucket algorithms
  • Consistency models: Strong, eventual, and causal consistency
  • CAP theorem: Consistency, Availability, Partition tolerance — you can only pick 2
  • Microservices vs. monolith: When to split, service communication
  • Search: Elasticsearch for full-text search, inverted indexes

Common System Design Interview Questions

Practice these classic problems until your framework is instinctive:

  • Design a URL shortener (like bit.ly)
  • Design a ride-sharing app (like Ola/Uber)
  • Design Twitter/X — newsfeed, follower model, timeline generation
  • Design a notification system for 10 million users
  • Design a rate limiter for an API gateway
  • Design a distributed file storage system (like Google Drive)
  • Design a video streaming service (like YouTube/Netflix)
  • Design a chat application (like WhatsApp)

Capacity Estimation: How to Do Back-of-Envelope Math

Interviewers want to see that you can reason about scale:

  • 100 million DAU × 10 reads/day = 1 billion reads/day = ~11,574 reads/second
  • 1 tweet × 250 bytes × 1 billion tweets = 250 GB/day
  • Storage for 5 years = 250 GB × 365 × 5 = ~450 TB
  • Common numbers to memorise: 1 day = 86,400 seconds; 1 million = 10^6; 1 billion = 10^9
  • Always round up for safety and explain your assumptions clearly

Common Interview Questions & Answers

Q1. Design a URL shortener like bit.ly

I'd start by clarifying requirements: 100M URLs/month, custom aliases, analytics needed. Scale: 40 writes/sec, 400 reads/sec (10:1 read-heavy). Core components: API server, hash service (Base62 encoding of auto-increment ID), NoSQL store (Cassandra for key-value lookups at scale), CDN for global redirect speed. Cache top 20% of URLs in Redis (80% of traffic). For collision handling, use database unique constraint and retry. For analytics, async-write to Kafka → separate analytics service.

The interviewer wants to see structured thinking, not a perfect answer.

Q2. How would you design a notification system for 50 million users?

Notification types: push (mobile), email, SMS. Flow: Event → Message Queue (Kafka) → Notification Service → Channel-specific adapters (FCM, Twilio, SES). User preference service to check opt-outs and preferred channels. Priority queue for critical notifications. Rate limiting per user to prevent spam. For scale, partition Kafka by user ID for ordering. Retry with exponential backoff. Dead-letter queue for failed notifications.

Demonstrate async thinking with queues — synchronous notification at scale is a red flag.

Common Mistakes to Avoid

Jumping to the solution without clarifying requirements

Not thinking about scale — designing for 100 users, not 100 million

Choosing technology without explaining trade-offs

Ignoring failure scenarios and fault tolerance

Drawing components in silence — always explain what you're drawing

Expert Tips

Study 'Designing Data-Intensive Applications' by Martin Kleppmann — the best book on the subject

Read Exponent (tryexponent.com) and Tech Interview Handbook for curated examples

Draw clean diagrams — a neat whiteboard signals organised thinking

Practice speaking your design out loud — system design is a conversation, not an exam

Pre-Interview Checklist

6 items

Frequently Asked Questions

Is system design required for fresher interviews?

No — system design is typically expected from candidates with 3+ years of experience. Freshers face data structures and algorithms instead.

What resources should I use to prepare for system design?

Start with Alex Xu's 'System Design Interview' books (Vol 1 and 2). Practice on Exponent and YouTube channels like 'System Design Interview' by Gaurav Sen.

🎯

Ready to ace your next interview?

Practice with SpeakWell AI. Upload your resume → get resume-based questions → practice with AI interviewers → improve communication → track progress → get instant AI feedback.

Back to all guides