![]() |
VOOZH | about |
A System Design Interview evaluates your ability to design scalable and reliable systems while clearly explaining your approach. It focuses on handling open-ended problems, making trade-offs, and structuring solutions effectively.
Example: Design a URL Shortener (like bit.ly).
- Take a long URL as input and generate a short, unique URL
- Store and retrieve the original URL when the short link is accessed
- Design for scalability so millions of users can create and use short links
This section outlines a structured, step-by-step approach to effectively handle system design interviews.
Apart from that, if you want to crack the interview rounds smoothly then enroll now with GeeksforGeeks Mastering System DesignCourse, mentored by experts.
System design interview questions, by nature, are unclear or abstract. Asking questions about the exact scope of the problem, and clarifying functional requirements early in the interview is essential.
Usually, requirements are divided into three parts:
1. Functional Requirements
Functional requirements are the requirements that the end user specifically demands as basic functionalities that the system should offer. All these functionalities need to be necessarily included into the system as part of the contract.
Example:
2. Non-Functional Requirements
Non-Functional Requirements are the quality constraints that the system must satisfy according to the project contract. The priority or extent to which these factors are implemented varies from one project to another. They are also called non-behavioral requirements. For example, portability, maintainability, reliability, scalability, security, etc.
Example:
3. Extended requirements
These are basically "nice to have" requirements that might be out of the scope of the system.
Example:
Estimate the scale of the system we're going to design. focus on the system’s expected scale (like user volume and request rates) and practical limits (like latency and budget). This helps guide your design choices, ensuring the solution can handle expected demand. It is important to ask questions such as:
These questions will help us scale our design later.
Now it's time to identify system components (such as Load Balancers, API Gateway, etc.) that are needed to solve our problem and draft the first design of our system and outline the flow of data between them. This gives an organized view of the system’s architecture and sets up a foundation for further detailed design.
Once we have a basic diagram, we can start discussing with the interviewer how the system will work from the client's perspective.
Now we can start with defining the database schema. Doing so would help us to understand the data flow which is the core of every system. In this step, we basically define all the entities and relationships between them.
👁 database_design_Next, we can start designing APIs for the system.
These APIs will help us define the expectations from the system explicitly. We don't have to write any code, just a simple interface defining the API requirements such as parameters, functions, classes, types, entities, etc.
Example:
createUser(name: string, email: string): User
It is advised to keep the interface as simple as possible and come back to it later when covering extended requirements.
Now it's time to go into detail about the major components of the system we designed. As always discuss with the interviewer which component may need further improvements.
Here is a good opportunity to demonstrate your experience in the areas of your expertise. Present different approaches, advantages, and disadvantages. Explain your design decisions, and back them up with examples.
Also, try not to be biased about certain technologies, statements like "I believe that NoSQL databases are just better, SQL databases are not scalable" reflect the candidate's understanding very poorly.
Now at this point you can discuss bottlenecks in the system and approaches to mitigate them. Here are some important questions to ask:
Make sure to read the engineering blog of the company you're interviewing with. This will help you get a sense of what technology stack they're using and which problems are important to them.
Below, are some question which is most frequently asked in system design for designing purpose:
Try to follow the 80-20 rule during your interview, where 80% of the time you will be speaking and explaining everything and 20% of the time your interviewer. Don't use buzzwords and don't pretend to be an expert if you don't know something.
Let’s try to make it simple and discuss some key points before you start your preparation for this round.