Jump to ratings and reviews
Rate this book

System Design Interview – An insider's guide

Rate this book
The system design interview is considered to be the most complex and most difficult technical job interview by many. This book provides a step-by-step framework on how to tackle a system design question. It includes many real-world examples to illustrate the systematic approach with detailed steps that you can follow.

What’s inside?
- An insider’s take on what interviewers really look for and why.
- A 4-step framework for solving any system design interview question.
- 15 real system design interview questions with detailed solutions.
- 188 diagrams to visually explain how different systems work.

Table Of Contents
Chapter 1: Scale From Zero To Millions Of Users
Chapter 2: Back-of-the-envelope Estimation
Chapter 3: A Framework For System Design Interviews
Chapter 4: Design A Rate Limiter
Chapter 5: Design Consistent Hashing
Chapter 6: Design A Key-value Store
Chapter 7: Design A Unique Id Generator In Distributed Systems
Chapter 8: Design A Url Shortener
Chapter 9: Design A Web Crawler
Chapter 10: Design A Notification System
Chapter 11: Design A News Feed System
Chapter 12: Design A Chat System
Chapter 13: Design A Search Autocomplete System
Chapter 14: Design Youtube
Chapter 15: Design Google Drive
Chapter 16: The Learning Continues

324 pages, Kindle Edition

First published June 10, 2020

Loading interface...
Loading interface...

About the author

Alex Xu

9 books104 followers

Ratings & Reviews

What do you think?
Rate this book

Friends & Following

Create a free account to discover what your friends think of this book!

Community Reviews

5 stars
1,173 (47%)
4 stars
960 (38%)
3 stars
293 (11%)
2 stars
51 (2%)
1 star
18 (<1%)
Displaying 1 - 30 of 238 reviews
Profile Image for Zack.
3 reviews16 followers
May 16, 2021
System Design Interview exposes readers to many concepts that they might otherwise not consider when designing systems. Unlike Designing Data Intensive Applications by Martin Kleppmann, System Design Interview does not provide a foundational first-principles understanding of *why* we can achieve performance improvements. There were two very notable examples of this (and many more I leave undiscussed):

1. At one point, in the Chat design discussion, the author recommends we use a key-value store like Cassandra over a conventional database, but does not provide the critical insight that key-value stores use SSTables which provide sparse, in-mem indices which can performantly support many more rows than on-disk b-trees for highly distributed/"partitioned" systems (also: fewer disk-seeks). This very key distinction of in-mem hash vs on-disk indexing is critical, but the author merely says it "scales better". In general, the author doesn't seem to provide users with a clear grasp of why some NoSQL databases are better than others for some applications, but instead sort of charges ahead with a particular implementation, which I find troubling.

2. The discussion of designing Youtube is clearly a copy of the Facebook whitepaper of how they built their distributed video upload service. However, the author fails to mention a critical detail that most thinking readers would consider, a detail which the Facebook white paper clearly addresses (how to avoid memory leaks/unpredictable uploading times with different-sized videos, by chunking/parallelizing them). It's almost as if he simply wrote the top points from the paper, without actually stopping to carefully think about the overall system.

That said, the links and concepts in System Design Interview are quite helpful, and you will almost certainly learn something you did not previously understand, especially if you pair it with Kleppmann's book and follow-up with reading the end-of-chapter references. The author does a workmanlike job of actually outlining how to orchestrate various systems together, highlighting many details that are easy to overlook. His last chapter on designing Google Drive is impressively thorough and included many factors I would not have otherwise considered.

I primarily recommend the book for its references, which alone are good enough to justify buying the book, which begs the question: why didn't he quote them directly in the book? God knows we engineers know how to copy-paste.
Profile Image for Avraam Mavridis.
130 reviews20 followers
January 17, 2021
5/5 for the content.
2/5 for the layout and the quality of the printing.

The content is great, I wish there were more books like this one. Most of the books have theory and not enough or not at all practical examples. Alex put 16 great exercises for system design. I would also say that the title doesn't help the book, either you plan to go to interviews or not, the book will teach you how to think about system design. One thing it may misses is to talk a bit about Cloud Economics and how someone should think about the cost of their design and the tradeoffs there.
Profile Image for Sebastian Gebski.
1,080 reviews1,116 followers
October 21, 2022
Good stuff. Interesting ideas (scenarios) one can use for system design interviews.
What should you know before buying and reading this book?

