5 Tips for System Design Interview Preparation

A Focused Study Guide

Adam Hughes
Level Up Coding

--

System design interview questions separate junior and senior engineering roles. They’re difficult to prepare for because, unlike algorithm questions, they don’t boil down to a handful of prescribed patterns. Instead, they draw upon a vast ocean of technical knowledge and experience. Couple that with the stress of a high-pressure interview, and it’s not surprising that many of us have watched a dream job die upon the dreaded whiteboard.

Last summer I struggled with system design, and it cost me job opportunities at companies like Amazon and Google. Finally, I landed a job at a promising startup, only to lose it less than a year later when Covid hit. However, this time I was determined to prevail. Here are five concrete tips I found that will prepare you for your next design session.

1. Gather Online Resources

Algorithm prep resources outnumber those of system design, but the balance is shifting. Dedicated programs have popped up in the last two years and have replaced the need to endlessly troll through YouTube clips.

Paid Programs

  1. Systems Expert is the paid resource I’ve used. It’s made by an ex-Googler and focuses on video content within a mock-interview format. The program also teaches fundamental concepts like caching, sharding, and consensus protocols. To get a flavor of Systems Expert, check out this free video from one of the lessons.
Free video from Systems Expert — emphasis is on mock interview format and upfront questions/clarifications.

2. Grokking the System Design Interview is another course I often hear about. It has more free lessons than Systems Expert and is cheaper, but seems to put an emphasis on text-based lessons rather than videos.

3. Finally, consider paying for a professional mock interview. Resources here are harder to come by, but Pramp offers it, and it's coming soon to InterviewBit.

Pro Tip: Coupon codes for these programs are usually available.

Free Resources

There are some incredibly solid YouTube channels devoted to system design. My favorite channel is TechDummies. Watch a few minutes of the video below just to get a flavor. This guy pumps out dozens of high-quality videos that, honestly, I would pay good money for.

I botched this exact problem on an Amazon interview in summer 2019— wish I’d had seen this first!

Other really high-quality channels include Guarav Sen, and Success in Tech.

If you prefer to get your hands dirty, try out the free System Design tracks on LeetCode and InterviewBit.

Pro Tip: Watch videos on 1.5 or even 2X speed to save time.

2. Use an Online Whiteboard like Miro

For a long time I studied using pencil and paper. Technically I am a doctor, so my handwriting obviously sucks. Revisiting such notes proved difficult, as it’s nearly impossible to cram system diagrams onto standard 8.5' x 11' paper.

Instead, try out Miro , a free whiteboarding site for individuals and small teams. Miro is great because you can paste images, for example, screenshots from the aforementioned YouTube videos, and easily annotate them.

Screenshot of 1/10th of my actual Miro board while studying for jobs this summer.

Pro Tip (Toma Ukleba): Miro works well with tablets like Star G640.

3. Find an Interview Buddy

A buddy of mine was also in the job market recently and by happenstance, we had both purchased Systems Expert. We’d only started to use the program, so there were plenty of problems the other hadn’t seen. We decided to each study a separate problem and then mock interview the other person. This proved tremendously helpful. Playing the role of an interviewer means being prepared for anticipated pitfalls and clarifying questions, which requires focused preparation. Meanwhile, the interviewee doesn’t feel the same pressure and stress found in the actual interview. It’s relieving to be able to say “man I have no freaking idea” without bricking the entire interview!

If no peers are available, consider paid interview services like Pramp. Additionally, a handful of Twitch streamers solve software problems collaboratively and could form the basis for such a relationship.

4. Stick to a Template

A great way to start a system design question is by referencing a script or template. Here is one I’ve built in Miro:

My Miro template for starting out System Design questions

There are seven sections:

  • Clarifying Questions
  • Functional Requirements: ie. what does the app do?
  • Non-Functional Requirements: scalability, latency, availability etc…
  • API/Entities/Data Model
  • Flow List: step by step of how features work
  • Architecture: draw system components
  • Todos: anything that comes up that we might come back to later

I’ve literally copied this into CodePair during actual job interviews (with my interviewer’s permission), and it helps tremendously. Foremost, it will gauge what is important to the interviewer. They may say “let’s focus on the API first” or “don’t worry about scale just yet”. Furthermore, it gives you a moment to breathe and remember the big picture. For example, did you ask enough clarifying questions? Did you think about the data model carefully? It may not be necessary to use all of these sections, but just having them handy demonstrates a level of preparedness and provides a backstop.

Pro Tip: Most interview platforms disallow copy/paste, so be ready to transcribe the template.

5. Own the Interview Platform

One of the few benefits of the Covid world is that system design interviews no longer happen on actual whiteboards. Instead, they’re conducted online through platforms like CodePair and Google Docs (sigh). This actually gives the interviewee more ways to come to the interview prepared.

First, ask the hiring manager about the platform and question format. Try to glean as much as possible — for example, how many questions to expect? How much time is allotted? etc… Next, go onto the platform ahead of time and solve some actual problems. The whiteboard tooling on these platforms usually sucks, so getting familiar with it is essential; otherwise half of the interview will be fumbling around.

Login to the interview a few minutes early and copy over your template (see the last section). If the interviewer has a problem with this, they can simply erase it. Have your Miro scratchpad up and ready for reference. It’s better to ask if using reference materials is allowed, but frankly, they can’t stop you.

Being prepared and comfortable with the platform is essential. I even had the experience where the CodePair session failed, but I was able to salvage the interview by sharing my Miro board and solving the problem there instead. Having this contingency in place surely left a favorable impression on my interviewer, and you never know which small detail may ultimately tip the scales in your favor.

Pro Tip: Invest in a decent webcam (I use this one) and avoid a bad first impression replete with mic issues and grainy video.

Have any tips or suggestions? Leave a comment.

--

--