I recently received offers from Amazon and Meta while pursuing my Masters from Stony Brook University in New York. I will soon be joining Amazon Sunnyvale office as an SDE 2. I am sharing my interview experience below.
Background
I came to the US in January 2021 to pursue MS in CS from Stony Brook University. Before that, I had three years of relevant work experience working at Visa in Banglore, India. I actively started applying for full-time positions in the last semester of my Master’s i.e beginning January 2022.
Interview preparation
Since I was scheduled to graduate in the spring semester, I began interview preparation a semester in advance, or around August 2021. However, juggling schoolwork and interview preparation is challenging, so I established a schedule requiring me to dedicate 2 hours each day during the week and extra time on the weekends. I had three months to prepare for the interviews because a lot of companies start hiring in November for spring grads. Since I was targeting mid-level and senior engineering roles I had to focus on these topics in particular: DS/Algo, High-level design, Low-level design and Behavioural questions.
For DS/algo preparation I initially started with Leetcode curated 170 algorithms questions which helped me to brush up on the common algorithms. I covered the majority of the sorting algorithms, graphs (BFS, DFS, Shortest Path), and standard dynamic programming algorithms (Coin Change, Combination Sum, etc). I also began consistently taking part in the weekly competition, which helped me how to approach a problem in a time-constrained setting like an interview. I then mostly concentrated on tagged problems and interview experiences.
For high level design preparation I have written another post here separately :
For low level system design I initially went through design patterns and grokking the object-oriented programming course from the educative (https://www.educative.io/courses/grokking-the-object-oriented-design-interview). For design patterns I highly recommend this book.
Getting calls
This is a tricky part at least here in the US, unlike in India. I worked a ton on my resume and linkedIn profile to get relevant calls. I also designed my portfolio page which was useful while applying to a few startups. I used Resume Worded to get a score on my resume. It’s super helpful with relevant feedback and would recommend it when you are working on your resume. I actively started applying around November and got a few calls from startups. Around January I got in touch with recruiters from Amazon and Meta.
For the next 2 months, I went through the online assessments, virtual onsite’s involving 4 technical rounds including high-level and low-level design rounds in Amazon and 3 technical rounds in Meta. Around mid-march, I got verbal confirmation from Amazon. I interviewed for the L5 position at Amazon and hence, I did not accept the Meta offer which was for the E3 position. However, I enjoyed the interview process for both companies as they tested me on relevant technical and leadership skills.
I am sharing my onsite experience below. However, since I have signed the NDA I won’t be sharing the exact questions. I will discuss how I prepared for each round and the preparation materials around them.
Amazon Virtual Onsite
- The first two rounds involved coding questions focused on data structures and algorithms. Each round began with a 15 to 20 minute behavioural discussion, followed by technical questions. I followed Dave Anderson’s blogs to read about the Leadership Principles —
- Typically, there are 1–2 questions in the DS/Algo round, each with a follow-up. One of the questions involved sorting and storing log data, while another was focused on BFS/DFS traversals. Each topic had follow-ups, such as scaling to millions of users, error handling, threading concepts and optimising run time. It was expected that the code would be modularized, production-ready, with proper exception handling.
- The high level round started with me clarifying the design requirements and scope of the discussion. Then I started with high level design of the problem and then went to discussing specific components. Most of my discussion was around the database (Cassandra) and scaling the storage part of the design. We discussed the sharding strategies and caching solutions for this part. Later moved to the API part of the design. Follow this link on how I prepared for high level design —https://shreyash-hisariya.medium.com/system-design-resources-for-sdes-aee848f8ec3c
- In the low-level design round, it was expected to write a production-ready code using appropriate OOPs patterns and classes. I practiced common design patterns before the interview so was able to figure out the class structure and was quickly able to code it using strategy design pattern. There were follow-ups on to check if my code can adapt to new changes and is modular. After discussing behavioral questions you will have hardly 30–35 minutes to complete the round so you need to prepare thoroughly for the design rounds.
Excited to part of the Amazon culture. The medium community helped me a lot during my preparation and this post is a part of giving back. Reach out to me if I can help in anyway!