1. the scenarios are not super-unique; I've used approximately 50% of them before, but they are very well-chosen and interesting
2. the scenarios are well covered, but it doesn't mean you don't have to have the necessary knowledge on your own - quite the contrary: they guide you through what should be covered, but the devil is (of course) in the details - it's up to you to decide on what you focus upon

Is it an essential book? No, it isn't. I did well before and so will you if you have sufficient engineering curiosity and some expertise. But it's a useful resource - both if you want to use it directly, or if you want some inspiration to come up with your own scenarios.

4.5 stars
Profile Image for Mohamed Elsherif.
32 reviews259 followers
January 25, 2021
Nice quick read, I like the systematic approach to solving the problems and breaking the process into steps or stages with expectations set of each step, which helps in improving communication between interviewer and interviewee.
Also a decent collection of problems that are common enough.
Highly recommended for prepping to interviews, obviously not comprehensive enough for the subject but that's to be expected.
Profile Image for Max Wolffe.
190 reviews13 followers
May 24, 2021
I recently went through the interview process and I found this book a helpful practice set.

The Good
This book is most useful as a way to see the things that an experienced distributed systems engineer would explore when answering a systems design interview that go beyond the rote answer to the question (what's the overall data flow and where should it run). Topics like AuthN/Z, partitioning, Abuse (DDOS, malware, abuse imagery, etc), Datacenter failure tolerance, etc are mentioned in follow ups.

It's ALSO a great way to get exposure to systems with which you may not have had personal experience (the search domain is a weakness of mine), with some associated real world solutions.

Finally - I found the second chapter's point to lay out a script for yourself for how to handle interviews to be very helpful.

For Coding TPSs my script was:
1. Explain / Clarify the problem statement.
2. Explore edge cases (what if the tree is null, what if the tree only has negative numbers?) .
3. Present a high level design - get buy-in.
4. Code up the solution.
5. Walk through the solution - resolve bugs.
6. Give runtime and space complexity.

For System Designs I followed a slightly modified script from the one in this book :
1. Explain / Clarify problem statement (make sure you understand inputs and outputs).
2. Brain storm ideas - present a main high level approach - get buy in.
3. Call out major edge cases and mention other things which you're thinking about but may tackle later (abuse, DDOS, replication, etc).
3. Discuss scale / do back of the envelope math if appropriate.
4. Diagram out your solution.
5. Walk through the solution with the interviewer.

The Bad
The only issue I found with this book is that all of these systems presented are online (there are almost no offline systems discussed). The examples themselves are also relatively basic (though still great practice).

Overall
Cheap insurance for the system design portion - would recommend for any backend distributed systems engineer going through the loop.
Profile Image for Ieva Gr.
180 reviews34 followers
April 23, 2021
Why I read it: I participate in system design interviews as an interviewer from time to time. And unfortunately this is one of my weaker skills. I thought maybe reading a book about system design interviews would help me to understand the nuances of the exercise better and become a better interviewer.

Since the book consist of multiple different design exercises I read it one chapter per week. Read the intro part first, spent some time figuring out my take on the design and then read the solution and reflected a bit why I have taken different paths and things I forgot to consider.

What I liked about it:
This is a really good reference book. Each design explanation is easy to read, well illustrated, have links for relevant resources. It covers most of the typical design exercises + short introductions to scaling and back of the envelope estimation. There is a list of additional resources and engineering blogs at the end.

I have expected this exercise I planned for myself to be really gruelling. But the easy and approachable style of the book made it quite easy and quick (I’ve spent around an hour on each).

It gave me a little ego boost as I realised I am already familiar with part of the technologies and solutions mentioned in the book.

What I disliked:
I think I got out of it a lot less than I’ve expected. I only read what was in the book, did not follow up on the references. I would have liked it more if the chapters were more detailed and forced me to think more when reading (instead of hoping I won’t be lazy and do the extra work of looking up references).

The book was not very well suited for the kind of exercise I designed for myself. When reading the intro it wasn’t always clear when I should stop to not see any spoilers (though usually it was ok to stop after the example exchange of the candidate and interviewer). The solutions didnt follow a consistent pattern (e.g. high level design, api, database schema etc.) so sometimes after doing a practice design I’d see I went in a completely different direction. (Though I do understand why the book was written this way, as different designs were there to illustrate different problems and it did not make sense to follow the same pattern.)

My main take away from the exercise: ‘Never ASSUME… it makes an ASS out of U and ME’. Or in other words: I noticed I tend to skip things I see as ‘obvious’ and jump to the places I consider interesting or problematic but a lot better common ground (and system design) can be reached when starting simple and voicing out all the assumptions made.
227 reviews
November 29, 2022
This book had some great case studies and really helped me understand how to break down these types of interviews. It actually got me excited again to code and be a software engineer and have to make these kinds of decisions. It’s probably not the best book for applying these ideas in practice but that’s why I added a bunch of other books in this genre to my want to read.
1 review1 follower
September 29, 2023
I had very little information about system design, so the book was good to start with. It has different examples that helped expose many concepts and ideas to kickstart with. Examples were well divided into sections that simplified the explaining process. Examples were sorted so that each one would help understand the rest. It's a great quick read.
Profile Image for DH.
5 reviews1 follower
September 27, 2021
The pacing isn't quite right - there are rapid jumps from fundamental concepts to advanced concepts and back again. Within 8 pages the book covers (with diagrams) read/write quorums, strong, weak and eventual consistency, vector clock inconsistency resolution, gossip protocol failure detection, and more. This is far too many topics for that amount of pages and reads a bit like a laundry list of topics to learn from another source.

The book should have spent more initial time on the essential building blocks of scalable systems: DNS, load balancers, cache, SQL vs NoSQL databases, database sharding & replication, etc and then explaining how these concepts fit together.

Then, when the book moves to examples of systems, each concept should be discussed with reference to the earlier decisions (e.g. "remember that we are choosing to focus on consistency over availability for this system with low read latency").

As this is essentially a study book, structuring the book like this (starting at the basics and then referencing back to these fundamentals) would have ensured that the content remains in long-term memory as the material would be constantly reinforced. Instead, each paragraph feels mostly stand-alone without much relation to what was previously covered in the chapter or previous chapters.

This is a useful book to read, but only after you have good knowledge of the main concepts in the field.
Profile Image for Miloš.
67 reviews3 followers
November 2, 2021
Seeing the reviews both on Amazon and here on GR I expected so much from this one, what a letdown it's turned out to be.

Lazily written with overly simplified offhand claims which (more often than not) don't have anything to back them up, and the gravest sin of all - there's almost no meaningful discussion of the presented solutions. All the complex solutions look more or less the same - the author will present you with a system you need to design, showcase a mock requirements gathering session and then will proceed with explaining his design while leaving out the most important bit, in my book at least - a step-by-step thought process of how he arrived at the design, what alternatives were considered, what their tradeoffs were and why they weren't chosen.

Add to that a pretty stale list of references (probably remnants of the first edition) and what you get is a book that should have been called System Design: An Overview of How FAANG Implemented Their Stuff.
Profile Image for Leonid.
265 reviews21 followers
July 25, 2022
Content is quite ok, but it 90% overlaps with "Grokking the system design interview" (also, course has some more exercises, and, in my opinion, is much better structured). So if you're trying to decide between the two - I'd definitely opt for the course.
Anyways, the examples themselves are quite good, well-explained, decisions are motivated etc, and author touches all the topics, that interviewer will probably be interested in - figuring out requirements, some back-of-the-envelope calculations to estimate scale of the system, db structure, "birds-eye view" of overall design, and deep dives into most interesting parts of the systems.
Profile Image for alper.
190 reviews53 followers
June 30, 2023
Çok basit bir dille ve çok basit bir anlatımla YouTube’dan, twitter’a, Google Drive (ya da Dropbox)’dan WhatsApp’a çeşitli uygulamaların ya da bileşenlerinin tasarımlar ele alınmış. Kitabımızın isminden de anlaşıldığı üzere anlatım mülakat şeklinde. Öyle olunca kısmen kolayına kaçmış yazar. 1 saatte bunları nasıl tasarlarsın gibi ele alınca makul. Ama işte, Ama okunur, okunur. Bir de her bölüm bir sürü ek okuma linki paylaşmış. Onlar esas hazine. Bir güzel tarafı da bu tasarımlar üzerine ekleye ekleye giden yapılara dönüşüyor. Mesela dağıtık sistemde id üretimi var bir bölümde. Onu tasarla diyor. Sonra onu bir başka tasarımda onu da kullanıyorsun. Aynısı “key value store” için de geçerli gibi gibi… Hem kendi kendine tekrar eden -hatırlatan- yapıları, hem de ek okumalarıyla sevdim, basit dilinin yanında.

“Designing Data Intensive Applications” bu işin feriştahı. Onun öncesinde okunması yerinde olacaktır tabii. Benim gibi tersini yapmamalı. :)

