Episode 12: Amazon interview
Amazon interview was 2x more deliberate than Microsoft: 6.5h with 7 interviewers + a writing exercise offline.
Principal Engineers write a lot of docs that are read by many people, so a part of interview is to assess your writing skills. The writing exercise is a 2 page narrative that should avoid bullet points/sections. It is assessed for clarity of thought/expression (i.e., did you explain your point well?) and organization/structure (i.e., does it flow? does it make sense?).
The essay must be on one of two given topics. I had good stories on both; one of them is a bit nuanced — it would be cumbersome to explain it verbally (I could mess it up if I tried). Thus I chose the more nuanced story for the writing exercise — this enabled using this good story without a risk of screwing it up, and this was an opportunity to demonstrate my ability to explain something nuanced in a narrative that flows.
I was asked if I want to do 6.5h of interviews in one day or span to two. Obviously I chose two, for my sanity, and to be able to reflect on interviews of the first day, learn my lessons and apply them on the second day.
I had 7 interviewers: my hiring manager, my recruiter, 3 Principal Engineers and 2 Senior Principal Engineers 😲. I did not stalk Amazon interviewers as much as Microsoft. All but one interview were one hour long. I won't list each interview, but here a couple that stuck out:
1) Sr. Principal on dev tools for internal teams. Full hour for design of a system I built. Two things caught me by surprise:
- I expected to do a system design of a hypothetical system, not a real one. I had to quickly decide which of the two systems to describe. Later I regretted my choice.
- The diagram app that Amazon suggested to use (awwapp) stopped working, or at least I could not get it work. I had to quickly switch to excalidraw.com instead and did not regret (nice hot keys).
2) The recruiter assessed me on interpersonal LPs for 30 min, primarily earn trust, hiring and develop the best, and insisting on highest standards.
3) Principal Engineer who shipped AWS Wavelength. 30 min LPs and 30 min coding. The coding problem was interesting - there was a bit of graphs, but mostly it was about concurrency — a crawler in a single process. I used Go, so concurrency was pretty easy. I used packages errgroup and semaphore and almost used sync.Map. Coding was fun, as always.
4) Sr. Principal Engineer, co-creator of EC2. He was Principal Engineer when I only started coding in school, and he has an extremely serious face expression on his LinkedIn profile -- I was pretty nervous... but in reality this was the most fun interview because it was the most technical.
He asked me to implement a simple flood fill algo on a bitmap (matrix of 0s and 1s). I typed it up quickly -- I guess this problem was to ensure that I can still code.
Then he gave me a class in Java to review. The code was (intentionally) shitty: hard coded connection string, login and secrets; violations of the SRP, poor Java API, not closing resources (connections, record reader), sequential RPCs, SQL injection, fetching data from DB and then not using it, doing aggregation locally. I asked what kind of primary/secondary indices exist, how data is organized physically, whether the db engine supports UDFs (one of the aggregation functions was a decay func), etc.
5) Two more PEs spent 30min on LPs, and 30 min for a design of a hypothetical system. I emailed one of them with more design ideas after the interview #yolo.
————————
Overall, 6.5 hours:
- 2h=1+0.5+0.5h of SDIs
- 0.5+0.7h of coding
- the rest is LPs
Amazon interview loop certainly felt tougher than Microsoft, but still I felt good about it, especially when an interviewer reveals their satisfaction from the conversation.
This was 1w after MSFT interview. Microsoft/Amazon promised a response within 2w/1w, so I expected both results at about the same time.
Amazon interview was 2x more deliberate than Microsoft: 6.5h with 7 interviewers + a writing exercise offline.
Principal Engineers write a lot of docs that are read by many people, so a part of interview is to assess your writing skills. The writing exercise is a 2 page narrative that should avoid bullet points/sections. It is assessed for clarity of thought/expression (i.e., did you explain your point well?) and organization/structure (i.e., does it flow? does it make sense?).
The essay must be on one of two given topics. I had good stories on both; one of them is a bit nuanced — it would be cumbersome to explain it verbally (I could mess it up if I tried). Thus I chose the more nuanced story for the writing exercise — this enabled using this good story without a risk of screwing it up, and this was an opportunity to demonstrate my ability to explain something nuanced in a narrative that flows.
I was asked if I want to do 6.5h of interviews in one day or span to two. Obviously I chose two, for my sanity, and to be able to reflect on interviews of the first day, learn my lessons and apply them on the second day.
I had 7 interviewers: my hiring manager, my recruiter, 3 Principal Engineers and 2 Senior Principal Engineers 😲. I did not stalk Amazon interviewers as much as Microsoft. All but one interview were one hour long. I won't list each interview, but here a couple that stuck out:
1) Sr. Principal on dev tools for internal teams. Full hour for design of a system I built. Two things caught me by surprise:
- I expected to do a system design of a hypothetical system, not a real one. I had to quickly decide which of the two systems to describe. Later I regretted my choice.
- The diagram app that Amazon suggested to use (awwapp) stopped working, or at least I could not get it work. I had to quickly switch to excalidraw.com instead and did not regret (nice hot keys).
2) The recruiter assessed me on interpersonal LPs for 30 min, primarily earn trust, hiring and develop the best, and insisting on highest standards.
3) Principal Engineer who shipped AWS Wavelength. 30 min LPs and 30 min coding. The coding problem was interesting - there was a bit of graphs, but mostly it was about concurrency — a crawler in a single process. I used Go, so concurrency was pretty easy. I used packages errgroup and semaphore and almost used sync.Map. Coding was fun, as always.
4) Sr. Principal Engineer, co-creator of EC2. He was Principal Engineer when I only started coding in school, and he has an extremely serious face expression on his LinkedIn profile -- I was pretty nervous... but in reality this was the most fun interview because it was the most technical.
He asked me to implement a simple flood fill algo on a bitmap (matrix of 0s and 1s). I typed it up quickly -- I guess this problem was to ensure that I can still code.
Then he gave me a class in Java to review. The code was (intentionally) shitty: hard coded connection string, login and secrets; violations of the SRP, poor Java API, not closing resources (connections, record reader), sequential RPCs, SQL injection, fetching data from DB and then not using it, doing aggregation locally. I asked what kind of primary/secondary indices exist, how data is organized physically, whether the db engine supports UDFs (one of the aggregation functions was a decay func), etc.
5) Two more PEs spent 30min on LPs, and 30 min for a design of a hypothetical system. I emailed one of them with more design ideas after the interview #yolo.
————————
Overall, 6.5 hours:
- 2h=1+0.5+0.5h of SDIs
- 0.5+0.7h of coding
- the rest is LPs
Amazon interview loop certainly felt tougher than Microsoft, but still I felt good about it, especially when an interviewer reveals their satisfaction from the conversation.
This was 1w after MSFT interview. Microsoft/Amazon promised a response within 2w/1w, so I expected both results at about the same time.