Amazon SDE II
Location: London
Years of Experience: 3.5
LC: 350
Date: Jan 2021
Just sharing my experience, hoping it will be of help to someone else! Will not disclose exact questions due to NDA.
A little background on myself, I hold a Bachelor Degree in Software Engineering from a university outside of the US/India. I graduated 3.5 years ago, and never really practiced any actual coding exercises till March this year, when I was contacted by a Facebook recruiter through LinkedIn.
It's a long post, so if you are only interested in the Amazon experience, feel free to scroll down.
Facebook Phone Screen
After my initial screen with the interviewer, I found out about Leetcode (never really heard of it before that tbh), and grinded for more than 1 month continuously.
Looking back at it now, I did everything wrong. Instead of focusing on actually understanding the different exercises, I decided to kind of memorize the top 90-100 most popular FB questions. I did the entire FB Explore Card as well. I even created a document where I included the exercise statement, the solution, and the time/space complexities for each exercise. I even got to a point where I could read the first 3 or 4 words in the problem statement and already knew what the solution was, completely insane.
Little did I know...
The day of my phone interview arrived. They were medium easy exercises I have seen, but with some variations. For some reason, I struggled to solve them. I missed a crucial edge case, did not arrive to the optimal solution, and failed to say the time and space complexities. You can already imagine what the final result was.
New and Improved Strategy
After the awful experience, I decided to take a couple of weeks off LC (make sure to take regular breaks, otherwise you will probably burn out), and decided to approach my preparation in a completely different way.
I decided to start from scratch, and focused on a DFS strategy. Every week I was going to focus on one or two of these subjects, and try to do as many exercises as possible, until I mastered them. I divided the subjects into several categories:
I used mostly the Explore Cards here in LC, some YouTube videos whenever I found a subject really tricky, CTCI, and the solutions and "Discuss" section here. Some really smart people have already done a lot of thinking for you, so please make sure to check the "Discuss" section in every exercise you do, even if you got it right in the first try.
For System Design, I used Gr***ing the SDI exclusively.
Amazon Interview
I was referred to by a friend. Two days after he submitted the referral, I received a link for the OA.
Amazon OA
I was able to pass all test cases in one of them, and the other one just partially. As a suggestion, please make sure that you comment your code, format it properly, and make sure to give a good explanation on your approach (there is a special section for this), including time and space complexity. I believe this is what got me through it.
2 days after submitting, I received an email to coordinate my onsites (yes, no phone interview, don't really know why). Also, I had a call with a tech recruiter who gave me an idea of how the interview was going to be, along with a couple of hints.
Amazon Virtual Onsite
System Design - This was by far the best interview. The interviewer was super positive, fun, extremely accommodating. Started with 2 or 3 questions on LP´s with follow up questions, and went on to System Design for the last 20 - 25 minutes. The exercise was pretty similar to one that what you would find on Gr***king the SDI. In fact, it was more of a discussion than an actual System design interview. I used Google Drawer, outlined each component, and talked about the usual stuff, how to store data, server, load balancing, cache. He asked follow up questions on how the system would scale and different scenarios, nothing too tricky.
Coding 1 - 2 LP´s and Medium exercise on Trie Structure (make sure you know how to use a Trie, the Explore section here has a really good card on it). Really similar to an Amazon tagged exercise.
Coding 2 - 2 LP´s, then started with an extremely simple exercise, and afterwards, the interviewer started adding complexity, to see how I adapted my solution so that it scaled. The interviewer was testing my knowledge on Object Oriented Design, which I use in my everyday work, but had not prepared for the interview. This was almost a disaster, my solution was far from good.
Coding 3 - 2 LP´s and Medium super popular Amazon tagged question.
Summary
Honestly I did not feel that I was going to pass, since the entire coding part was far from good.
However, if you have been preparing for Amazon, you definitely know how important the LP´s are. Well, this is yet another post that suggests you to really prepare for these. A user here on LC created this, https://www.principle.cards/ it was extremely helpful for me.
One thing that took me off a little bit, was that in all interviews, the interviewers told me exactly what were the 2 principles that they were interested in, and only after that they asked me the actual question. In most occasions, I had already prepared an example for that specific question, but the example was not linked to the actual LP that they were looking for, so make sure to adapt your examples to whatever LP they are looking for.
Finally, one last piece of advice. Please, PLEASE, avoid remembering the exact questions, but rather focus on learning the actual patterns, data structures, and logic behind each exercise.