4 çok ama 3 de az oldu.
Profile Image for Paul Baltescu.
6 reviews2 followers
August 29, 2021
The book is useful for a high level review of systems an engineer might work with or may be asked about in an interview. I applaud the author also for attempting to demystify the system design interview - probably the more important part of any interview loop for senior candidates.

I wish the book had more depth (even considering the material is meant just to cover a 45-60 minute interview session). The level is probably good enough for up to senior candidates, but a bit lacking for staff+ roles. The writing style could be improved as well: the author would have benefited from having other engineers review the content prior to publication.
Profile Image for Mohammad Efazati.
162 reviews19 followers
December 21, 2022
کتاب بسیار سر راست و خوبی برای سیستم دیزاین هست. من برداشتم این بود خیلی از نکاتشو میدونم ولی بازم خیلی چیزای خوبی یاد گرفتم

عیب مهمش اینه که خیلی عمیق نیست ولی واقعا مصاحبه سیستم دیزاین هم خیلی عمیق نیست

از طرفی این کتاب ها تاریخ انقضا دارن و حس میکنم این کتابم چند سال دیگه خیلی کاربردی نباشه. مگر اینکه نویسنده ویرایش کنه
نویسنده یه کانال خیلی خوبم داره که خیلی از مفاهیمی که گفته رو بهتر توضیح داده. مثلا بلوم فیلتر یا چیزای دیگه
Profile Image for Samuel Miller.
109 reviews4 followers
July 24, 2023
Solid if superficial overview of various software systems you'd see at big tech companies and how to build them.

