PDF System Design Interview
CLICK HERE ===== https://bytlly.com/2t7NYm
I've come across the book System Design Interview: an Insider's Guide by accident (paperback book, and online course). I was looking for good book resources after several people have been asking me how they can get better at building distributed systems or learning designing systems at scale. Especially when they don't have the opportunity to do so as part of their day-to-day work.
The topic is somewhat a chicken-and-egg one. You'll know how to design a large system after you designed one before. But if you've not done so: how would you build an URL shortener like bit.ly, with hundreds of millions of links? A chat app like Whatsapp? A file storage system like Dropbox or Google Drive?
There are many resources online - the most well-known one being System Design Primer on GitHub or reading High Scalability articles. In my case, I was looking for a more "structured" approach, as opposed to just dumping a bunch of concepts you need to know in these interviews.
This book is the most "real-world" systems design book I've come across that does a solid effort to teach concepts, step by step, to people who have yet to work at systems at scale. And it's also a welcome refresher to those who are familiar with some of these systems but would like to venture into various other types of large systems. It is clear from the start that the book was written by someone familiar with systems at scale. The author is Alex Xu, a software engineer previously at Oracle, Zynga, and Twitter.
Still, don't forget that this is just a book. Books can help with understanding the theory but are not a replacement actually working on large-scale production systems. These systems are always more complex than any book describes them.
One thing you should avoid is "just memorizing" the approaches of the problems. That's far from the point. I made this mistake when I interviewed at Facebook, and was asked to build a part of Instagram. I had done this exercise, and so I just drew out a complicated system. I never talked about constraints or tradeoffs with my interviewer. In fact, I never had a two-way conversation.
A systems design interview is as much about communication with the interviewer as it is about your systems and architecture knowledge. This is why, while the book will help fill gaps you might have on how large systems are built, it won't substitute you collaborating with someone in designing a system.
This book is a solid recommend from me: and not just for preparing for the systems design interview, but to strengthen your systems design muscle for the day-to-day. The book/course comes with typical design problems and brings a pretty good, step-by-step approach to them. But if you just read through them, you'll miss out on the real value of such a resource.
Aim to draw out how you would design the system before reading how the author tackled the problem. You'll go through the book slower: but the concepts will stick. And you'll have approaches to use not just on the interview but when debating with colleagues on how to build a system.
Additionally, the book focuses on backend systems design. Client-side systems design problems for native mobile engineers or web engineers are usually different - I've helped design both these types of interviews. In all fairness, covering those approaches is likely out of scope for this book. Still, for non-backend engineers, the book can be helpful but potentially less applicable.
FundamentalsThis book will equip you with more than 30 technical fundamentals for a system design interview. Instead of giving you definitions that you can easily find online, the book will focus on applying the fundamentals to develop trade-offs and designs for system design questions. Applying fundamentals is how you will do well in a system design interview.
CommunicationCommunication is critical to the success of a system design interview. The book will provide more than 15 communication tactics to impress the interviewer. The design questions will provide you with examples of how you can communicate with the interviewer to develop assumptions, design options, trade-offs, and conclusions.
The system design interview is one of the funnest types of interviews you could get, if you know how to tackle it. The right approach consists of three parts: 1) a playful & collaborative attitude,2) narrowing down the scope through targeted questions, and 3) understanding the main components of any infrastructure, and being able to use them like lego pieces at your disposal. This post will help mostly with this third part.
Next up, you'll have a 1 hour interview with an Amazon manager (who is sometimes also the hiring manager for the role). This interview is usually focused on behavioral questions about your past management experience, and also questions related to Amazon's Leadership Principles.
Before this interview, it's a good idea to prepare some "stories" that highlight your past accomplishments and how you are aligned with the Leadership Principles (we'll cover this further in section 2 below).
There's also a chance that you'll be asked a system design question during this interview, although those are more prevalent in the onsite interviews. If you want to be on the safe-side, then start your preparation for system design questions early so that you'll have some practice in before this stage (more on system design questions in section 2 below).
You'll mostly be interviewed by current software development managers. But, depending on the role and circumstances, you may have interviews with the hiring manager, an HR rep, and a senior executive called the Bar Raiser.
As an additional note, Amazon's interviews tend to be very structured, and your interviewer's may not engage in much dialogue with you. So, if you're used to having extensive back-and-forth discussion during interviews, try to prepare yourself mentally for this interview style. Try to focus on the questions that are being asked, so that you can deliver a clear and concise answer for each one.
[COVID Update] Given the Covid-19 pandemic, your onsite interviews with Amazon will likely be conducted virtually. You can ask your Amazon recruiter for the latest information on their Covid-19 adjustments.
In this section, we'll dig deeper into those two types of questions to give you a clearer idea of what to expect, and we'll also provide example questions that you can practice with. For even more practice, take a look at our list of 65 engineering manager interview questions.
All of the questions we'll list below are real Amazon SDM interview questions that were reported on Glassdoor. We've just categorized the questions, and we've changed the grammar and phrasing in some places to make the questions easier to understand.
As you prepare for your interviews, you'll want to be strategic about practicing "stories" from your past experiences that highlight how you've embodied each of the 16 principles listed above. We'll talk more about the strategy for doing this in section 3 below (the preparation section).
Amazon products have millions of monthly active users. Amazon's SDMs therefore need to be able to design systems that are highly scalable. And this area is even more emphasized for engineering managers.
As mentioned above, you'll have to answer two main types of questions during your interviews: behavioral and system design questions. The first step of your preparation should be to brush up on these different types of questions and to practice answering them by yourself, so let's take a look at how to do this.
For answering behavioral interview questions, we recommend learning our step-by-step method. For Amazon, it's particularly important that you are able to demonstrate some of Amazon's Leadership Principles as you answer behavioral questions. And a great way to help you do this during your interviews, is to prepare several "stories" in advance.
When we say "story" all we really mean, is a scenario from your past work experience that you've outlined in advance, so that you can use it in your responses to interview questions. For example, maybe you were able to get a past project back on track after it fell behind on deadlines, that would be a great story for your interviews.
When you are preparing your stories, it's a good idea to refresh on the finer details of the project/situation to make sure you're ready to respond to any follow-up questions your interviewers might ask. You should also think about how you can summarize the main points of these experiences for your interviewers, so that you can communicate in a clear and concise way.
We'd also recommend studying our system design interview guide and learning how to answer system design interview questions. These guides cover a step-by-step method for answering system design questions, and they provide several example questions with solutions.
Finally, a great way to practice system design and behavioral questions, is to interview yourself out loud. This may sound strange, but it will significantly improve the way you communicate your answers during an interview. Play the role of both the candidate and the interviewer, asking questions and answering them, just like two people would in an interview.
Practicing by yourself will only take you so far. One of the main challenges of engineering manager interviews is communicating well. To gain some practice communicating your answers to behavioral and system design questions, we'd strongly encourage you to practice with a peer interviewing you. 2b1af7f3a8