AMAZON | SDE | Vancouver | March 2020 [Offer]
Anonymous User
2685

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.

Preface

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).

Online Assessment (OA)

There were two questions, similar to:

  1. Number of Islands
  2. Rotting Oranges

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.

Phone Interview I

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:

  1. How do new hires catch up when they first enter the company?
  2. What was the interviewer's personal experience regarding their first days at Amazon?

Phone Interview II

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).

Virtual Onsite

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:

  1. I grabbed a list of common BQs from this forum or that
  2. I copied & pasted Amazon's BQs to a notepad
  3. I went through every corner of my past few years to find experiences that could match each principle, fitting them into STAR formats.
  4. I tried to use the stories to answer the BQs I grabbed, and discovered that I needed to reframe each of my stories to include different principles, so I did the updates.

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:

  1. The last big challenge the recruiter faced
  2. Characteristics the recruiter was anticipating from a successful candidate of this position/their future co-workers
  3. Biggest accomplishments for the recruiters on their current positions
  4. Chances to collaborate across teams/regions
  5. How often/In what way do team members have meetings
  6. How are disagreements resolved
  7. How long do engineers typically work on a project
  8. Career path/potential opportunities to learn

Result and Takeaways

Yesterday, after 5 business days, I received an email telling me that I had passed my virtual onsite interview. Interview stage cleared!

My takeaways:

  1. Apart from complexity analysis, actively introduce test cases to your solutions, even before the recruiter starts asking or throwing test cases at you. This was something that I didn't do intently, but I later realized that it should be advised.
  2. For new grads, when constructing answers to Behavioral Questions, any experience counts (the more recent the better), try to keep your thoughts active. In-class/extracurricular/volunteer events can all contribute to your stories. The key is to highlight yourself in the story, not "we did something".
  3. For stories where it might have ended up in failures, think one more step to include what you learned from it, and if your lessons helped you dealing with similar cases in the future, or if your revised approach eventually solved the original problem. The recruiters do not expect you to be perfect, but they do expect to see a candidate's willingness to always grow and improve.
  4. Be yourself, and the key was to not stop talking and let the recruiters know that you are conversing with them (speak out your intermediate thoughts loud). Occasional pauses for thinking should be fine.
  5. For the final onsite interviews, a good way of calming yourself down is to tell yourself that if they were not interested in hiring you, they would not have set up a whole day just to interview you (with all the time, cost, and human force put into this process).
  6. For virtual onsite interviews, if you want to demonstrate hand gestures, stay a little further away from the camera if you're using one from your laptop so that your arms and hands can actually be captured. (Whenever you're typing, only your head is visible from the camera.)

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!

Comments (3)