I think if you have some experience working with a system or two like those described here, or have read about them in other books, blogs, or papers, this offers a nice quick summary of the highlights that could guide your thinking during a system design interview. If not, then a lot of it is seemingly arbitrary memorization which might mislead you into thinking you understand the concepts at play.

For example, Xu sometimes says things like "use technology X to get property Y" without a good explanation of what property Y means, or why it's really useful for this scenario (or he'll offer an over-simplified justification for it). I totally understand that he wants it to be concise, but it's written more like review notes for a class than something I'd study first-hand.

Also, there are a number of grammatical (and factual) mistakes, but nothing too egregious.
Profile Image for Michael Burnam-Fink.
1,580 reviews263 followers
May 15, 2023
Last time I went up for tech jobs, I know I definitely lost positions because I bombed the system design interview. That won't happen again.

Xu's book provides wonderful examples of how to get through one of these, with examples of the right questions to ask in terms of scale, queries, and reliability, and examples of practical questions, from a simple rate limiter to complex infrastructure Youtube and Google Drive. The 16 examples are clearly explained with increasingly detailed diagrams and extensive notes.

This isn't a deep dive, more of a wave at key ideas like horizontal scaling, stateless web servers, caching, and load balancing. As other reviewers have pointed out, Kleppman's Designing Data Intensive Systems gets at the gritty implementation of these things in a cursed world of fallible hardware and network connections in a much deeper way. But System Design Interview is a worthy companion to Cracking the Coding Interview for flimflamming the asshole standing between you and a salary.
Profile Image for Anjum Haz.
255 reviews61 followers
May 26, 2024
I liked that the book is very simple. A summary like. It’s more appropriate when you know the in-depth concepts, also it can be suitable for knowing the high level solutions of system design. You may need to read/explore more for a particular problem that is deep.

Each chapter is titled with a question of system design interview: Scale a system, make a URL shortener, design YouTube, design Google Drive etc. The answers are simple, if you want to go in-depth or test your interviewee’s in-depth, you have to go to other places like Designing Data-Intensive Applications.

I will leave the problems/challenges/tools I found most interesting in some of the chapters (all chapter presents very interesting problems, here’s a few listed)

