System Design Topics
Design A Unique ID Generator In Distributed Systems
Explore various approaches to designing a unique ID generator for distributed systems, focusing on scalability, uniqueness, and ordering.
Design A Key-value Store
A key-value store, also referred to as a key-value database, is a non-relational database. Each unique identifier is stored as a key with its associated value.
Design Consistent Hashing
To achieve horizontal scaling, it is important to distribute requests/data efficiently and evenly across servers. Consistent hashing is a commonly used technique to achieve this goal.
Design A Search Autocomplete System
Design a search autocomplete system, also called "design top k" or "design top k most searched queries".
Design Google Drive
Design a cloud storage service like Google Drive.
Design YouTube
Design a video streaming service like YouTube.
Design A Chat System
Explore the design of a scalable chat system supporting one-on-one and group chats, online presence, and multi-device synchronization.
Design A News Feed System
Design a scalable news feed system, focusing on feed publishing, aggregation, and key architectural components for high traffic.
Design A Notification System
Design a scalable notification system supporting mobile push, SMS, and email, addressing reliability, delivery, and user preferences.
Design A Web Crawler
A classic system design interview question focusing on web crawler design, its purposes, and a scalable architecture.
Design A URL Shortener
A classic system design interview question: designing a URL shortening service like TinyURL.
Design A Rate Limiter
Learn to design a rate limiter to control traffic in network systems, preventing abuse and ensuring service stability.
A Framework For System Design Interviews
A simple and effective framework to solve system design interview problems.
Back-of-the-envelope Estimation
Learn to estimate system capacity and performance requirements in system design interviews using back-of-the-envelope calculations.
Scale From Zero To Millions Of Users
Understanding how to scale a system from a small user base to millions, covering various architectural considerations.