The system design interview provides the key signals that differentiate a tech lead from programmers. Here’s some tips may help you ace it.

Image for post

Image from Quora

Pre-Interview Preparation

When preparing, thinking about how to design a system that top-tier tech companies have(Google, Twitter, Amazon, Uber, etc).

Proactively picking some classic questions, like Twitter Feeds, Snapchat messaging, Dropbox file system, to exercise. Over-preparing and ensure you are familiar with these major scenarios.

“Drive the discussion from the beginning.”

Explore The Restraints

After the interviewer throwing out the question, like “Design a Load Balancer for Twitter”.

Do NOT rush to the solution.

The very first thing you need to do is to get clarity about the system’s requirements and constraints:

  • How many users we are talking about?
  • How many tweets sent per sec?
  • What are the latency requirements?
  • How are we going to store the data?
  • Clients are mobile or desktop?
  • Clients are Push or Pull model?
  • How many data centers we are talking about?

In reality, the quality of these exploring questions reflects the candidate’s experience level.

Complete Your Solution

Now that you have the clarity of the system’s requirements, continue to drive the discussion.

The next step is to write down the first version of a complete solution.

On a high level, a reasonable solution should include all the components that receive, process, and store the data. Specifically, we need to write down:

  • Al the components’ key responsibility(E2E)
  • Key data schemas
  • Key algorithms of processing data, like load balancing algorithm
  • How the system monitor and handle errors/exceptions

Then validate this solution with the interviewer, ensure the it satisfy the key business requirements. Sometimes it also involves a bit calculation to persuade the interviewer.

Optimize

After having the 1st version solution nailed, the interview will usually go into the “Deep Dive” section. The interviewer will come up with a special requirement, and ask the candidate to adjust their design to ensure its system survive in this scenario.

For instances:

  • The QPS is very high
  • Read is 10x than write
  • Prioritize latency over accuracy
  • Ensure data security

There’s no one-fits-all answer at this stage. The interviewer really needs to leverage his/her experience and resolve it.

However, there’s one thing each candidate should keep in mind.

“Think in trade-offs”.

No matter what solution you propose, always write down its pros and cons. What makes it work and what to sacrifice to meet this goal. That’s the key signal of an experienced engineer.

Ending

Unlike the coding interview, there’re hundreds of ways a system design interview could go. But no matter what scenarios you’re in, I wish tips mentioned above could help you navigate to the ideal destination.

#software-development #system-design-project #system-design-interview #interview

System Design Interview Tips
2.50 GEEK