In this post I'd like to talk about the recruiting process I experienced for the role of an SDE Intern at Amazon.
Personal Background
Online Application
Applied for this job position on August 23, 2020.
Online Assessment
OA1
Received on Jan 7, 2021.
I was surprised by how long it took them to reach back (over 4 months).
The assessment required me to debug 7 buggy code implementations in 20 minutes.
It wasn't too hard but I kinda screwed up and ended getting 4/7 right.
OA2
Received on Jan 9, 2021.
This included a coding assessment (70 minutes) which was algorithmic based and a workstyle assessment (20 minutes) based on Amazon's LP.
The coding assessment had two questions -
OA3
Received on Jan 13, 2021.
This was a work simulation assessment. Honestly, this was really interesting. Most of the questions were behavioral in nature, but a few problems required to debug code, suggest better implementations, etc.
Virtual Onsite Interview
Before the interview
I received an email to schedule the interview on Jan 28, 2021.
I scheduled the interview for Feb 9, 2021.
In those few days, I really didn't do too much Leetcode because I had a bunch of coursework to do.
However, I did rigorously practice Amazon's LP. I made around 8 stories in total that would together cover all the LP.
The Interview
After the interviewer introduced himself, he asked these two behavioral questions -
Then, I was asked these two technical problems-
Remove all duplicate numbers from a list.
Example - [5,1,1,2,3,1,2,4,4,1] -> [5,1,2,3,4]
For this problem, first I suggested a brute force solution [time - O(n^2), space - O(n)].
Then I suggested a optimized solution using hash sets [time - O(n), space - O(n)].
First, I suggested a brute force where every getMin() operation would take O(n) time.
Then, I suggested a more optimized solution that would require constant time for every getMin() operation. However, it came with the constraint that we would be needing extra O(n) space.
I was also asked to implement exception handling to deal with situations when you call pop() or getMin() on an empty stack.
Interestingly, I wasn't asked to actually compile the code. Also, a lot of emphasis was given on correctly stating the complexities of the implementations.
After the interview
I was pretty happy with the way the interview went. However, I wasn't really confident since I had already been rejected by a ton of companies.
However, I got the good news on Feb 11, 2021, and I immediately accepted the offer.
Reflection
I feel like to pass the onsite interview, you must demonstrate stong leadership principles and communication skills. The problems weren't too hard so I'm guessing they're looking to see if you can clearly explain your thought process. Although, at the same time, the OA2's second problem was pretty challenging.
My advice to everyone - JUST APPLY