7 months with Amazon | New Grad/SDE I | Seattle | Reject | August 2020 - March 2021
Summary
I interviewed for an SDE I New Grad position at Amazon in Seattle from August 2020 to March 2021. Despite making it to the final interview rounds, I was ultimately rejected, largely due to my struggles with a system design question and specific data structures.
Full Experience
The Start
This whole process began in Summer 2020 after the job I had lined up post-graduation was eliminated due to COVID. I was actively searching for new opportunities, and one of them was the new grad SDE position at Amazon, given my prior tech internship. I applied in August 2020 and swiftly completed all three Online Assessment (OA) rounds within a few weeks.
- OA1: Debugging exercises. I managed to get 5 out of 7 correct before time ran out.
- OA2: Two coding exercises, which I felt were LeetCode Easy/Medium. I successfully passed all test cases for both.
- OA3: A lengthy workplace simulation, testing Amazon's Leadership Principles, which notably involved a lot of email-based communication.
Silent Period/Callback
After the OAs, I didn't hear back for a long time and assumed I had been rejected, moving on to a non-CS job. However, in mid-March 2021, I surprisingly received an email from a recruiter inviting me for a final round interview within the next two weeks. Despite the extremely short notice, I accepted the opportunity.
Preparation
Given the short timeline and having experienced some skill rot in my non-CS job, I immediately jumped back into LeetCode. I focused on re-learning core data structures such as stacks, queues, linked lists, graphs, heaps, and trees. I knew that learning algorithms from scratch in just two weeks was nearly impossible, but I gave it my best shot.
Final Interview
I faced three 45-minute interviews with 15-minute breaks in between.
Interview 1: System Design (and Coding)
To my surprise, the first interview was System Design. After initial introductions and a couple of Leadership Principle (LP) questions, the interviewer, who seemed very focused on 'Ownership' and 'Have Backbone; Disagree and Commit,' proceeded to a coding question: Implement a search autocomplete system. This problem was very similar to the LeetCode question 'Design Search Autocomplete System'.
I realized immediately I was at a disadvantage as I hadn't studied tries, which is the optimal solution. I tried discussing other Java data structures like hashmaps and binary search trees. The interviewer questioned why I didn't start with a brute force solution, and I explained my reasoning against inefficient O(n^2) scaling. Eventually, I suggested a trie-based approach, but critically, I admitted my lack of understanding of them, which was a huge mistake. I attempted to implement a Node class for a trie using a HashMap for children but ran out of time. This interview significantly deflated me, and I felt it was likely what sank my chances.
Interview 2: Bar Raiser (Coding)
The next interviewer, a Bar Raiser, quickly moved to the coding question: Find the maximum length path in a matrix where elements only differ by 1 in increasing order, moving left, right, up, or down. For instance, a path could be 1-2-3-4-5-6. I found this conceptually similar to 'Number of Islands' but not the same solution.
I discussed and implemented a Depth-First Search (DFS) approach, dry running it through an example. I proposed two optimizations: using a visited matrix to prevent revisiting cells and making recursive calls only for in-bounds positions. The interviewer helped me fix a minor bug in the second optimization, and he accepted both. I also discussed time/space complexity. While a Union-Find solution might have been an alternative, I wasn't confident enough to pursue it. After the coding, we covered a few LP questions, which I felt went reasonably well, making this a good interview overall.
Interview 3: Stranger Things (Coding)
Entering the final interview with renewed confidence, I was first asked to walk through my resume, which I found unusual for an Amazon interview. After some LP questions, I was presented with the coding challenge: Two Sum! This was exactly as stated on LeetCode, with the clarification that multiple solutions could exist.
After a quick sanity check for hidden constraints, I immediately discussed and implemented both the brute force and the two-pass hash map solutions, detailing their time/space complexities. The standard follow-up involved a sorted input list. I first implemented the non-optimal binary search approach, then the optimal front/back two-pointer approach, again discussing complexities. This interview went very smoothly, and we had time left for my questions.
The End
Despite feeling I had recovered well in the later rounds, I knew my odds were not great, considering the competitive landscape and my limited preparation time. A few business days later, my 7-month journey concluded with a second rejection. I was okay with the outcome as I already had a job, but I reflected on the impact of my struggles in the first interview, particularly not mastering tries, and potentially my LP answers, coupled with my non-CS background.
Interview Questions (3)
I was asked to find the maximum length path in a matrix, such that path elements only differ by 1 in increasing order. Valid moves were one step left, right, up, or down. For example, a valid path would be 1-2-3-4-5-6. I found this question most similar to LeetCode's 'Number of Islands' conceptually, though not the exact solution.
Preparation Tips
After receiving a callback with short notice, I jumped back on LeetCode. I focused on re-learning data structures like stacks, queues, linked lists, graphs, heaps, and trees. I acknowledge that two weeks wasn't enough time to learn algorithms from scratch or fully prepare.