Classic Problems
The prompts that keep getting asked, each worked through to a defensible answer.
10 topics
Design a URL Shortener
The warm-up problem — ID generation, the read-heavy path, and why the interesting parts are analytics and custom aliases rather than the redirect.
core20 minDesign a Rate Limiter
A whole design round in one small component — algorithm choice, where the counter lives, and what distributed accuracy actually costs.
core20 minDesign a News Feed
The fan-out problem — write-time versus read-time assembly, why the answer is hybrid, and how ranking changes the design.
core25 minDesign a Chat System
Persistent connections at scale — routing a message to whichever server holds the recipient, ordering, delivery receipts, and offline sync.
core25 minDesign a Notification Service
One service, many channels — fan-out to push, email and SMS with deduplication, preferences, rate limits and third-party failure baked in.
core25 minDesign a File Storage Service
Dropbox-shaped — chunked uploads, deduplication, metadata versus blobs, and syncing changes to multiple devices without losing data.
core25 minDesign Typeahead Search
Suggestions in under 100ms on every keystroke — prefix indexes, aggressive caching, and building the ranked term set offline.
core25 minDesign a Payment Ledger
Money, where "eventually consistent" isn't an option — double-entry records, idempotent charges, and reconciling against a provider you don't control.
core25 minDesign a Metrics Pipeline
Ingesting a firehose of events and answering aggregate queries fast — pre-aggregation, time-series storage, and cardinality as the thing that kills you.
core25 minDesign a Nearby Places Service
Geospatial indexing — turning two-dimensional proximity into a one-dimensional key so "what's within 5km" becomes a range scan.
deep20 min