The Amazon Interview Experience
Tags: webdev, programming, career, motivation
Published: 2022-02-28 18:08:34

First I declined to write this article but I got the feedback that people are truly interested in interviewing processes about the Big Ones (FAANG = Facebook, Amazon, Apple, Netflix, Google...) so here we go ♥️

tl;dr: This Post explains how I got interviewed by Amazon and eventually got an offer. 

## Why I declined
Before the question pops up let me reveal upfront: The offer was legit. However I declined the Amazon offer. Simply because I had a counter-offer at the time which was kinda identical and it didn't require me to relocate - which I didn't want to in pandemic times of embracing remote work more and more (only to notice I am going to be in Home Office in a different city).

## Who the F cares?
This is for people that want to understand how interviews in bigger companies work and for people that want to understand if it is "impossible" to get in. It's not. And you got not much too lose for trying. 

## Take it with a grain of salt
Please be aware of the fact that I report all of this from a perspective of someone that's been long time into tech. But that doesn't mean I know all the algorithms. In fact I barely know algorithms - sure it would be easy to re-learn those but I just didn't need to by now (business-wise). I'm certainly not learning any Dijkstra Algorithm by heart for an interviewing process. If they want me to then I'm out, for sure. 

---

## The **Flow**

1. I got contacted by a recruiter person for Amazon when I was working for Mercedes-Benz.io so maybe that was the reason, maybe not - who knows. But at the end of the day, the overall process would've been the same if I had applied or if you are recruited - there's no difference.

2. Having talked to the recruiter I was like "Yeah sure, Amazon, why not give it a try?" (I am never _hyped_ about a job since being hyped upfront might be the mother of disappointment. Amazon and Google are also just companies with people like you and me). 

3. The process explanation:

    1. Talk to the recruiter
    2. Have a Codility Test
    3. Run through a Live-Coding Test
    4. Meet the Team ~6 hours
    5. The offer

## 3.1. The Recruiter Call

I don't remember every single bit of the call but the internal Recruiter was a different one than the one that initially got in touch with me. Seems like they do split the work in that regard. The Recruiter was pretty friendly and available for all questions that I had upfront. He explained that there's gonna be a Coding Test and if that succeeds they will continue. I'm honestly not sure anymore if he exactly told me WHAT kind of process will follow but I am certain he would have if I had asked.

## 3.2. Codility Test