Chapter 5: Design consistent hashing - This chapter tries to answer how to minimize update cost of hashtables. Learned about consistent hashing, has nodes and virtual nodes
Chapter 7: Design a unique id generator in distributed systems - learned about twitter snowflake approach
Chapter 8: Design a URL shortener - Base62 encoding
Chapter 11: Design a newsfeed - Fanout servers
Chapter 12: Design a chat system - Perfect use case for WebSocket
Chapter 13: Design a search autocomplete system - this one was too interesting, I learned about trie data structure, it’s like a tree and hence my favorite.
Chapter 14: Design YouTube - how to save cost for storing so much content in CDN?
Chapter 15: Design Google Drive - Delta sync to save the day

Seemed like a revision of Designing Data-Intensive Application to me. Plus learned about new data structures, new problems and their solutions. Very much enjoyed the read!
Profile Image for Colin.
1 review17 followers
Read
September 4, 2021
Interesting book. Just read out of curiosity, of course. Not for any other reason. Just some light reading during my time off. A time when I haven't been interviewing. Yep, just was interested is all. And boy did I learn a lot. Hypothetically, if one were to be interviewing (not saying I was), this would be a great intro to the system design component of a technical interview. A good preliminary reference, I think, though you'd probably want to check out more in-depth sources after going through this book--just to really solidify your understanding. I imagine this would be pretty useful if this territory was largely unfamiliar to you. Of course, I don't know what a system design interview looks like because I've never done one. Because I'm not interviewing! So take everything I say with a grain of salt!
Profile Image for Júlia Birkett.
4 reviews3 followers
March 25, 2021
I don't know if I've been doing "wrong" interviews my entire life, because I had never faced one with such design problems as shown in the book (and I'm glad I didn't!). I could learn interesting things from the book, but I don't know if it was worth reading it entirely. Its main content is showing examples of products we know (Google, Youtube, Facebook...) and how would we design their systems in a 1h interview. It starts with simpler examples and there are about 15 of them. In the end I was tired of reading it.
It is useful to make us think about and discover how some things work but, in general, I think it is a book that is worth quick-reading and then consulting as needed (when you face a similar design problem).
Profile Image for Yura Gavrilovich.
96 reviews7 followers
June 22, 2021
The book describes a fairly standard set of design interview topics like: horizontal vs vertical scaling, "back of the envelope" estimation, SQL vs NoSQL choice, etc.
Some chapters are detailed while others are rather sloppy and remind personal notes with diagrams. Nevertheless, I quite liked the book overall. It's easy to read and explains some important concepts (e.g. consistent hashing) really well. Additional links to papers with architectures are useful as well.
Profile Image for Prashob.
107 reviews20 followers
November 26, 2023
"System Design" by Alex Xu is nothing short of exceptional. This book transcends the boundaries of being merely an interview preparation guide; it serves as a profound resource for anyone seeking to enhance their understanding of software system design. Alex Xu's articulate approach provides not only comprehensive insight into the intricacies of system design but also invaluable knowledge that extends beyond the confines of interview preparation.

The book is a testament to Xu's ability to elucidate complex concepts, making them accessible to readers regardless of their specific goals. Whether you are gearing up for interviews or simply aiming to refine your skills in software system design, this book stands as a beacon of enlightenment. The author's adept narrative not only imparts practical methodologies but also instills a deeper comprehension of the principles governing effective system design.

In essence, "System Design" is a literary masterpiece that goes beyond its apparent purpose, offering a treasure trove of knowledge for anyone seeking to navigate the intricacies of designing robust and scalable software systems. Highly recommended for both aspiring interviewees and those dedicated to mastering the art of system design.
Profile Image for Giorgi Jibladze.
10 reviews2 followers
July 11, 2022
Although the book is primarily for people who need to prepare for system design interviews, it is 100% recommended for everyone interested in designing software systems. You can't read the book without prior knowledge of the fundamental topics and general experience as it does not teach any specific topic in-depth, rather it discusses typical showcases, like designing a scalable notifications system, a rate limiter, YouTube, and others. Plus, every chapter is followed by a list of research documents and blog articles for a deeper understanding of the topics. Again, absolutely worth reading!
Profile Image for dantelk.
166 reviews15 followers
June 29, 2024
As the title suggests, the book promises to deliver interview know how on system design interviews (not any deep understanding or knowledge. Just to impress the interviewer). For that, it does what it should: The cases are interesting, the questions asked reasonable, a lot of diagrams to quickly fill the poor developers brain with all sort of sorting paradigms, scalable and replicated storage etc etc.

