System design
Rate limiting, caching, queues, consistency, database scaling, and reliability — the recurring building blocks behind any distributed system.
Questions on the building blocks that show up in almost every distributed-systems design discussion, independent of any one company’s stack — how to protect a service from overload, when and how to cache, how async processing changes failure semantics, what consistency actually costs, how databases scale past one machine, and how to make operations safe to retry.
Subtopics
- Rate limiting and backpressureSeniorToken bucket, leaky bucket, sliding window — the algorithms, their trade-offs, where to enforce limits, and how backpressure propagates through a system.7 concepts
- Caching strategiesSeniorCache-aside, write-through, write-behind, invalidation, thundering herd, and cache stampede protection.6 concepts
- Queues and asynchronous processingSeniorWhy decoupling with a queue changes failure semantics, at-least-once vs exactly-once delivery, dead-letter queues, and ordering guarantees.7 concepts
- Consistency models and the CAP theoremSeniorWhat CAP actually constrains, strong vs eventual vs causal consistency, and why most real systems live somewhere in between.7 concepts
- Scaling databasesSeniorVertical vs horizontal scaling, read replicas and replication lag, sharding strategies, and the failure modes each one introduces.7 concepts
- Idempotency and reliability patternsSeniorIdempotency keys, exactly-once-effect design, outbox pattern, sagas, and how retries interact with side effects.7 concepts