Amazon | SDE2 | Pittsburgh | May 2020 [Offer]
Anonymous User
6656

> Thank You!

I'd start by saying thanks a ton to our Leetcode (LC) community for the help and guidance. I am glad to be able to give some of it back to the Leetcode community through this post! When I learned about this community, I had a dream that one day I will post my experience with the word "offer" in the title, I have finally reached there.

This was my third interview with Amazon and I have neither applied nor interviewed with any of other companies in FAANG. If you've faced rejection, have confidence on yourself to take time to practice for 2 months and then apply again. Interview success has fair bit of luck factor and how you feel on the day matters quite a bit as well so my advice would be to always believe in yourself and have confidence in your own abilities.

> Interview Experience

I was approached by an Amazon recruiter late March 2020 but I did not respond as I was not prepared and I had in past tried to interview twice for Amazon and failed at onsite due to lack of preparation. But the same recruiter approached me again a week later and because I was working from home during COVID-19 situation, I felt I could find a little bit of extra time to prepare and the recruiter told me that interviews are in taking place 2nd half of May so I did have over a month and a half to prepare thus I responded yes to start the process.

Online assessment (OA)
I did technical assessments in early April. Hours after I completed OA, I received an email for a follow-up phone interview with a recruiter. Both questions were from the top amazon list on LC, followed by an explanation of solution and time complexity and then followed by personality and work style survey.

Q1 was a 2D Matrix problem
Q2 was ordering text data based on a combination of factors problem

Phone interview with recruiter
Phone interviews with recruiters mostly focused on some of the basic questions around LP and a couple of basic DS questions like DFS vs BFS. Soon after the phone interview, I received an email recruiter confirming an onsite interview.

Virtual onsite (VO)
Due to the COVID-19 situation, onsite was done virtually. I was told in early April the date on which the VO loop was going to take place and that there will be four rounds of interviews with one of them being focused on system design.

Interview 1 - LC Medium:

  • It was with Sr SDM, first 30 minutes or so focused on Leadership Principles (LP)
  • The coding question was an LC medium, it was an altered version of amazon questions on LC related to the graph. Similar to meeting room problems.
  • The interviewer at the end did give a positive impression and made me feel that interview went well.

Interview 2 - Tough system design:

  • It was a bar raiser round (I think), first 20 odd minutes focused on LP
  • Then interviewer moved onto system design question - design a source version control system
  • The focus was mainly on system design architecture, I tried to ask questions to better understand the scope and requirements but the interviewer asked me to not worry about those and start sketching server architecture diagram
  • I drew up servers, DB, cache and we discussed trade-off, how much capacity we need and what would we use to handle a sudden spike in traffic (hint: queue)
  • Also discussed, error handling, logging and alerting in case of system issues
  • I also explained similar architecture that I was currently building in my current job
  • In the end, the interviewer said, "okay I am happy with the solution. Hopefully, the rest of your day goes well too."

Interview 3 - LC medium / easy:

  • LP was the focus during the first 20 odd minutes
  • LC medium / easy question similar to coin change but with standard denominations
  • I solved it quickly using the greedy algorithm in about 10 minutes.
  • The interview ended 15 minutes earlier than the scheduled time which left me feeling either I did very well or very bad in the interview but I couldn't figure out which one was true because I answered all LP and coding questions correctly, talked time & space complexity and also ran test cases but I've read 1000 times that if interview ends early, it's usually a bad sign so I was concerned about what happened but I was not worried as I didn't see anything major I could have done better if given 2nd chance.

