Status: New grad
Experience: Some TA-ship and RA-ship, alongside some personal projects
Location: Vancouver, Canada
I received an email today telling me that I had passed my virtual onsite interview.
Update: Received official offer letter, the position still says SDE, but my HR confirmed it's SDE1.
The posts and problems here on LeetCode have really helped me a lot, so it's time for giveback.
I was first contacted by a recruiter on an L-lettered career socialization website back in Jan asking whether I was interested in an opening. The position posting seems to be aiming for experienced talents, but I still said yes nontheless. The HR set up a call the following week.
Eventually I went through 1 Online Assessment, 2 Phone Interviews, and an all-day Virtual Onsite (VO) consisting of 5 rounds. (Amazon's official Interviewing at Amazon details this).
There were two questions, similar to:
I used DFS for the first one, and passed all test cases.
For the second one, I was doing iteration instead of BFS, which only came across my mind after the session ended. I missed a few test cases, possibly due to TLE or MLE.
Afterwards I did a survey asking about work styles and feedback.
I wasn't actually expecting that I passed the OA as my solution to the second problem was not optimized, but after 2 business days I still got an email moving me to a phone interview.
My phone interview jumped right into the coding part after greetings.
I was asked to solve one problem, similar to:
I said that I would use DFS, and first coded a solution without the use of memoization. I was asked to do a complexity analysis [O(N2)]. Then I was asked if this algorithm could be improved, where I came up with using a HashMap to keep track previous failures, which I added to my code, followed by another complexity analysis [O(N)].
During the discussions the interviewer brought up worst cases to trigger the follow-up.
I was left with some time to ask questions, and I asked:
I thought I did pretty well in my Phone Interview I, so I was actually expecting an onsite call. The interviewer got back to me within 3 business days, however, telling me that I was facing another Phone Interview.
For my second phone interview, I was first asked about my past experiences, explaing some projects I worked on. Then I was challenged with something similar to:
I used iteration and bitwise shift to solve it in place. The follow-up was about changing the state-changing conditions on edges and corners from "non-periodic grid" to "period grid" (i.e, you need to do modulo operations instead of detecing index bounds for arrays).
After yet another 2 business days, I received an email about an upcoming onsite, with 5 rounds of interviews. It was later changed to Virtual Onsite due to the spread of COVID-19. (Best wishes for worldwide recovery.)
A week before my Virtual Onsite, I received a preparation call from an HR giving me preparation suggestions. The HR mentioned data structures, algorithms, System Design, Object Oriented Design, and Leadership Principles questions with S(ituation)-T(ask)-A(ction)-R(esult)-formatted answers (STAR). I was also advised to practice writing on a virtual whiteboard via screen sharing (draw.io for instance).
I had never practiced System Design before, so I spent the whole weekend on that before the interview. Then I supposed that I should probably worry more about Behavioral Questions (BQs), which later proved to be a more than correct assumption. The two days before my actual interview, I devoted them to constructing answers to BQs. Here's what I did:
The process was really harsh, and to be honest my brain was tortured no less than when conjuring solutions to LeetCode hard problems. Anyway, in the end I had at least 1 story for each LP, and I was able to answer most questions. For the ones that I did not really have solid comprehensive stories to tell, I decided to trust my gut.
Finally I was facing the actual interview (conducted remotely via videoconferencing). I realized that I did the right thing: for the first 4 rounds, I was facing almost 15-20 minutes of Behavioral Questions each, and the last round consisted of only BQs.
Other than that, I had 3 coding questions and one OOD, all LeetCode easy to medium levels (I'm being intentionally vague here due to my NDA).
I did not do well for one of the coding rounds (had the right thoughts, but did not finish an if-else case in time), but managed to solve the rest.
I was given some time to ask questions for each round, and here is a rough list of some of the things I asked about:
Yesterday, after 5 business days, I received an email telling me that I had passed my virtual onsite interview. Interview stage cleared!
Thanks to everyone who shared their experiences and to this community in general, they have been of massive help to my attempt at Amazon. Best of luck for every one that has an upcoming job hunt!