I'd start by saying thanks a ton to our Leetcode (LC) community for the help and guidance. I am glad to be able to give some of it back to the Leetcode community through this post! When I learned about this community, I had a dream that one day I will post my experience with the word "offer" in the title, I have finally reached there.
This was my third interview with Amazon and I have neither applied nor interviewed with any of other companies in FAANG. If you've faced rejection, have confidence on yourself to take time to practice for 2 months and then apply again. Interview success has fair bit of luck factor and how you feel on the day matters quite a bit as well so my advice would be to always believe in yourself and have confidence in your own abilities.
I was approached by an Amazon recruiter late March 2020 but I did not respond as I was not prepared and I had in past tried to interview twice for Amazon and failed at onsite due to lack of preparation. But the same recruiter approached me again a week later and because I was working from home during COVID-19 situation, I felt I could find a little bit of extra time to prepare and the recruiter told me that interviews are in taking place 2nd half of May so I did have over a month and a half to prepare thus I responded yes to start the process.
Online assessment (OA)
I did technical assessments in early April. Hours after I completed OA, I received an email for a follow-up phone interview with a recruiter. Both questions were from the top amazon list on LC, followed by an explanation of solution and time complexity and then followed by personality and work style survey.
Q1 was a 2D Matrix problem
Q2 was ordering text data based on a combination of factors problem
Phone interview with recruiter
Phone interviews with recruiters mostly focused on some of the basic questions around LP and a couple of basic DS questions like DFS vs BFS. Soon after the phone interview, I received an email recruiter confirming an onsite interview.
Virtual onsite (VO)
Due to the COVID-19 situation, onsite was done virtually. I was told in early April the date on which the VO loop was going to take place and that there will be four rounds of interviews with one of them being focused on system design.
Interview 1 - LC Medium:
Interview 2 - Tough system design:
Interview 3 - LC medium / easy:
Interview 4 - LC hard:
Right prep strategy is critical I believe and in my experience, practicing and learning relevant concepts is as much important as digesting them which is why I wanted to create a strategy in which I could complete through all critical concepts at least 2 weeks before interview and allow time to digest those things. So I divided my prep into 3 rounds:
Round 1 - First 31 days:
Round 2 - 10 days:
After about 31 days I had finished all core concepts I wanted to learn but it only covered about 80% of the stuff that I needed to prepare. For remaining of 20%, I preferred to keep things random and learn to develop skills needed to solve a surprise question so for next 10 days, every day as and when I get time I randomly looked up a new Amazon interview question on LC discuss and try to solve it within 30 mins on my own or within 1-hour max and if I struggled, I glanced thru answer. I tried to go through 5 problems a day, 3 codings, 1 sys design, and 1 OOP. I developed plenty of confidence as I was able to solve most of the questions reasonably well on my own in this round.
Round 3: Last 4 days
Slowed down. I don't like to wake up on interview day feeling tired and overwhelmed so I preferred to slow down the last few days. Adopt relaxed and healthy schedules. I reviewed all the coding solutions I had answered on LC, all solutions I had written down for sys design and OOP problems, And did some mock prep for LP / BQ question. I tried to review no new content, just recap of what I did so far in the last four days. The evening before the interview I ate my fav food but early and then went for a nice walk, then watched a good comedy movie to forget about the interview. I had a brief 15-minute meditation session before going to bed. It helps me clear the clutter in my head.
Interview day
I woke up fresh on the interview day. I had porridge and tea for breakfast. Also, I had two cans of Redbull by my side. I believe Redbull increases my level of alertness and speed at which my brain works so I use it during interviews just for that little extra dose of caffeine. I had half can before each of the four interviews. I tried to focus as much as possible on every word interviewer is speaking, took a couple of seconds to understand questions, and clarify to make sure the message sent was the message received. For leadership principle questions, I often took 10 to 15 seconds to think my answer through but kept interviewer engaged by explicitly mentioning that I have a couple of good examples for you but I am thinking through which one will fit the best here so please bear with me for a few seconds.
Few tricks I used
For coding questions, once solved, I also tried to twist coding questions on my own to make it tricker and additional requirements or complexities, such as what if data wasn't sorted or if it was in reverse order or for example for count island in matrix problem, what if I want to find an island closest in size to the average size of all islands and solve for it. This increased my ability to see through problems more clearly and understand the DS underneath much better. I also developed a habit of not thinking about code when looking at these problems but think about how would I solve it if I was dealing with real objects for example if I want to reverse a linked list, I'd imagine as if I had 5 boxes in front of me, how would I reverse their order? Then I write down steps as a comment on a paper or text editor. Then I tried to break down each step into a function if it's more than one line or if it can be reused.
I had my favorite take away lunch post-interview, drank a couple of beers with it. Then I watched another comedy and relaxed. I tried not to think about interview much for rest of the day as I needed to release that anxiety I was hoarding since I started preparing for the interview. I went to bed early and woke up fresh the next day.
The next day I analyzed my answers and compared them with optimal solutions I could find. I became very excited that I had managed to achieve optimal solutions for every question I was asked and system design did go well as per interviewer.
I was positively eager to hear the feedback. Two days after my interview I wrote an email to recruiter to thank them for their time and help with the process. Recruiter shortly replied asking me for a few time slots the same day to speak. I was intrigued because last two times I had failed Amazon interview I simply received a thank you email telling me that they're not moving forward but until I hear word offer, I was not going to be optimistic. On the phone as well recruiter started by asking for my feedback on the process. Then she said, "I do have the feedback from the team about your interview, and then she paused". I started feeling a bit concerned at this point because the tone with which the recruiter said that line sounded like it was bad news. And then came the line "We would like to make you an offer for SDE II role, congratulations!"
My wife who was listening to the conversation so we both started jumping with joy! I had a party that weekend with friends without disclosing the reason for the party of course because until you join and start work, nothing is confirmed!
Later that day I received an email once again congratulating me on my offer and introducing me with the closing recruiter. Closing recruiter and I spoke over the phone regarding salary expectations, start date, and immigration, etc. I felt I achieved my dream so I'm now thinking what next?
I have been working with a closing recruiter for the last couple of weeks to decide on a team. I had agreed to join one team but that didn't work out as that team had someone internally fill-up spot before I did and that team only had one spot left so now I'm in talks with another hiring manager/team. Hopefully, things will get finalized soon!
If anyone had a similar situation where they went through team matching process post-interview, please share it in comments if you can!
If any of you are preparing for the interview - Good Luck to you!
EDIT - June/15/2020:
Offer details: https://leetcode.com/discuss/compensation/690508/Amazon-or-SDE-II-L5-or-Pittsburgh-or-May-2020