TL;DR, there are six steps to answer a system design interview question:
Step 1: clarify requirements (functional & non-functional)
Step 2: define system APIs
Step 3: sketch the high level system design
Step 4: discuss database & storage layer
Step 5: discuss core components
Step 6: add in high availability considerations and finalise the design.
This blog is a part of my “15 days cheat sheet for hacking technical interviews at big tech companies”. In this blog, we focus on a step by step approach to solve a system design interview question.

The purpose of the system design interview is to assess a candidate’s experience in designing large scale distributed systems. How well the candidates do in such interviews often dictates their hiring level. The performance in these interviews usually depends on 2 factors: candidates’ knowledge (gained either through studying or practical experience) and the way candidates drive conversation throughout the interview.

The below are steps I usually take to solve a system design interview question to ensure my answer in a systematic way. For better demonstration, I pick up a common interview question “design a Twitter-like social networking service” and show how each step can be applied to answer this question.

General tips:
Throughout the section, candidates are expected to take the ownership and lead the discussion. Hence, you should be active to deliver the information and clarify with the interviewer which directions they want you to go further.
As system design interview questions are open-ended and unstructured, candidates who organise their solution with a clear plan and justify the choices have better chances of success.

#algorithms #system-design-interview #coding #technical-interview #scalability

Work Through my Solution to a System Design Interview Question.
1.75 GEEK