Since I started to work for Amazon as a data engineer, some friends have asked me how I prepared for the Amazon interview. I have organized the list of resources gathered during my interview preparation and will also share my interview experience.
I have gone to the software engineer and the data engineer final round interviews. The interview processes are similar with both requiring you to know how to solve coding and system design problems and to demonstrate you have Amazon’s leadership principles. Data engineer interviews have an extra SQL component and will test your knowledge on how to design data pipelines depending on the reporting need requested. Software engineer interviews focus more on software design and on writing clean and maintainable code. If you just want the resources I’ve compiled for the Amazon interviews, please feel free to skip to the summary.
Assuming you have passed the resume screening, the first round is the online assessment. It consists of two coding challenges, “describe your approach” questions to describe each of your solutions, and a work style survey.
For the coding challenges, you’ll get the type of questions that you see on LeetCode. I recommend doing LeetCode questions on a consistent basis. Spend an hour each day or every other day if you have less time but the key is to be consistent. As for the difficultly of the problems, I like to do medium difficulty questions exclusively. Medium difficultly questions reflect most closely what you would see in an interview and will help you learn some of the common coding concepts and approaches. If you are interviewing for a data engineer position, do all the LeetCode database questions for SQL practice.
After you have completed the coding challenges, you will be prompted to describe your approach and to state the big O runtime of your solutions. The online assessment will then conclude with a work style survey, which is a series of questions about your work style where you have to rank on a scale how much you agree or disagree with the statements. It’s intended to get an honest assessment of your work style so doesn’t require any preparations.
Once you’ve passed the online assessment, you will advance to the phone interview round. The phone interview lasts for an hour which starts off with Amazon leadership questions for around 20 minutes and the remaining for a coding problem and time for any questions you may have for the interviewer. For the data engineer interviews, you will also get asked a few questions on SQL queries but the coding problem will be less difficult and require less time to complete.
Keep on doing the LeetCode problems to prepare for the technical portion of the interview. However, unlike the online assessment, you won’t necessarily be given an IDE, a method signature, or sample test cases. Practice solving problems on a text editor and ask questions to clarify the problem. Type out a few test cases and its expected output before you code so you can identify edge cases and let your interviewer correct any misunderstandings you might have early on.
Although this is a technical position, demonstrating Amazon’s Leadership Principles is just as important. Take some time to reflect on your experience and list out the projects and challenges that you’ve worked on. When you go over each Leadership Principle, assign the experiences which relate to it. Ideally you will have at least 3 experiences to talk about for each Leadership Principle. Search up your completed tasks if you have a ticketing system which keeps track of the work you’ve done. Often times, you’ll be able to discover things that you have overlooked or forgotten.
Once you have done the prep work, search up Amazon Leadership Principles questions. You can follow the STAR method when answering the questions, but essentially you are trying to describe a situation, what you did to improve it, and what resulted from your actions. Answer the questions out loud so you can mimic a real interview. Keep in mind that it’s very possible to have talked about an experience for an earlier interview question so be flexible with which aspects of a particular experience you highlight. As you practice more questions, you will become more articulate and better at answering the same questions with different experiences. If you don’t feel as confident with interviews, I suggest doing mock interviews with a friend.
The final round interview consists of five hour-long in-person interviews. For software engineer interviews, there are three coding rounds, one system design round and one round for Amazon Leadership Principles. For data engineer interviews, there are one coding round, one SQL queries plus scripting round, one system design round, one data modelling and ETL round, and one round for Amazon Leadership Principles. All the technical rounds will also have 20 minutes allocated for Amazon Leadership Principles questions and how you do in them is as important as how you do in the technical portion of the interviews.
The preparation is similar for what you would have done while preparing for the phone interview with the key difference being the extra system design and ETL rounds. I would recommend going through the Grokking the System Design Interview course early on as I find system design preparation is the most time consuming as engineers tend to have less experience designing complex systems.
For software engineers, you are expected to choose the right data structures and to apply good software designs. I’ve gotten questions where the interviewer simply tells me the type of system and the functionalities that need to be supported with nothing provided on the shared editor. In this case, you’ll need to determine which data structures to use, what kind of classes you will have, and how to adjust your solution and its design for any additional requirements. Be prepared to get a real life problem your interviewer is solving. You’ll need to verbalize how you will approach the problem so ask clarifying questions.
For data engineers, you are expected to be familiar with how to design data pipelines so read up on the common data concepts which I’ve shared in my preparation resource below. You don’t need to be an expert at any specific big data technology but you should be familiar with the tools available and what tradeoffs to consider when designing a data pipeline.
The Amazon interview is a long and rigorous process. If you are considering applying for Amazon or have already applied in the past, don’t get discouraged if you get rejected. Interviewing is a skill which requires practice. You can apply every 6 months to Amazon and through each preparation you’ll become more familiar with the process and the knowledge you’ve gained will be helpful for any jobs you wish to apply. Best of luck with your careers and feel free to download the Amazon interview preparation resources I’ve compiled.