David Gaspard
Tech through David's lenses.
The Best Way To Prepare For System Design Interviews
The ambiguity of system design interviews can be daunting for most candidates. I’ve never formally studied computer science and when preparing myself for system design interviews, I was a bit surprised by the lack of concise and practical study information. The first system design interview that I ever experienced was an utter failure. I had no idea how to do a back of the envelope calculation to determine my system requirements or even knew how long a round trip would be from client to server.
Now, after a month of studying and a month of applying, I’ve received numerous offers from companies such as Databricks and many accolades about my system design chops. Using the resources that I detail in this article, I strongly believe that anyone can achieve the success that I’ve had.
Reading Materials
I’ve gone through a few books on System Design including Azure for Architects and Designing Data-Intensive Applications. However, the most practical book that I’ve ever read on System Design has been System Design Interview by Alex Xu.
Alex Xu’s guide is an easy-to-read 300-page book in a small paperback form. It’s packed with practical information such a table of rough estimations of general computations and processes such as an estimate for how long an L1 cache reference takes or a packet roundtrip from California to the Netherlands. It goes over many fundamentals such as consistent hashing, vector clocks, and rate limiting techniques before diving deep into common interview questions such as building a social media feed system and creating a web crawler. Almost each page contains an image so that you can verify your understanding as you go along and each chapter is short with concise summaries.
This book has become my little pocket bible and I always consult it before an interview for a last minute refresher.
Alex Xu has also published a System Design Volume 2. It is a terrific read, detailing the designs of many complex systems including Google Maps. This book is less digestible and less applicable for a typical system design interview but contains some very specific designs that have come up in my interviews such as a payment system and hotel reservation system. I would strongly encourage you to read volume 1 first though as volume 2 builds upon many of the concepts from volume 1.
Online Resources
There are many great online resources to help sharpen your system design toolset. Donne Martin’s System Design Primer repo contains many useful examples of system design problems with an in-depth analysis of how to go about approaching the problem and iterating on your solution.
Pramp is a great online resource for practicing interview questions. You can practice with peers for free on pramp. You and your assigned partner take turns answering interview questions and each session is about 80 minutes long but you and your partner are free to set limits. Pramp provides system design, coding, and behavioral interview practice.
These are the primary resources that I would suggest. There are also many paid resources, such as interviewing.io. On interviewing.io, I’ve spent about $500 for 2 mock interviews. These interviews were not very challenging and I found the feedback to be quite basic. However, interviewing.io also has a free peer-to-peer option as well which may be comparable to pramp. I love the idea of paying for professional and detailed interview prep, but this unfortunately was a bit of a waste of money to me. Perhaps, the dedicated coaching sessions($4000+) are more beneficial.
Conclusion
A System Design interview is like a box of chocolates. They are often so unstructured, that it’s difficult to determine how your interviewer will grade your performance. They most important steps are to
- Ask MANY questions about the functional and technical system requirements and priorities of the problem
- Come up with a basic design that meets those requirements
- Iterate on and improve your design with performant architecture components (such as caching and message queues)
With these resources, I’m absolutely sure that you will rock the system design interview! Stay calm, keep your interviewer engaged, and best of luck!