Design systems the waysenior engineers actually do
Not flashcards. Each problem is a full case study — requirements, back-of-the-envelope math, a reference architecture you can read, focused deep dives, and the trade-offs an interviewer will push on. Built to get you from “I've heard of caching” to leading the whiteboard.
What does a system design interview actually test?
A system design interview tests how you reason under ambiguity, not what you memorize — there are no right answers, only well-justified ones. Work in a fixed order: clarify functional and non-functional requirements, size the load with back-of-the-envelope estimates, define the data model and API, sketch a high-level architecture, then interrogate the bottlenecks, failure modes, and trade-offs it creates. State the numbers out loud and let them drive the design. Seniority changes the bar, not the steps — a Senior candidate justifies each decision and adapts when a constraint changes; a Staff candidate drives the room: proposes the scope, raises cost, failure, and cross-team concerns unprompted, and explains why one design beats the obvious alternative. For AI-first roles, expect a retrieval, inference-cost, and GPU-capacity angle too.
Building blocks
The primitives every design leans on. Master these and the problems below become recombinations of the same ideas.
Scaling & Load Balancing
Vertical vs horizontal scaling, stateless services, and how a load balancer spreads traffic (round-robin, least-connections, consistent hashing).
Caching
Where to cache (client, CDN, app, DB), eviction (LRU/LFU/TTL), and the cache-aside, write-through, and write-back patterns.
Databases: SQL vs NoSQL
Relational integrity vs flexible-schema scale. Indexing, replication, and picking a store that matches your access pattern.
Sharding & Partitioning
Splitting data across nodes by range, hash, or geography — plus hot-key and rebalancing pain.
CAP, Consistency & Replication
Strong vs eventual consistency, the CAP/PACELC trade-offs, and quorum reads/writes.
Message Queues & Streaming
Decoupling with queues (SQS/RabbitMQ) and logs (Kafka), plus delivery semantics and back-pressure.
CDN & Edge Delivery
Pushing static and cacheable content close to users to cut latency and origin load.
Back-of-the-Envelope Math
Turning DAU into QPS, storage, and bandwidth — the numbers every senior candidate reaches for.
Problem library
Filter by topic and level, or search by company and pattern. Ordered easiest-first — but every problem stands alone.
Design a URL Shortener
TinyURL / Bit.ly — turn long URLs into short, unique, redirectable keys at read-heavy scale.
Design a Rate Limiter
Throttle requests per user/IP/key to protect services — token bucket, sliding window, and distributed counters.
Design a Notification System
Deliver push, SMS, and email at scale with fan-out, rate limits, retries, and dedup.
Design Search Autocomplete (Typeahead)
Suggest top completions per keystroke in single-digit milliseconds using a trie.
Design a Web Crawler
Politely fetch billions of pages, avoid traps and duplicates, and keep a fresh index.
Design a News Feed
Facebook / Instagram feed — aggregate posts from people you follow, ranked, at billions-of-reads scale.
Design a Chat System (WhatsApp)
Realtime 1:1 and group messaging with delivery/read receipts, presence, and offline delivery.
Design Cloud File Storage (Google Drive / Dropbox)
Upload, sync, share, and version files across devices with dedup and conflict resolution.
Design an AI Code Assistant (Copilot)
Low-latency, context-aware code completions streamed into the editor with tight privacy.
Design a Video Platform (YouTube)
Upload, transcode, store, and stream video to billions with adaptive bitrate and a global CDN.
Design a Ride-Sharing Service (Uber)
Match riders to nearby drivers in real time with geospatial indexing and live location updates.
Design ChatGPT (LLM Serving)
Serve a conversational LLM to millions with streaming tokens, context management, and GPU efficiency.
A repeatable framework for every problem
- 01
Scope the requirements
Separate functional from non-functional. Nail down what's in and out before drawing a single box.
- 02
Do the napkin math
Turn DAU into QPS, storage, and bandwidth. The numbers justify every later decision.
- 03
Draw the architecture
Start with a simple, correct design. Add components only when a bottleneck forces it.
- 04
Defend the trade-offs
Name the alternative for each choice and say when you'd pick the other one. That's seniority.