Skip to content

Resources to Prepare for a System Design Interview

Substantial preparation is necessary to increase our odds of getting the job we apply for. Depending on a candidate’s seniority and proficiency, different candidates need different times for interview preparation. For an average candidate, three to four months might be required to prepare for a System Design interview.

Technical blogs/System Design interview articles

Many companies regularly publish the technical details of their significant work in the form of technical blogs.

  1. Why are companies eager to share the technical details of their work?

The reason for such sharing is to excite the technical community about the fact that the company is solving hard problems. They also hope to motivate more people to join their company.

Such public blogs can also help to advertise company products to B2B customers.

Additionally, such material helps the company train potential future workers on their own time.

Lastly, the main reason is to let the learner know that the company has deep expertise in the specific domain or subject matter.

Note: There’s a fine line between what can be held back by a company due to a competitive edge and what can be made public.

We can study these blogs to gain insight into the company’s challenges or problems and the changes it made in the design to cope with them.

Note: Staying informed about these innovations is important for professionals, and even more crucial for an applicant.

Some important technical blogs are Engineering at Meta, Meta Research, AWS Architecture Blog, Amazon Science Blog, Netflix TechBlog, Google Research, Engineering at Quora, Uber Engineering Blog, Databricks Blog, Pinterest Engineering, BlackRock Engineering, Lyft Engineering, and Salesforce Engineering.

Ask why a system works

By asking themselves the right questions, candidates can think through dense and ambiguous situations.

  • Learn how popular applications work at a high level—for example, Instagram, Twitter, and so on.
  • Start to understand and ask why some component was used instead of another—for example, Firebase versus SQL.
  • Build serious side projects. Start with a simple product and then improve and refine it.
  • Build a system from scratch, and get familiar with all the processes and details of its construction.

We can clone a popular application without tutorials.

The right direction

System design deals with components at a higher level, and we need to avoid going into the trenches.

We should focus less on mechanics and more on trade-offs.

For example, discussing whether to use the Room library instead of raw SQLite isn’t helpful because the Room library is a mere wrapper around SQLite. A better discussion might be about using traditional databases like MySQL or NoSQL stores like MongoDB. The second discussion will help us pinpoint trade-offs between the two.

We should start with high-level stuff because the low-level details will automatically come up.

Mock interviews

Mock interviews are a great way to prepare for System Design interviews. They involve pairing up with a friend and allowing them to ask questions. If it’s not possible to use a friend, another strategy is to record ourselves and play the role of both interviewer and interviewee. With this approach, we can critique ourselves or ask a knowledgeable friend for feedback.

Note: It’s a good idea to get experience by sitting in real interviews in tech companies. Once you’ve been through an interview or two, you’ll be better able to evaluate what went right and what didn’t.