I think the case study for Youtube was too much low level, video streaming protocols etc. I just skipped some parts of it since I think the technical details explained there are too custom purpose for video streaming's specific business case.

There are a lot of great references to technical articles, especially different no-sql databases configurations (eg Cassandra and LSM trees etc).

I am glad I read this book after Martin Kleppmann's book. It kind of supplemented and reminded the ideas and techniques I got from Kleppmann.
Profile Image for Ivan Ivanov.
24 reviews
February 1, 2023
Maybe my expectations for the book were too high or maybe it is the fact that I don't have experience with System Design interviews but overall I didn't like it.

Most of the chapters felt too shallow, even the deep dive sections. I liked some of the them but for most of them, you have to follow the reference links at the end of every chapter in order to gain some understanding.
Profile Image for Ioana Balas.
741 reviews81 followers
December 5, 2022
System Design interviews have become the bread and butter of any Software Engineer loop, you can't escape them. And yet they are the most difficult to prepare for. Even just starting preparation begins by doing an audit of all the material available to you: the primer on Github, the popular Grokking the Systems Design Interview course, High Scalability posts, whitepapers, gotta catch 'em all. This book is very applicable to specifically interviews, I don't think you would get much of the level of explanation to necessarily use in your day to day that you couldn't get from more in depth material. This book is more of a this is specifically what you need for interviews: broad explanations, intuitive approaches, and does a fairly good job about approaching product requirement gathering, scalability techniques and tricks for specific problems, like fan-out.

The examples are pretty much what you'd expect, both product ones (Google, Facebook newsfeed, Youtube etc.) and more low-level ones (rate limiter or consistent hashing) and especially in terms of the low-level ones it excels because I found these more rare to come across from an interview perspective in other material.

Whether you are preparing for an interview yourself or using this book to become a better interviewer, I'd definitely recommend it. I would also suggest this goes hand in hand with Grokking the Systems Design Interview course - some exercises are the same, but it works well to compare the techniques, the problem solving approach, and judge the trade-offs for yourself. I would also say that Grokking the Systems Design Interview focuses more on estimation and data sharding, where as this book is more about the essence of the problem at hand and less about the operational side.
Profile Image for Madhur Bhargava.
Author 2 books13 followers
October 10, 2021
One of the nicer books that I have read about System Design. The introductory chapters are lucid and gradually introduce the reader to the concepts without throwing in a lot of jargon. The author takes a consistent framework based approach which is really easy to follow and can be practically applied to most interviews. However, there are a few shortcomings - for example - a lot is left to the reader to be learnt via reference materials(present towards the end of each chapter), but, I can understand the reason of that, as a balance needs to be observed between the content and the length of the book, however, just as a thought, a hybrid approach could have been taken with first few chapters dealing will less of reference material than the later ones. But, despite the shortcomings, the book can very well act(recommended) as an introductory level book for System Design with the deep dive later on left to the interested reader.
Profile Image for Dmitry.
173 reviews8 followers
March 26, 2022
Хорошая книга, показывающая общий план разработки достаточно крупных продуктов(сосредоточенная, правда, почти исключительно на вебсервисах). Иногда даются и конкретные алгоритмы, как при описании rate limiter, генератора айдишников или бэкенда для автокомплита. Если вы всю жизнь чинили баги в чем-то крупном, а проектировали изредка и какие-то мелочи, книга будет вам полезна как минимум для выработки привычки "не цепенеть". Лично для меня, в силу максимальной нацеленности на практику без ручной имплементации алгоритмов консенсуса, "Интервью" оказалась даже полезнее, чем легендарная книга с кабанчиком
February 17, 2022
There is a specific kind of literature for negligent schoolchildren - a collection of ready-made homework for literature lessons. You just need to copy the text from this booklet, change some words, and voila, your homework is ready without using your brains.

The second part of the System Design Interview (starting from part 9) reminded me these booklets.
Displaying 1 - 30 of 238 reviews

Can't find what you're looking for?

Get help and learn more about the design.