Interview 4 - LC hard:

  • The interviewer didn't even introduce himself, straight up shared a link to start coding
  • I opened up coding editor using the link and then he started asking LP questions so I switched back to meeting video call - it was almost as if he wasn't sure whether to ask LP questions or not
  • After a couple of LP questions, I was asked an LC hard coding question related to 2D matrix traversal and finding sizes
  • I was able to complete an optimal solution few with 10 odd minutes left in the interview but with one small mistake
  • The interviewer gave a new test case and asked me to run it through a solution on my own.
    • I spotted the mistake as soon as he wrote the test case and I fixed the issue, also thanked him for pointing it out
  • Then we had a brief chat around time and space complexity.
    • Initially, I miscalculated space complexity as I forgot to account for recursion but the interviewer asked me are you sure?
    • That made me re-read every line of code real quick and immediately I thanked him for the hint and fixed it.
  • After that, we discussed what kind of test cases I'd use and then I wrote down a few standard and edge cases
  • Then the interviewer said time up, you're free now and ended the call with no time or option for asking him questions back - this left me feeling a bit curious.
    • This was the only interview where we did not talk a single thing that wasn't an interview question, ie. did not have an intro, did not have post-interview reverse questions, etc.
  • I felt I did well overall except that one minor mistake which I did quickly correct but it is always hard to gauge on our own I guess

> Resources Used During Interview Prep

  • Coding questions: Leetcode premium 1 month primarily. I have had appeared for Amazon interview twice in the past 4 years so those did help me this time around
  • System design: Gr00king sys design interview
  • OOP: Work exp helped, but also used Cr@cking the c#ding interview book and gr##king the OOP interview
  • LP: Used the grid mentioned in the cr@cking the coding interview book and expanded it to include questions seen on LC

> Interview Preparation Strategy

Right prep strategy is critical I believe and in my experience, practicing and learning relevant concepts is as much important as digesting them which is why I wanted to create a strategy in which I could complete through all critical concepts at least 2 weeks before interview and allow time to digest those things. So I divided my prep into 3 rounds:

Round 1 - First 31 days:

  • I divided first 30 out of about 45 days I had in the following order - 15 days for LC coding, 5 for sys design, 5 for OOP and 5 LP BQ:
    • The first 15 days to just go through as many LC med and hard problems as I could. I went through approximately 6 problems per day, in total about 20 LC easy, 50 LC med, and 20 LC hard.
      • I struggled to solve some of the hard ones and some medium ones too so instead of spending hours on coming up with a solution I employed a strategy of learning the tactic and then solving it myself so if I got stuck for more than 30 minutes on a problem, I look up a solution and have a quick read and then I tried to code it myself. This helped save time but also made sure I eventually coded the solution myself.
    • Next 5 days going through Gr##king system design questions but it didn't go as planned so I ended up taking 7 days
      • I started by reading through solutions and then tried to write down my version of the solution for each of those and then compared it with suggested answer
    • I had planned next 5 days for OOP practice but that also didn't go as planned and ended up taking 6 days
    • By the time I got to LP / BQ practice, I had eaten up 3 days extra so I cut short my LP / BQ practice by 2 days, finished up writing 3 examples of each of key areas in a grid. Each example should have four bullet points reminding me of STAR for each. I did not write full answers as I could fill in the whole story from my experience once I remembered the situation, task, and result.

Round 2 - 10 days:
After about 31 days I had finished all core concepts I wanted to learn but it only covered about 80% of the stuff that I needed to prepare. For remaining of 20%, I preferred to keep things random and learn to develop skills needed to solve a surprise question so for next 10 days, every day as and when I get time I randomly looked up a new Amazon interview question on LC discuss and try to solve it within 30 mins on my own or within 1-hour max and if I struggled, I glanced thru answer. I tried to go through 5 problems a day, 3 codings, 1 sys design, and 1 OOP. I developed plenty of confidence as I was able to solve most of the questions reasonably well on my own in this round.

Round 3: Last 4 days
Slowed down. I don't like to wake up on interview day feeling tired and overwhelmed so I preferred to slow down the last few days. Adopt relaxed and healthy schedules. I reviewed all the coding solutions I had answered on LC, all solutions I had written down for sys design and OOP problems, And did some mock prep for LP / BQ  question. I tried to review no new content, just recap of what I did so far in the last four days. The evening before the interview I ate my fav food but early and then went for a nice walk, then watched a good comedy movie to forget about the interview. I had a brief 15-minute meditation session before going to bed. It helps me clear the clutter in my head.

