How to pass an Amazon interview as a Software Engineer
A few months ago I found myself having to look for a new job, due to uncertain economic times. At around the same time, a recruiter from Amazon contacted me, asking if I was interested in applying for them. I was never keen on working for tech giants but I took it as a worthy challenge, and started preparing for the interviews. I eventually passed all the rounds, and started the offer phase, though for various different reasons, I ended up going for another role at a smaller company. This post will summarize my strategy with the hopes that it might be useful for someone else out there.
A few points to note before I start:
- I will not go into specific details about the interview questions (due to legal and common courtesy reasons)
- This worked for me, a particular person at a given point in time, with a given background and in a given context - your mileage may vary
- Even though I have specifically prepared for Amazon, the learning and practice was very educational and I think this could be useful for other tech interviews as well, and not just for tech giants
- I will keep this post short and sweet, and pragmatic. You can read all about Amazon’s interviewing process from hundreds of other sources (including their emphasis on soft skills, their so-called “bar-raiser” interviewer, and so on)
# The interview process
The interview process was long and composed of many steps. These are the ones that I can remember.
- Coding test
- A HackerRank-style, timed coding exercise involving two tasks, one easier and one on the mid/hard side. For the second, more difficult task, I was not able to get all the tests to pass. However, it seems like this is not a dealbreaker, as I was notified by the recruiter that I passed this stage.
- Generic and high-level quiz about time complexity, databases and the cloud. This included some AWS products and so it doesn’t hurt to learn about those, possibly by perparing for an AWS cert (like this).
- Call with the recruiter
- This was a series of 10-15 quick-fire questions about generic CS notions like time complexity of certain algorithms, caching strategies, data structures, etc.
- Main “on site” interview
- This was the big thing, consisting of four distinct interview rounds, with four different set of interviewers. Out of the four rounds, three included coding, and one was system design. All four included questions about leadership principles. It’s about one hour each, with 15 minute breaks between them, so it’s really almost a day-long interview round. I won’t go into details about the exact nature of the tasks, but if you follow the next section, you will be well prepared for all the rounds.
# Hard skills
I had a fairly simple stategy - I used two main sources:
- Structy is by far the best hands-on educational course I’ve ever come across. Alvin is a fantastic teacher and the platform is well worth the investment of subscribing to it for a couple of months or a year. As I’ve followed the course from start to finnish, I started to realize that I’m actually getting better at solving problems that I could never do on Leetcode and similar sites. The structure of the course is so good that most coding tasks on interviews are a twist of one of these fundamental problems that Alving shows you how to solve. For algo and data structures, do not look further, this is really sufficient and super enjoyable.
- I used this course for system design and the knowledge really paid off during the system design interview.
- I did some Leetcode challenges (maybe 10 overall, so really not much). I focused on graph problems.
- I read a few chapters of Designing Data Intensive Applications (which is the holy Bible of distributed systems) to refresh my knowledge about these things.
# Soft skills
I purposefully prepared for the soft skill questions by reading and understanding the leadership principles of Amazon, and by trying to find examples that would showcase these in my career. I have written down many examples into a spreadsheet, and memorised them, so that even if I run out of ideas, I had this backlog of anecdotes to tell. This worked out well and I can recommend doing it in a written form.
The Amazon interview process was a positive experience. Even though I did not end up working there, I learned a lot for the interviews, and it definitely helped me refresh or even boost my knowledge in many areas.
As a last tip, I cannot emphasize the importance of structured practice of algo/data structure problems with Structy. The knowledge return on time invested is higher than on any other site or method that I’ve used before.