Status: SDE-2 in a Product-Based Company
Position: SDE-2 at Amazon
Location: Bengaluru, India
Date: July 2024
Preparation Background
I was working in a product-based company with 5 years of experience, primarily focused on Java backend development. Initially, I started preparing casually at the beginning of the year. My first interview was with Oracle in March, where I performed poorly and got rejected. After that, I began focused preparation.
DS/Algo
I spent the next 3-4 months grinding LeetCode, focusing on topics like Dynamic Programming (DP), Backtracking, Graphs (DFS, BFS, Dijkstra's, and Union-find), and Sliding Window problems. Striver's topic-wise playlist was especially helpful, particularly for DP.
LLD
I mainly studied common design patterns from the book Head First Design Patterns and supplemented this by watching YouTube playlists by Udit Agrawal and Concept & Coding.
HLD
I completed both volumes of Alex Xu's System Design Interview. Additionally, I casually reviewed tech blogs from various companies, as well as content from Arpit Bhayani and other YouTube channels.
In May, I applied to Amazon through a LinkedIn connection who referred me for a team in Hyderabad. Within an hour, I received the HackerRank test link. I had heard that questions often get repeated in Amazon's Online Assessments (OAs), so I took two days to practice all the questions from the discussion section on LeetCode. Once I felt confident, I took the test. Fortunately, one of the questions was exactly the same as one mentioned in a post, which was a LeetCode Hard problem. The other question was LeetCode Medium, which I completed in 10 minutes.
I was confident after the test since all my test cases passed. I then started preparing for the onsite interviews. However, I didn't hear back for the next two months and assumed the position had been filled. In July, I received a call from a TA for a different team in Bangalore. By that time, I had offers from other mid-sized companies and was already serving my notice period at my current company. Nevertheless, I decided to give it a shot.
The TA informed me that they would proceed directly to the onsite interviews and try to complete all four rounds within 1.5 to 2 weeks, as they needed to fill the position quickly. I agreed to try my luck, even though my preparation had already peaked.
Round 1: DS/Algo
The interview started with some greetings and initial discussions, which I thought were casual conversations related to my current projects from my CV. Later, I realized it was a Leadership Principle (LP) question, and I hadn't answered it well. The interviewer then moved straight to the problem statements.
The first problem was a prefix sum LeetCode Medium question, somewhat similar to LeetCode 238. I was able to provide the optimized approach and code it within 10 minutes. The interviewer seemed satisfied and proceeded to the next question.
The next problem was a matrix DP Hard question. After thinking for 5-7 minutes, I started explaining the recursive approach, but the interviewer interrupted me, asking why a greedy approach wouldn't work. I tried to convince him with some test examples, but he wasn't satisfied. He asked me to proceed with the recursive approach, which I was able to solve in the last 15 minutes. It turned out to be a 4D DP problem. He then asked me to solve it in 3D, but I couldn't come up with a solution, so he asked me to wrap up.
Verdict: Weak Hire
Round 2: DS/Algo
This round was scheduled for the very next day. The panel directly jumped into LP questions, which I answered using the STAR pattern. Then, we moved straight into the problems. The first was a standard LeetCode Medium two-pointer problem related to intervals, which I solved quickly. The second question was a range-based problem, a standard segment tree question. I hadn't practiced any segment tree problems since my graduation, but I knew that square root decomposition is an alternative approach for such problem statements. I was able to write clean code with some edge case handling. The interviewer seemed satisfied with my approach.
Verdict: Hire
Round 3: Hiring Manager
After the initial introduction, the panel gave me a design problem: to design an OTT platform like Netflix or Prime Video. I started with requirement gathering, both functional and non-functional, and then did a capacity estimation. It was a very interactive interview. The focus was on how the personalized feeds for users would be designed and how movies and TV shows would be streamed to devices. We had a good debate on push vs. pull CDN approaches and the scalability of the herd problem in case of a popular show release. In the end, the Hiring Manager asked me LP questions. This was my best round.
Verdict: Strong Hire
Round 4: Bar Raiser
I was expecting this round to be an LLD round and anticipated being grilled, so I asked the TA for at least 3 days to prepare, which he agreed to. I practiced a lot, focusing on handling concurrency and design patterns. However, when the interview started, I was surprised by the first question: a standard LeetCode Medium/Hard backtracking question. I was able to solve it quickly in 15-20 minutes and explained it to the panel using a dry run. Then, I was given another LeetCode Medium/Hard question similar to the Word Ladder problem. I was able to code this one too in 20-25 minutes, along with a dry run. The interviewer then grilled me on LP problems for at least 15-20 minutes, but in the end, he seemed satisfied with my answers.
Verdict: Strong Hire
I received a verbal confirmation from the TA within 2 days that they were proceeding with my candidacy and asked me to share my details.
Compensation Details: https://leetcode.com/discuss/compensation/5543053/Amazon-SDE-2-IN-Offer