7 months with Amazon | New Grad/SDE I | Seattle | Reject | August 2020 - March 2021

amazon logo
amazon
software development engineer iseattle, waRejected
March 30, 20212 reads

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)

Q1
Design Search Autocomplete System
Data Structures & AlgorithmsHard

Implement a search autocomplete system. This involved designing a system that would suggest queries as I typed. I found it similar to the LeetCode problem 'Design Search Autocomplete System'.

Q2
Longest Path in Matrix with Consecutive Differences
Data Structures & AlgorithmsMedium

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.

Q3
Two Sum (with follow-ups)
Data Structures & AlgorithmsEasy

The coding question was 'Two Sum', asking to find two numbers that add up to a specific target, with the clarification that there could be multiple solutions. This was exactly like the LeetCode problem.

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.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!