System Design Interview Practice
Real interview questions with strong answers, tradeoffs and code
System Design Interview Practice is a Bertopia flashcard pack of 121 cards: real interview questions with strong answers, tradeoffs and code. It covers interview approach and estimation; caching; sharding and replication; queues and idempotency; consistency and contention; failure modes and multi tenancy; storage choice, real time and streams; rate limiter, URL shortener, cache, KV store; chat, feed, notifications; ticketing, payments, ride sharing; top K, metrics, crawler, typeahead; job scheduler, file storage, video, docs, LLM serving.
Worked answers by topic
- System design interview approach and estimation (7 questions)
- Sharding and replication system design questions (8 questions)
- Queues and idempotency system design questions (9 questions)
- Caching and consistency system design questions (12 questions)
- Failure modes and multi tenancy system design questions (11 questions)
- Storage, real time and streaming system design questions (8 questions)
- Design a rate limiter, URL shortener or KV store (15 questions)
- Design chat, a news feed or notifications (11 questions)
- Design ticketing, payments or ride sharing (12 questions)
- Design top K, metrics, a web crawler or typeahead (13 questions)
- Design a job scheduler, file storage or video service (15 questions)
Sources
75 sources
- System Design Interview: An Insider's Guide, Volume 1, Alex Xu
- System Design Interview: An Insider's Guide, Volume 2, Alex Xu and Sahn Lam
- The System Design Primer, Donne Martin
- Hello Interview: System Design in a Hurry, Hello Interview
- Hello Interview: Design Ticketmaster, Hello Interview
- Hello Interview: Meta E5 interview guide, Hello Interview
- Hello Interview: Google L5 interview guide, Hello Interview
- Hello Interview: Amazon L6 interview guide, Hello Interview
- Hello Interview: OpenAI L5 interview guide, Hello Interview
- PracHub: Uber system design questions, PracHub
- Anthropic system design interview, Aced
- OpenAI system design interview, Exponent
- Latency Numbers Every Programmer Should Know, Jeff Dean and Peter Norvig, compiled by Jonas Boner
- A Proof for the Queuing Formula: L = lambda W, John D. C. Little
- Designing Data-Intensive Applications, Martin Kleppmann
- Cache-Aside pattern, Microsoft
- Scaling Memcache at Facebook, Nishtala et al., USENIX NSDI 2013
- Consistent Hashing and Random Trees, Karger et al.
- Dynamo: Amazon's Highly Available Key-value Store, DeCandia et al., Amazon
- Sharding pattern, Microsoft
- Amazon DynamoDB: Using write sharding to distribute workloads evenly, Amazon Web Services
- Amazon DynamoDB: Using Global Secondary Indexes, Amazon Web Services
- Apache Kafka Documentation, Apache Software Foundation
- Amazon SQS visibility timeout, Amazon Web Services
- Amazon SQS dead-letter queues, Amazon Web Services
- Stripe API: Idempotent requests, Stripe
- Designing robust and predictable APIs with idempotency, Stripe
- Pattern: Transactional outbox, Chris Richardson
- Saga distributed transactions pattern, Microsoft
- Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services, Seth Gilbert and Nancy Lynch
- Jepsen: Consistency Models, Jepsen
- PostgreSQL: Transaction Isolation, PostgreSQL Global Development Group
- PostgreSQL: SELECT, The Locking Clause, PostgreSQL Global Development Group
- PostgreSQL: Multicolumn Indexes, PostgreSQL Global Development Group
- How to do distributed locking, Martin Kleppmann
- Exponential Backoff And Jitter, Amazon Web Services
- Timeouts, retries, and backoff with jitter, Amazon Builders' Library
- Fairness in multi-tenant systems, Amazon Builders' Library
- CircuitBreaker, Martin Fowler
- Site Reliability Engineering: Handling Overload, Google
- Site Reliability Engineering: Addressing Cascading Failures, Google
- gRPC: Deadlines, gRPC Authors
- RFC 9110: HTTP Semantics, IETF
- MDN: Using server-sent events, Mozilla
- MDN: HTTP caching, Mozilla
- How Discord Stores Trillions of Messages, Discord
- Apache Flink: Timely Stream Processing, Apache Software Foundation
- Scaling your API with rate limiters, Stripe
- Redis: INCR, pattern: rate limiter, Redis
- Announcing Snowflake, Twitter Engineering
- The Log-Structured Merge-Tree (LSM-Tree), O'Neil et al.
- Bigtable: A Distributed Storage System for Structured Data, Google
- Space/Time Trade-offs in Hash Coding with Allowable Errors, Burton H. Bloom
- Python documentation: collections.OrderedDict, Python Software Foundation
- The Infrastructure Behind Twitter: Scale, Twitter Engineering
- TAO: Facebook's Distributed Data Store for the Social Graph, Bronson et al., USENIX ATC 2013
- Apple Developer: Sending notification requests to APNs, Apple
- OWASP: Server-Side Request Forgery Prevention Cheat Sheet, OWASP
- Cloudflare Waiting Room, Cloudflare
- Accounting for Developers, Part I, Modern Treasury
- Stripe: Supported currencies, zero-decimal and minor units, Stripe
- H3: Uber's Hexagonal Hierarchical Spatial Index, Uber Engineering
- Redis: Geospatial indexes, Redis
- Redis: Sorted sets, Redis
- An Improved Data Stream Summary: The Count-Min Sketch and its Applications, Cormode and Muthukrishnan
- Prometheus: Metric and label naming, Prometheus Authors
- Gorilla: A Fast, Scalable, In-Memory Time Series Database, Pelkonen et al., VLDB 2015
- Mercator: A Scalable, Extensible Web Crawler, Heydon and Najork
- RFC 9309: Robots Exclusion Protocol, IETF
- Rewriting the heart of our sync engine, Dropbox
- Amazon S3: Uploading and copying objects using multipart upload, Amazon Web Services
- RFC 8216: HTTP Live Streaming, IETF
- Netflix Open Connect, Netflix
- Conflict-free Replicated Data Types, Shapiro et al.
- Orca: A Distributed Serving System for Transformer-Based Generative Models, Yu et al., USENIX OSDI 2022