Status: New grad, BS CS Top 30 CS school
Position: SDE1 at Amazon
Location: Seattle, WA
Date: January 2020
I applied in October online, and received an invitation to complete the Online Assessments. At this point I had not done any interview prep and so I took as long as I could for each portion to have as much time as possible to study.
OA1
First round is a debugging round. It is easy to pass.
OA2
Second round is more comprehensive. I had two coding problems to solve. One was easy; the second was more difficult. I got it to work literally within the last few seconds of the timer finishing.
OA3
This is a work simulation. Not much to prepare for this. Keep leadership principles in mind first and foremost and just be logical. The second part is a logical assessment which is not difficult.
I received a notification that I passed the online assessments and would be interviewed for a final round in mid November.
I got a follow-up email in early January to schedule a three part final virtual interview.
Final Interview
Round 1
This was the worst round. I received two behavioral questions which I answered adequately enough. These were asking for a time crunch story and a story of me challenging a decision. I got a good outline of a solution to the coding question but needed the interviewer to walk me through an error in the code. I was disappointed a bit after this round, but it is very important to simply do your best and forget what happened.
Round 2
This round went better. I got asked for another time crunch story and a failure story (tell me a time you made a mistake). I answered these again adequately enough. The coding question went much better. The interviewer seemed to be getting slightly frustrated with me, but I kept my cool since I felt I knew what I was doing. The solution involved breadth first search which I knew how to code. I also discussed other graph search possibilities.
Round 3
This round went perfectly. The interviewer threw a fastball right down the middle for me with the behavioral question I most wanted to get asked. It was to talk about a time I learned a technology outside of school. He did not ask another since he wanted to quickly get into coding. I was incredibly lucky here because he led me through the stage of identifiying how to solve the problem and just asked me to code up the solution. I was also lucky in that part of the solution was also a breadth first search. Whatever communication problems that were there in round 2 were not an issue. My interviewer and I were getting along very well.
After each interview I asked questions of them at least until the full time of the interview was up if not for a little longer. In addition, I searched for all my interviewers on LinkedIn to send a follow-up email thanking them for their time since I did not have their emails.
I was put on the waitlist a week later and received an offer a week after that.
Preparation
I was not as prepared when I started the process as I should have been. If you can, start early so that the process is more stress free. I read Cracking the Coding Interview, which is available online for free. I also implemented approximately 60 coding questions and watched MIT lectures from their algorithms course available online for free. My advice, especially if you are in a crunch like I was, is to implement a few things every day and review at a high level all the important CS concepts. It is likely interviewers will ask things that are standard material in CS courses, so knowing the basics of coding fundamental algorithms and knowing how to use data structures in your language of choice is very helpful. I made sure I could do this for several algorithms. It is likely that a question you see will be solvable via one of these algorithms or a variant so knowing them well is useful.
The coding part is significantly harder in my opinion, but preparing behavioral questions is important as well. I came up with two stories for every leadership principle, and made sure I could answer each question listed in this Dan Croiter video . I also prepared an elevator pitch for the "tell me about yourself" question, though I was only asked this by one interviewer strangely. A few days before a friend of mine did a mock interview with me for behavioral questions. If possible, do behavioral and technical mock interviews. Knowing how to communicate clearly is a skill on top of being able to code.
It is hard to do, but staying calm and poised throughout the preparation and interview is also helpful. Prepare what you can, and be confident in yourself no matter what happens.
Thanks to the LeetCode community for help in this stressful process and best of luck to anyone preparing now!