Interview day
I woke up fresh on the interview day. I had porridge and tea for breakfast. Also, I had two cans of Redbull by my side. I believe Redbull increases my level of alertness and speed at which my brain works so I use it during interviews just for that little extra dose of caffeine. I had half can before each of the four interviews. I tried to focus as much as possible on every word interviewer is speaking, took a couple of seconds to understand questions, and clarify to make sure the message sent was the message received. For leadership principle questions, I often took 10 to 15 seconds to think my answer through but kept interviewer engaged by explicitly mentioning that I have a couple of good examples for you but I am thinking through which one will fit the best here so please bear with me for a few seconds.

Few tricks I used
For coding questions, once solved, I also tried to twist coding questions on my own to make it tricker and additional requirements or complexities, such as what if data wasn't sorted or if it was in reverse order or for example for count island in matrix problem, what if I want to find an island closest in size to the average size of all islands and solve for it. This increased my ability to see through problems more clearly and understand the DS underneath much better. I also developed a habit of not thinking about code when looking at these problems but think about how would I solve it if I was dealing with real objects for example if I want to reverse a linked list, I'd imagine as if I had 5 boxes in front of me, how would I reverse their order? Then I write down steps as a comment on a paper or text editor. Then I tried to break down each step into a function if it's more than one line or if it can be reused.

  • Then I dive deeper to solve those individual steps or functions on their own this way one larger LC hard problem could be broken down into 3-4 easy to medium problems and solved individually.
  • For example, if we want to reverse a linked list in k groups, then we would need one main function to control the flow of logic, two sub-functions solve the other two problems, namely func1 gets kth node and func2 reverse k nodes.

> After The Interview

I had my favorite take away lunch post-interview, drank a couple of beers with it. Then I watched another comedy and relaxed. I tried not to think about interview much for rest of the day as I needed to release that anxiety I was hoarding since I started preparing for the interview. I went to bed early and woke up fresh the next day.

The next day I analyzed my answers and compared them with optimal solutions I could find. I became very excited that I had managed to achieve optimal solutions for every question I was asked and system design did go well as per interviewer.

I was positively eager to hear the feedback. Two days after my interview I wrote an email to recruiter to thank them for their time and help with the process. Recruiter shortly replied asking me for a few time slots the same day to speak. I was intrigued because last two times I had failed Amazon interview I simply received a thank you email telling me that they're not moving forward but until I hear word offer, I was not going to be optimistic. On the phone as well recruiter started by asking for my feedback on the process. Then she said, "I do have the feedback from the team about your interview, and then she paused". I started feeling a bit concerned at this point because the tone with which the recruiter said that line sounded like it was bad news. And then came the line "We would like to make you an offer for SDE II role, congratulations!"

My wife who was listening to the conversation so we both started jumping with joy! I had a party that weekend with friends without disclosing the reason for the party of course because until you join and start work, nothing is confirmed!

Later that day I received an email once again congratulating me on my offer and introducing me with the closing recruiter. Closing recruiter and I spoke over the phone regarding salary expectations, start date, and immigration, etc.  I felt I achieved my dream so I'm now thinking what next?

I have been working with a closing recruiter for the last couple of weeks to decide on a team. I had agreed to join one team but that didn't work out as that team had someone internally fill-up spot before I did and that team only had one spot left so now I'm in talks with another hiring manager/team. Hopefully, things will get finalized soon!

If anyone had a similar situation where they went through team matching process post-interview, please share it in comments if you can!

If any of you are preparing for the interview - Good Luck to you!

EDIT - June/15/2020:

  • I received final offer and info about team I'll be joining as well!
  • I had option of Seattle or Pittsburgh teams, I chose Pittsburgh!

Offer details: https://leetcode.com/discuss/compensation/690508/Amazon-or-SDE-II-L5-or-Pittsburgh-or-May-2020

Comments (18)