My Amazon Interview Experience
Last week, I had the incredible opportunity to be interviewed by Amazon in Gurgaon for the Software Development Engineer (SDE) 1 role. The moment I received mail from Amazon’s HR, I knew an exciting adventure awaited me.
Online Assessment
The process started with an online assessment on the Amcat portal, which featured two medium-level coding problems. We had 1 hour and 30 minutes to solve them, and an additional 15 minutes to explain our approach and analyze the time complexity in detail—something I truly appreciated. Interestingly, both the problems had already been discussed on LeetCode, and since I had attempted it before, I was able to solve it smoothly within the time constraint.
After successfully passing the online round, I was invited for an in-person interview at Amazon's Gurgaon office. This stage of the evaluation involved four intense rounds, each lasting between 45 to 90 minutes. Interestingly, this was the last time I experienced a pen-and-paper-based interview in my career.
Round 1: Coding Round
In the first round, I was presented with three medium problems, each designed to test my problem-solving ability.
The first challenge was to find the kth largest integers in a stream of integer data. I delved into various approaches, carefully explaining their time and space complexities. Implement it on paper and give it a dry run with the test example provided by the interviewer.
The next question was a standard BFS problem— the classic "rotting oranges". The task was to determine the time required for all oranges in a grid to decay, factoring in the cascading effect of rotten oranges infecting adjacent ones. I carefully addressed edge cases while working through the solution on paper to ensure accuracy.
The third problem in this round revolved around categorizing a data stream into four categories based on its behavior. The categories included monotonically increasing, monotonically decreasing, increasing then decreasing, and decreasing then increasing. The task was to swiftly determine the category to which a given data stream belongs, with an outstanding time complexity of O(1).
At the end, I was asked a behavioral question related to my resume, specifically about one of the projects I worked on at my previous organization and the ownership I took in driving that project forward.
Round 2: Coding Round
In this round, I was presented with a series of pattern-based problems that ignited my creativity and challenged my ability to think on my feet.
One of the challenges involved deciphering a pattern and finding the corresponding value, given a specific coordinate (x, y). The key was to achieve a time complexity of O(1), and I was determined to showcase my skills in implementing the solution flawlessly.
Another intriguing problem in this round placed me in the shoes of a broker seeking to maximize the profit. By carefully handling the share prices provided in an array and making strategic decisions on buying, selling, or holding shares, I aimed to achieve an expected space complexity of O(n).
Additionally, I was tasked with converting numbers into words, exploring the boundaries of handling various cases with precision and accuracy.
Round 3: Hiring Manager Round
This round was all about being articulate and demonstrating in-depth knowledge of concepts related to my field of expertise.
The interviewer keenly discussed their expectations from me and asked for my insights on certain matters. One of the highlights was an in-depth exploration of one of my projects, where I had the chance to showcase my understanding of threading concepts and how they relate to my project.
Further, I engaged in an enlightening discussion on the difference between SOAP and REST APIs, including detailing the structure of requests and responses for both types.
The interviewer then presented me with a challenge to design a production-ready Contact List using Tries. Despite the challenge of memory management, the experience was enriching, and I successfully tackled the time complexity of retrieval, aiming for efficiency.
Round 4: Bar Raiser Round
The final round demanded a deep understanding of data structures and algorithms as I encountered a series of complex problems.
The first task involved finding the index of the row containing the maximum number of 1s in a 2D array sorted in rows. My approach focused on a careful discussion of the algorithm, which I skillfully implemented.
Another intriguing problem was the implementation of an LRU (Least Recently Used) cache, where I showcased my knowledge of using a Doubly linked list and an unordered map to achieve an impressive time complexity.
I was then challenged to select the appropriate data structure for implementing a Semaphore and explore its time complexity, in addition to differentiating between Semaphores and mutexes.
The Amazon Experience: A Day of Support and Evaluation
The entire interview process, thoughtfully organized by Amazon, concluded in a single day. From travel arrangements to a delightful lunch, every detail was taken care of, allowing me to focus solely on showcasing my problem-solving skills.
Throughout the process, I discovered valuable advice to succeed in such interviews: thoroughly review past interview questions, embrace open communication, practice thinking aloud, and brush up on crucial topics like Operating Systems and Database Management Systems, if applying for the SDE 1 role.
Indeed, the journey was an exhilarating one, filled with intriguing challenges, stimulating discussions, and the opportunity to learn and grow as a professional. As I await the outcome, I am filled with gratitude for this incredible experience with Amazon, and regardless of the outcome, I am confident that this journey has enriched my knowledge and skills for future endeavors.