I had an interview loop for an SDE II position at Amazon. The interview loop for Amazon consists of an Online Assessment containing two questions, followed by an Onsite Interview.
Apparently, acing your OA lets you move to a process where all you must do is explain your answers to an engineer for an offer. Unfortunately, an issue I encountered with the assessment’s Integrated Development Environment (IDE) prevented me from this option.
You are given 90 minutes to solve two problems. These problems are LeetCode mediums with situational context. The problem format is a description of an issue that could theoretically occur at Amazon, but deep down is just a glorified math problem.
Once I figured this out, I implemented my solutions in the Go programming language with optimal algorithms. So imagine my surprise when I finished an online assessment at one of the most valuable companies in the world, only to receive an issue: “Time Limit Expired.”
After mucking about for a bit, I decided to re-implement my first solution — line-for-line — in Python. This decision was based upon the assumption that the IDE compiled the program before running it. Compiled languages are faster than interpreted languages, but not if you compile the program every time it’s run.
This decision worked. Or perhaps I was able to gain some edge with an underlying C implementation from Python for that specific program. Nonetheless, I ran out of time before translating the solution to the second problem from Go to Python.
The Onsite Interview consisted of 4 Rounds spanning 6 hours. In each interview, you receive ~2 questions regarding Amazon’s Leadership Principles followed by a technical problem.
My only significant mistake occurred at the end of the last onsite interview, as I believed I only had 20 minutes left to solve the Technical Problem. Despite the interviewer allowing me my full time, I was unable to determine how to solve the problem without hints (since we “could only solve it with brute force recursion”).
In addition, a few miscommunications led to my implementation taking forever to complete; but alas, I finished it.
Based on my feedback, I aced the rounds focused on System Design and Leadership Principles. According to the interviewers, I performed decently on 1 of 3 technical problems, which differs from what I recall.
I thought I passed the Data Structures interview, but Ryan Calme stated otherwise. In that round, I implemented a recursive solution and recognized an O(1) implementation (if certain conditions were applicable). However, our evaluations may be different because he had never used Go.
The Hiring Committee (consisting of the interviewers) was allegedly disputed. On the one hand, three interviewers would advocate for me, while Mohit Mundel would fault me for my poor performance in his technical interview. It even got to the point where they looked at my Open Source Software.
What a crazy thing to do in a Software Engineer interview, right?
Sarcasm aside, I didn’t get an offer. Mohit — who has been at Amazon for seven years — decided to veto everyone else. He chose to reject me because “I couldn’t do recursion”.
If you’re going to reject me, at least be honest. Tell me, “You couldn’t solve our LeetCode problem in your final onsite round." Don’t tell me I can’t do recursion... I can do recursion: Here. Here. Here. Here.
I guess my Open Source Software wasn't analyzed thoroughly. Take what you will from that information.