The System Design Interview

Learn about the key phases in the System Design Interview and how it differs significantly from other technical interviews, such as coding interviews.

We'll cover the following

What’s unique about System Design Interviews?

System Design Interviews are some of the most creative technical interviews. There is no single right or wrong answer to a System Design problem—every problem can have many solutions.

With many different paths to the same outcome, your reasoning behind the solution (and how you present it) is key to showing your interviewers your technical skill set and ability to collaborate with a team.

What does a System Design solution involve?

The interview is a design process that involves much discussion with your interviewer. Let’s discuss what the design process looks like from a birds-eye view.

A good System Design solution will involve a structured approach. We will provide an example of a structured solution later in the course.

Problem statement

With a System Design Interview, you begin with a vague problem statement that asks you to design a web service. This statement will likely be something like the following:

  • Design a search engine

  • Design a rideshare app

  • Design a messaging service

  • Design a URL shortener

Requirements and constraints

From here, you identify the essential functions of the system you’ve been asked to design. These functions are known as requirements and are categorized into two types:

  • Functional requirements—Specific functionalities that bring the user to the service. These specific functions are directly adjacent to providing the key service.

  • Non-functional requirements—Functionalities that affect the overall operation of the system but are broader system functions that aren’t adjacent to specific functions of a service. Examples include scalability, reliability, usability, security, and performance.

Q

Which of the following is an example of a functional requirement for an eCommerce website?

A)

Adding an item to the user’s shopping cart

B)

Usability (easy to use for most users)

You also want to understand any constraints for your system. Perhaps a company’s budget is low, which means they can’t afford expensive hardware for their storage solutions.

Note: To understand the problem, you will need to ask your interviewer questions.

Designing

After determining your requirements and constraints, you’ll start designing your system. This will involve identifying the components, technologies, and APIs that will work together to help you achieve your goal. The components can include front-end servers, analytics, and more. We’ll discuss more components later in the course.

There are many ways to approach a design, and design choices come with limitations. It’s essential that you allow your interviewers to hear your thought process regarding your solution. This includes how you’ve connected the elements of your design to requirements, and how you’ve reasoned through making compromises in your design (these compromises are known as trade-offs, which we’ll discuss in the next chapter).

Identifying shortcomings

Finally, you will reflect on your design. Nobody can design a perfect system in less than 45 minutes. If you’re aware of shortcomings in your design, begin to address them and discuss other design choices you could’ve made, or explain your decision based on your understanding of the given requirements and constraints.

Ideally, you will be getting feedback and conversing with your interviewer both during and throughout the design process. Your interviewer may point out shortcomings or ask about certain choices you made to give you an opportunity to demonstrate and explain your thinking.

Second iteration

If time allows, you can also do a second iteration of your design based on your new findings and takeaways.

System Design Interview prep: timeline and considerations

Successfully preparing for the System Design Interview won’t be as simple as memorizing answers. Proper preparation requires internalizing and reflecting on the concepts you are learning. This process takes time and effort—and it cannot be rushed.

The duration of your preparation will be determined by several factors, including:

  • Your individual circumstances

  • Your learning pace

  • Your daily study routine

  • Your current proficiency level in System Design

  • Your target role

  • Your daily time allocation

If you commit two to three hours a day to your preparation, five days a week, you can expect it to take:

  • 4 to 10 weeks if you’re starting with minimal System Design experience or need more time to absorb and retain information.

  • 3 to 6 weeks if you have some experience.

Create a free account to access the full course.

Learn to code, grow your skills, and succeed in your tech interview

By signing up, you agree to Educative's Terms of Service and Privacy Policy