Grokking The System Design Interview

  

Today we hosted a Clubhouse room on the topic of 'Cracking the System Design Interviews'. System design is one of the critical areas that most of the major tech companies like to probe the candidates, there is usually at least one System design interview round starting from mid-level engineering interviews, there may be more depending on the seniority of the role. System design interviews require upfront preparation and deep knowledge into core distributed system concepts, along with problem solving skills, ability to trade-off between multiple possible approaches and articulate the reasoning behind choosing one approach over the other. The system architecture powering the tech companies like Netflix, Instagram, Twitter was not built in a day, it took months. Then how do we tackle questions like 'Design a photo-sharing service like Instagram' or 'Design social-networking service like Twitter' during an interview in 20-30 minutes?

Dvdrum 2 beta 4. The Clubhouse room witnessed a few really interesting questions that triggered pretty insightful conversations. Thanks to our panelists Swetha Konnireddy, Vivek Kirubanandan, Bharath Reddy Janumpally, Sharath Honnaiah, Gaurav Savla for joining today's discussion and sharing their valuable inputs.

The

One question that got asked quite a few times during today's discussion and resonated with me is how to get started with the system design interview preparation, what are the resources to refer to. In an effort to address that question, Swetha, Vivek and I have compiled a set of resources(books, you tube channels, github repos, engineering blogs) that will help you to be well prepared for system design interviews for major tech companies. Eucontrol 3.2 installer dmg.

Grokking the System Design Interview. 103 Illustrations. $ 16.66 / month. Unlimited access to all 260+ Courses and Paths. Grokking the Systems Design Interview from Educative.io was the first course of its kind. It's less detailed than the Systems Design: an Insider's Guide one, but more expensive, and you pay per month, or every year. Systems Expert refers to itself as the #1 systems design course. However, this resource felt like an overpromise after I bought it.

Books

  • Designing Data-Intensive Applications (by Martin Kleppmann)
  • The site relaiability workbook - https://sre.google/books/
  • Understanding Distributed Systems by Microsoft principal engineer Roberto Vitillo
  • System Design interview by Alex Yu
Grokking

You Tube

Websites

Github Repositories

Grokking the system design interview torrent

One of the most common set of questions I get from people who are looking to interview with top tech companies (FAANG's) are :

'How to crack the software system design interview?'
'What is enough v/s what is not enough information to give?'
'How do I structure my system design round in the limited 45 mins that I get?'

While System design round can be difficult, we all need to understand that neither a system cannot be fully designed in 45 mins nor system design has one approved solution. There can be multiple ways to design the system based on what are the top problems you are trying to solve and What requirements are you going to be targeting while you design the system.

Grokking The System Design Interview Pdf

Here's an interesting approach that you can use to go around your system design interview:

  1. Start by collecting the requirement and set the tone of the interview by level setting with the interviewer about what are the specific features or the requirements you are trying to address in this interview. (Time < 5 mins)
  2. Navigate to some back of the envelope calculations. You may want to calculate the storage and memory requirements of the system considering scaling of the system over the period of 5 or 10 years. You may also want to calculate network bandwidth requirements parameters when required. (Time = 5-7 mins)
  3. Design API's of the system with parameters and return type. You may get into the depth of API design depending on the role you are interviewing for. (Time ~ 5 mins)
  4. Create ER diagram and select the type of Database you are going to select for solving the problem. You may select SQL, NoSQL or the combination of both depending on the type of problem. Be sure to provide your rationale behind DB selection and create ER diagram. Ask the interviewer how far they want to go. Do they want all the tables defined or they are fine with a few important ones. This is a very important step in the process. (Time = 10 mins)
  5. Once you have got a high level idea of how your system will look like, create a high level system design. Create the block diagram placing all the services, Databases, Internal/External communication protocols, Authentication/Authorization mechanism, API's etc and try to provide a high level description while you draw the diagram. This should be interactive so think loud while you are drawing. (Time = 10 mins)
  6. You interviewer will guide you to what part of the system they want to understand from you. Read that signal. Idea is to make sure you answer interviewers question and not speak about what you know. If you are not very sure about the answer, instead of digressing, stop there and affirm to the fact that you may need to look it up offline as you are not sure about that. It is ok to say you are not sure about something rather than taking the conversation somewhere else. (Time = N/A)
  7. Once you have spoken about the key parts of the system, be sure to include load balancing and caching techniques (LB algorithms, Caching algorithms, Cache evection policy etc.). This is extremely important as you cannot design a scalable distributed system without LB and Cache. (Time = 5 mins)
  8. Navigate to Database Partitioning) next. Partitioning is essential for a large scale distributed systems. Be sure to speak about Partitioning technique and why would you select that? (Time =2 mins)
  9. By now you have covered major pieces in your system design. You only have around 5-7 mins left in your interview. To be a bar raiser, it is important to talk about telemetry. be sure to talk about the metrics (KPI's) you would be watching, What would be the response and how would you include the results the data you have collected by analytics to better the system further. Talking about telemetry gives you an edge over other folks as not everyone thinks about analytics. (Time = 5-7 mins)
  10. You have exhausted your 45 min in the interview! Congratulations on navigating through it! I wanted to mention a few more things that are essential and you can fit them in your high level system design (Point 5) discussion -

Grokking The System Design Interview Torrent

  • Data de-duplication.
  • Redundancy and Replication (Important based on the type of problem you are solving)
  • System should not have single point of failure.
  • Scaling
  • Trade-off's you have made and why?

With the above approach, solving the system design problem becomes manageable and you are more likely to succeed.

Resources: For your prep, I would recommend the following guides/resources that would be helpful.

Grokking The System Design Interview Pdf

  1. Design Data-Intensive Application - Martin Kelppmann
  2. Grokking the System Design Interview/ Grokking the Advanced system design Interview - Eductaive.io
  3. System Design primer - Donne Martin (Available on GitHub)

Please like and share if this article provides any value and you learn some new information from it.

Grokking The System Design Interview Free

Disclaimer: Content in this article is provided only for information purposes. This content should be used as a reference and not an actual approved guide to crack an interview. All views provided in this article are my own and has nothing to do with any employer or entity I am affiliated with. I do not endorse any of the recommended resources above.