First, I would like to express my gratitude to the LeetCode community in helping me prepare for this opportunity. I invested more heavily in preparation this time, primarily through LC (premium), and delivered one of my better interview performances in recent history. I never thought I would be writing a post, but I am happy to give back to the community.
Background:
Preparation (~ 1 month):
Coding:
LeetCode - Mock Amazon interview sessions (online accessment, phone screen, onsite) + the Amazon card on LeetCode explore. I pretty much exhausted these options.
System Design:
Gr##king the System Design Interview
Gr##king the Object Oriented Programming Interview
Behavioral:
For LP (leadership principle) questions, there were a few very helpful resources which helped me come up with sample questions and responses:
https://leetcode.com/discuss/interview-question/437082/Amazon-Behavioral-questions-or-Leadership-Principles-or-LP
https://medium.com/@scarletinked/are-you-the-leader-were-looking-for-interviewing-at-amazon-8301d787815d
https://interviewgenie.com/blog-1/category/Amazon+interviews
Round 1: Online Assessment
Q1: Number of Islands - https://leetcode.com/problems/number-of-islands/
Q2: Critical Routers - https://leetcode.com/discuss/interview-question/436073/
I was given 90 minutes, and I nailed the first question. Unfortunately, I was not very proficient in graph theory, and I had only studied a similar problem (Critical Connections, which is about removing an edge, not a node, which has a different solution). I was only able to get about 40% of cases to pass for this one.
Fortunately, I was contacted by my recruiter about a week later, and I made it to the final round, which was conducted virtually due to the current COVID-19 situation.
Onsite (virtual)
The interviews were conducted through the Amazon Chime app. There were 4 rounds, each 50 minutes long, with only 5-10 minute breaks in between (no lunch).
Round 1:
15 minutes of LP questions:
30 minutes coding problem:
Round 2:
20 minutes of LP questions:
30 minutes coding design problem:
My interviewer didn't seem concerned at all with how I chose to implement the method. He just wanted a "working" solution, and he did not comment much while I was coding. It may have been because I took the entire time to get a working implementation that we didn't discuss any tradeoffs or optimizations.
Round 3:
20 minutes LP:
30 minutes system design:
Round 4:
So at this point, I was completely exhausted after 3 straight interview sessions, and I should have asked for a 5-10 minute break before jumping straight in. I don't like to make excuses for myself, but my performance was far from my best during this round, so a word of advice I would give is to take breaks when you have the opportunity.
15 minutes of LP:
35 minutes of coding:
I had seen a very similar problem before, but I struggled immensely to implement the solution and made quite a few mistakes. For every few lines of code, my interviewer (who was more than helpful), would provide hints and help correct my logic. Half the time, my brain didn't seem to respond due to fatigue. It was quite embarrassing, but I did eventually arrive at the solution. I can't say that this was the nail in the coffin for me, but it certainly didn't help my case.
I received the unfortunate news of rejection a couple of days later from my recruiter, and, per company policy, I was not given any feedback. The news seemed to hit me harder than in past experiences because I felt that I invested much more time and energy this time around.
Although the interview experience was still difficult, I actually felt more encouraged after going through the process because the problems weren't as hard as I had expected them to be. On a LeetCode scale, they ranged from easy to medium, and two of my colleagues had similar experiences. I have only interviewed w/ FAANG companies 2-3 times, so I can only speak from limited experience, but I feel that the aura around of these companies has faded a bit for me now. Yes - they have talented engineers. Yes - they work on bleeding edge technology. But even for an average engineer like myself, I know that I have what it takes to earn an opportunity to work for one of them, and LeetCode is a great place to start working toward that goal.
Some general tips I would give: