Problem library
Eight systems, each with the numbers that matter.
A write-up that explains the choices, a diagram that names its own trade-offs, and a model you can push until something goes red. Every diagram opens in the playground as it is.
Track 1
Foundations
The three every interview assumes you know. Small systems with one big idea each: a read path that dwarfs its write path, a counter that has to be atomic, a ring that has to agree.
- easy
URL Shortener
Turn a long URL into a short code and redirect on lookup. The classic warm-up: tiny write path, enormous read path, and a key-generation problem hiding underneath.
read-heavykey generationcachingKV store7 parts · 2 workloadsRead → - medium
Rate Limiter
Decide, in under a millisecond and across a whole fleet, whether this request is allowed through. The algorithm choice and the counter-sharing problem are the two real questions.
algorithmsdistributed counterslatency budget6 parts · 1 workloadRead → - hard
Distributed Key-Value Store
Build the storage layer the other problems assume exists. Consistent hashing for placement, quorums for consistency, and an explicit answer to what happens during a partition.
consistent hashingreplicationquorumCAP4 parts · 2 workloadsRead →
Track 2
Products people use
Systems with a person on the other end. Connections that are held rather than served, fan-out that turns one write into thousands, and third parties that were never yours to scale.
- medium
Chat
Messages between people who are online now, and delivery for the ones who are not. The interesting part is that a connection is a resource you hold, not a request you serve.
WebSocketsfan-outqueuespresence9 parts · 2 workloadsRead → - medium
News Feed
Show each user the recent posts of the people they follow. The whole design is one question: do the work when a post is written, or when a feed is read?
fan-out on writeprecomputed timelinescachingcelebrities10 parts · 2 workloadsRead → - medium
Notification System
Take events from every service and turn them into push, email and SMS — through providers you do not control, without sending anything twice.
queuesthird partiesretriesidempotency10 parts · 1 workloadRead →
Track 3
Scale machinery
Pipelines rather than request paths. A frontier that must be polite, a fetch that is mostly waiting, and a byte stream so large the API is a footnote.
- hard
Web Crawler
Fetch billions of pages without hammering any one site, fetching the same page twice, or losing your place. The hard part is the queue, not the fetch.
politenessfrontierdeduplicationBloom filters8 parts · 1 workloadRead → - hard
Video Streaming
Upload once, transcode into a ladder of qualities, and serve millions of viewers from the edge. Bytes are the problem; the API is an afterthought.
CDNtranscodingobject storageadaptive bitrate10 parts · 2 workloadsRead →
Your own system is a problem too.
The same engine that judges these designs judges yours. Draw it, declare the traffic, and find out what breaks first.