[Codility](https://www.codility.com/) is a famous tool for big companies to pre-select candidates. tldr: If you fail those tests fatally there is a good chance no person will even look at it. The tasks can vary extremely in complexity and type of challenge. But these can be chosen by the company. Codility is a time-limited Challenge. This was indeed stressful for me because knowing that you have limited time and there is no one to explain to what you might be currently stuck at stressed me out. Also there is no pause button. When you start it the time runs. The timespan was 125mins. I think I finished after like 70mins but eventually left everything open to check over and over again every line of code so I stopped at around 90mins or so.

The tasks are extremely clear. There is not much room for interpretation. Of course you can google stuff but that doesn't mean that your code will get better. Take care of your code structure, make it readable and even more so code properly. E.g. if Codility says that you can assume that the input is a number then don't build something like `if (isNumber)`. You waste your time and probably worsen your score.

Codility DOES provide a little bit of insights if you're completely wrong or not. Because there is a good amount of tests already added that you are free to run - and that really helps reassuring that you didn't code complete bullshit. But: Don't be fooled. Only because the 10 provided Tests run successfully doesn't mean that ALL TESTS will run - and you don't see all tests.

The Tasks I got weren't "out-of-universe" challenges. I felt like they were "real use-cases" which actually made the tasks fun. But still stressful.

## 3.3. Livecoding

Apparently my Codility challenge was very convincing so I got invited to the next step: A Coding Challenge with an actual person - Livecoding. I am not as stressed with those because meeting actual humans means that you are able to explain what you're doing. If you hate Livecoding then you will have a bad time honestly. 

I am anxious as well in some situations but you simply have to get over it. There is a company that potentially wants to hire you and you have to learn to not get a blackout. It's a person in front of you, not a killer. Maybe it helps to think of Teddy Bears instead, I don't know. If you do get blackouts with all live-codings then the really only thing I can recommend is: Seek help / consult the internet for tricks to overcome it. There is a lot of lovely tips out there. Seeking help is good and no sign of weakness. Everybody has their own weaknesses. 

Back to topic. The Livecoding was open for any language. The person asked me to process a few things and how I would approach certain things programmatically. 

I wasn't pinpointed to JavaScript. I could have equally used Python. The online editor provided supported syntax of multiple languages. However it didn't have a "Run" button which was kinda odd for me. So you couldn't confirm if what you're doing is "correct" - but maybe that was intentionally to pinpoint you more to explanations than actual results. You have to talk and explain. Talk a lot! You can't ever talk too much. Every single step of thinking: Say it. This allows the other person to follow your steps. Don't just be quiet and say "Here that's the result".

Also I had been asked a few other questions but the recruiter  prepared me upfront to read the Amazon STAR Technique (Find Info here: https://www.amazon.jobs/en-gb/landing_pages/in-person-interview). So it wasn't anything that came "unexpected" really.

**Again**: The Recruiter is your go-to person. See that person as your personal trainer for the processes. There is no "dumb" question - well maybe if you ask them what you should eat today, maybe that would be a "dumb" question.

## 3.4. Meet the Team

I was honestly right before backing off. I was told the next step would be to have _several_ interviews in an overall timespan of **6 hours**. I hate long-running interview processes. I appreciate it when companies give you options to talk but I have other stuff to do and lots of other people would've to take vacation days for that. 

What did I do? **I told the Recruiter**. Honesty is what's important for you and the company! I said: "I don't wanna be rude but I never in my life was thrown into such a huge process and I feel like I'm backing off after the first hour if I find it intimidating or not helpful".

The Recruiter was again very nice and said "Fair points, David." and continued to explain me why they do this.

The idea behind it is to _actually_ meet the team and have the different people in the team ask questions that might be more related to the field they are working in. Not only that but also it provides the candidate the option to get in touch with more than just the "gatekeepers of the company" (HR people).

Eventually, I found it nice because I liked the idea of meeting the team before making decisions. 
But it wasn't really a meet-and-greet. It was very friendly but serious at the same time (some more serious, some funnier).

In one Interview (I think there were 6 in total, one hour each) I was asked to do a little bit of Systems Design which I found a legit task for the role I was going for (Senior Frontend Engineer).

There were never more than 2 people from Amazon in each session. Mostly one asking, one ghosting (ghosting = learning how to do interviews).

The Team also asked me questions regarding the [Leadership Principles](https://www.amazon.jobs/en-gb/principles) of Amazon, especially in relation to my previous experience. Since I have a lot of experience I prepared those questions very well as well as I could.

The exact questions really don't matter because they are different each time anyway but they're in the format of "When was the last time you got a difficult challenge and how did you tackle it?".

But **none** of it like: "Where do you see yourself in 10 billion years?" - fortunately.

If you don't have a lot of work experience it might help to find relatable experiences within your life and answer with those but I would clarify with the internal recruiter upfront. The recruiter will certainly help you out with your concerns.

At the end of the 6-hour session, I was kinda exhausted. Not in a negative way but it's still a long time in which you meet different people that all have questions.

Normally that session would've been onsite. I was lucky enough for it to be online due to the Pandemic. And I also do think they should stick with keeping it online as I find it more convenient and avoid traveling (#environment).

## 3.5. The Offer 

The Recruiter wrote me first before sending over the offer like "David when's a good time to call you?". He said something like: "The team really liked you, you made an awesome impression and I would like to explain you the offer we have for you."

The Offer was good - especially if you consider its overall compensation package. I think it was an increase of about 15% salary as compared to my job at Mercedes-Benz.io at that time. It was slightly below my requested salary but that's okay because of what I'll explain now.

The Package included a signing bonus which would definitely cover a good part of moving costs including new furniture.

Far more interesting is the fact how they help you to get started. They want to free your thoughts from "doing all of the organizational stuff" 

I would get an individual that will help me find a flat -  so that person will literally take care of that so you can focus on the company - which is pretty neat.

At Amazon, you will often get additional RSUs (Restricted Stock Units). Those are Stocks from the Company which are provided to you in parts over time. So a *random example* of RSUs is: You get 50 RSUs promised now and you will get 10 after 6 months, another 10 after 12 months, etc. And since one Stock at Amazon is worth a lot it comes down to a very awesome compensation package the longer you stay.

RSUs are also a very good benefit keeping you in the company for a longer time.

Last but not least they will help your significant other to find a new job as well - if required. So they will make sure that you can move carefree together with your family. Which I indeed really appreciated.

## Summary

I hope this helps understanding potential interviewing workflows in big companies. To understand general recommendations about interviewing please also read my other post [Mastering Frontend Interviews](https://blog.activenode.de/mastering-frontend-interviews) which is definitely also for non-Frontend people.

## Questions?

Post all your questions here in the comments. I'd also appreciate to connect on Twitter: Find me on Twitter [@activenode](https://twitter.com/activenode)

Yeah, I think that's it. Hope you liked it.