System design interview practice
BetaA system design interview asks you to design a large service, such as a URL shortener or a chat app, in about 45 minutes with no single right answer. Interviewers score how you structure the problem, not whether you match a diagram. Each prompt below is practice: write your own answer first, then check it against what a strong answer covers.
The five steps every answer follows
- 1. Clarify. Ask what the system must do and what is out of scope before you draw anything.
- 2. Estimate. Turn users into requests per second and bytes, so your design has a size.
- 3. Draw. Name the components and how a request flows through them.
- 4. Go deep. Pick the two or three hardest parts and explain how they work.
- 5. Trade off. Say what you gave up and what would change your mind.
- Design a URL shortenerDesign a service that turns a long URL into a short one and redirects visitors who open it.
- Design a rate limiterDesign a component that limits how many requests a client may make in a time window.
- Design a news feedDesign the home feed of a social network where users see posts from people they follow.
- Design a chat systemDesign one-to-one and group chat with delivery to online and offline users.
- Design a notification systemDesign a service that sends push, SMS and email notifications on behalf of other services.
- Design a distributed key-value storeDesign a store that supports put and get of values by key across many machines.
- Design a web crawlerDesign a crawler that discovers and downloads pages across the web for a search index.
- Design search autocompleteDesign the suggestions shown under a search box as the user types.
- Design file storage and syncDesign a service like a cloud drive: upload files, sync them across a user's devices, share them.
- Design a unique ID generatorDesign a service that hands out unique ids across many servers, roughly ordered by time.