How to approach a system design interview ?
Let’s walk into the system design garden..
Q1. Clarify the requirements : What are you building ?
- The first step is to fully understand what's being asked.
- Don’t rush into designing before you know the scope. Start by asking clarifying questions to understand the problem fully.
- Consider — Who will use the system ?
- What will they use it for?
- How many users are expected ?
- What will the system do ?
- What kind of data will it handle , and how much?
- How many requests per second should it support?
- What’s the expected ratio of reads to writes?
- By asking these questions, you define the problem clearly and set yourself up to design the right solution.
Q2. Design the big picture : High-Level Architecture
- Once you understand the problem , the next step is to outline the high-level architecture.
- This means sketching out the key components and how they interact with each other.
Here’s what you need to do:
- Identify major components : Break down the system into key parts . In social media app, for e.g.. You’d have user profiles, posts, comments, and notification.
- Show connections: Explain how these components communicate — whether through APIs, databases, load balancers or caching layers.
- Justify your choices : Don't just present a design : Explain why.
Focus on key components
- After outlining the big picture , the next step is to focus on the most critical parts.
- For e.g.. If you’re building a URL shortening service, you’ll need to think about :
- How will you generate and store shortened URLs?
- What hashing technique will you use ( e.g. MD5, Base62)?
- How will you handle hash collisions?
- What kind of database will you use (SQL or NoSQL)?
- How will you store and retrieve the data efficiently ?
Plan for Scaling : Handle Growth and Traffic
- Once the core components are in place , think about how the system will scale.
- What happens when the user base grows from 1,000 to 1 million?
- Consider scalability solutions like:
Load balancer
Horizontal scaling
Caching
Database sharing
When discussing scalability, always consider trade-offs.
For eg. Caching can improve performance but might introduce complexity in keeping data up-to-date.
Quick calculation : Be ready to make quick estimates for data storage , traffic and basic numbers like latency and data sizes.
#systemdesign