Amazon UK: How I passed the interview
This post is the third in my mini-series about software engineering interviews. The first post was about Booking.com, the second one was about Google, and this one is going to be about Amazon UK. I received an offer and ended up joining a backend team in the Video department.
The Amazon interview looks similar to the interview process of Booking.com and Google, but there are some important differences. In this post I will focus mainly on those differences while leaving technical preparation to another post. I will also give my perspective on the internal process.
In my case, there were two interview rounds. The first round was an online test on Hackerrank: one non-trivial algorithmic question with a time limit of 75 minutes. Similar platforms might be used instead: I heard of screening interviews on Codility (like TopTal).
The question itself was harder than the question in Google phone screen and any of the five questions in Booking.com Hackerrank test. The time was plenty, though, which puts the focus on algorithmic problem solving rather than speed. I personally finished a bit earlier than the time limit, taking plenty of time to double check my solution. It was required to explain the approach and give the complexity in the comments.
I would suggest preparing in the same way as other algorithmic interviews: solve problems from Cracking the Coding Interview and InterviewBit. For more problems, another good book, which I haven't mentioned before, is Elements of Programming Interviews. It is basically a deeper version of Cracking the Code Interview, available for multiple programming languages. Another good idea is doing warm-up mock interviews: I used InterviewBit and Pramp for it, both free of charge. There is much more to say about technical preparation and I will go deeper in a future post. Leave a comment below and/or subscribe to the RSS feed if interested.
After passing the Hackerrank test I received an email that invited me in London for an onsite round. A recruiting coordinator booked flights and (budget) accommodation and let me know that Amazon was going to cover transport, but not food, expenses.
Finally, a call with the recruiter revealed the structure of the onsite round:
- one system design interview (with the bar raiser)
- one object-oriented design interview (with a manager)
- two algorithms and data structures interviews
Interviews were scheduled to be from 8:00 am to roughly 12:00 pm, without lunch. They are around 50-55 minutes long with little breaks in between and a longer break after the second one. During this break, I would meet up with the recruiter and chat about HR topics, e.g. salary.
The recruiter also stressed the importance of preparing stories that show how I showcased Amazon's leadership principles. in my previous work. I will cover these topics in the following sections.
The importance of behavioral questions
A bit atypically from other big companies, Amazon focuses a lot on behavioral questions. All my four interviews started with such questions and they took almost half of the time. Interviewers want to see how you applied Amazon's leadership principles in your previous work, although some questions don't ask for them directly. Compared this with Google, where the behavioral questions were zero to five minutes.
The recruiter will tell you to prepare about 9-10 stories but I suggest you prepare way more, say 15 or more. Each interviewer ask at least two questions. Some interviewers ask questions on previously asked principles and you don't want to recite the same story again and again. In fact, since each interviewer takes notes diligently, having too many duplicates won't look good to the hiring committee.
Finally, it is a good idea to structure your stories using the STAR framework: Situation, Task, Action, Result. You want to show your particular contribution to the task and avoid general team contributions. This will show sharpness and confidence.
An interesting difference of Amazon from other companies is the use of a "bar raiser". This particular interviewer has the goal of keeping the bar high and ensuring high standards throughout the hiring process (this incidentally is also a leadership principle).
There are lots of internet stories about bar raisers: for example, I heard that you can be hired only if you are better than 50% of the people of the team you're interviewing for, and that "bar raiser" is a "martyr" role in the company, that is, it brings no particular career advantages. I cannot tell for the latter but in my case the interview felt relatively easy and the senior manager was very easy to communicate with. I don't know if the bar raiser is always the system design interview, but you can ask the recruiter.
Object-Oriented Design interview
Another interesting quirk of Amazon interviews is the OOD interview. I was a bit surprised when the recruiter told me, even if OOD questions are mentioned in Cracking the Code Interview. To be totally honest, I haven't prepared deeply for this kind of questions and, probably, it was my worst answer. I'm not a fan and I haven't drawn many class diagrams in five years of work. (Conversely, I love diagrams for designing systems or communicating at meetings)
During the interview, I followed a structured approach:
- Clarify question and requirements
- Follow up defining basic classes
- Add relationships
- On request, sketch some implementations
Algorithms and data structures interviews
The algorithms and data structure interviews were really similar to Booking.com and Google, so I won't cover the same ground here. The questions were harder than Booking.com but easier than Google and I had about 25-30 minutes for the solution.
A note of praise for Amazon is the whiteboards. They are the best whiteboards I've ever seen, spanning entire meeting rooms. This was a better experience than both Google, where I had to wipe in the middle of a solution, and Booking.com where I had to use paper.
Team selection and offer
After passing the interviews, you will have two additional interviews for picking your team: the first team will be chosen by you from a given list and the second will be chosen by Amazon. In my case, I gave the recruiter my top two choices and I managed to pick from them both.
Next, you will receive an informal offer via email: you can and should negotiate it, see an example script at the end of the Booking.com post. At this stage I asked the recruiter more time to finish my other interviews. Surprisingly, I got away with weeks. Finally, some days after you accept the offer, you will receive a long formal contract with all the details.