Amazon | SDE2 | Seattle | Feb 2020 [Offer]
Anonymous User
26017

Status: 3 YOE
Position: SDE 2 at a 2nd Tier Tech Company
Location: Boston, MA
Date: Feb, 2020

I've read many interview experiences on this site, it's lead to effectively preparing for my interviews so it's my turn to give back.

Premise
I've been seeing a girl since college (6 years relationship) and after graduation, we ended up getting different jobs on both sides of the country. She worked at MSFT in Redmond while I was in Boston. After 1 year of long distance, I decided to leave my current company and move in with my GF. We planned this decision a long time ago but I didn't start really practicing until October 2019. So that gives me about 4 months of practice. I started slow day one but ended up doing about 3-4 hours a day on a work day and 8-10 hours each day on the weekend with lots of breaks in between. The month December and January is where I went really hard and I had most of my interviews in Feb. The investment was real, I figured I had a single opportunity to improve my quality of life so why not give it my all. Over the course of studying, I found the practice in coding and system to be very helpful to my day job where it lead to success in design discussions. I set up 7 onsites with Amazon, Google, MSFT (3 teams), Zillow, Redfin over three weeks of interviews.

Tools that helped me succeed:

  • Leetcode premium - worth it, I started slow at first but ended up completing 47/128/49 easy/med/hard problems in 4 months.
  • Grooking the system design interview - this was what passed my system design at amazon.
  • Youtube - I watched several mock system design interviews to get a sense of what it was asked and this was incredibly helpful.
  • System Design Primer (donnemartin) - good system design finger food
  • DanCroitor - the best LP preperation you could do
  • Questions to ask after your interview - this makes you seem smart and care about the work to build additional trust with your interviewer

The Entry
A recruiter found me on LinkedIn so I chatted with him over the phone. He asked me about my work experience and two LP questions "what-if questions". They weren't really technical and I answered generally. He scheduled me for an OA.

OA
Standard two hour online assessment, two questions and self evaluation.

  1. https://leetcode.com/discuss/interview-question/411357/ all test cases passed
  2. https://leetcode.com/discuss/interview-question/460127/ (Top N Competitors/Buzzwords ⭐⭐⭐ [Experienced]) 19/21 test cases. When I reflect why it was not fully passed, I forgot to consider the case where a popular toy's name has an apostrophe or a special character in it like ["popeye's", "beyblade!"]. I used a brute regex in java (\W+) to tokenize the string.

The recruiter contacted me right after saying I did well and scheduled me for a onsite for 3 weeks later.

On site
I had a very enjoyable time interviewing with Amazon. They respected me and allowed me to take breaks in between. They flew me into Seattle and put me in a nearby hotel. I woke up at 7am that morning, naturally because of EST time, had a good breakfast and went to the office for interviews from 8:30 to 12:30. I was extermely nervous, palms sweaty, and in the back of my mind I had a sense of pressure that I could not f@ck this up and everything was on the line (in fact the pressure helped me succeed in a way, more on this later). I tried to talk to another dude that came to interview to try to drown out my stress, which it helped. As soon as I started my interviews, I think I just let my personality do the talking. As a reflection, the interviewers have two phases, LP and technical. If the interviewer asks the coding question first, I found a positive correlation between doing well in coding means the LPs will go smoothly as well.

  1. The first interviewer started off asking LP for 30 minutes. He really dug into my past, I was not prepared to go that deep and I wasn't sure how well I STAR formatted the answer. After thirty minutes, I was given a question was about "given a file of parents and children of humans", write me a function to tell me the parent with the most direct children. This was simple. Follow up was "change your code to return the parent with the most children/grandchildren at n generations away". My initial verbal answer was DFS which was wrong (nervous), but when I started to code, I realized it was a BFS and I've done a ton of those on leetcode. Similar to https://leetcode.com/problems/all-nodes-distance-k-in-binary-tree/
  2. The second interviewer was the bar raiser. He started off with the system design question: build uber. Now there are example of this on Youtube (search designing uber) and Grooking the SS interview that I read so I was fairly prepared. Being hit with this question in reality was not the same as the books, no constrains were given, no requirements given, you must ask everything. I started off with the functional and non functional requirements. I drew a very high level design of app, servers, and database on the board and then I went into thinking about the use cases. I asked my interviewer what use case should I design first, he said the driver discovery feature, so I ended up drawing a sequence diagram on what services this feature migh touch. Broken up into application servers, search servers, quad tree servers, notification servers, and several others like google maps services. He asked several other follow up questions which I then added to my sequence diagram which now spanned the entire white board. He challenged me on how I would attain my non-functional requirements (speed, consistency, etc) and I replied with all the knowledge I got from the Grooking SS course. After the system design was over, I felt really good about it and we went into LP. He asked what I have invented at my previous job (plenty as we are a medium sized company), when have I ever exceeded my expectations. I worked on a generally impact piece of the business so his questions were easy for me to answer. I know not everyone reading this will have the benefit of leaving an impactful position. My advice is to critically think how you can tell your story to make it sound impressive. Say "I" more than "we", explain what tools and tech you used in detail, and give quantitative results (I cut down algo time by 10% etc).
  3. The third interviwer asked me a coding question first. The requestion related to sumarizing statistic from a log file. I had to do some simple maths here. The interviewer was very helpful and would confirm my answers immediately which gave me confidence (unlike my other interviews at other companies). When I was done, the follow up question was how to extend the log parser if we wanted to make it extensible to keep track of more fields. I tought the Visitor pattern would make sense here, each log line is visted by multiple stat collectors that only take what the collector should keep track off. The interviewer was impression with this application of the design pattern, and the LP questions went really smoothly. The LPs question had asked when I have taken initiative to design something.
  4. The last interview was with two folks, I think there was one person shadowing. At this point my brain was pretty fried from all the talking so I was on cruise control. We started out with LP, we went into a little bit about a time when I made a decision and committed to it. I talked about my previous projects and drew some architecture diagrams on the board. The coding question was implement an LRU with a product usecase. I think it was a spotify music playlist. I got it done in 10 minutes using a LinkedHashMap. Then the interviewer challenged me to implement my own LRU, with my own static node class and pointere management. I had to be very careful when implementing a doubly linked list when changing the pointers around. As I was coding I spoke everything out loud because my brain wasn't working, but my mouth was. If I made a mistake and it sounded wrong, either I or the interviewer would react and allowed me to fix it. I finished the implementation with the nick of time left and I was escorted out of the building.

Aftermath
I had lunch near the Amazon campus, took a walk near South Union lake to relax and reflect. Got an email from my recruiter 3 hours after the interview with an invitation to talk the following Monday. Since I did my interview on a Friday, this was really fast turn around. I stressed over the weekend and got a call on Monday telling me that I will be getting an offer. I was really estatic... so happy that I bombed my next interview at Google, knowing that I secured my place already for the move. Don't be me, stay focused! Hold your emotions in when you get an offer or else your brain will not be incentivized to work hard. My initial offer was high, but not the number that I asked for: 260k TC. The recruiter and I shared feedback and I told him that I'll be pursuing onsites at multiple places. It was approximately two weeks until I would get my next offer at MSFT. Due to burn out and competition, I canceled my Redfin, Zillow, and one of the MSFT interviews. Interviewing back to back days proved to be difficult for me in a variety of ways, something I would never do again.

At last, it was a MSFT vs an Amazon offer. I spent 10 days negotiating back and forth with the amazon recruiter. I tried to be as nice as I can to my recruiter, complementing him on preparing me for success (because the recruiters will reach out to you before the interview and give you a study sheet) and replying to his offers with respect. Used words like "the offer is really nice, but I was hoping we can do more..." and "I really appreciate what you put together for me but I have to commit to my other interviews...". Eventually, on the last day of offer expiration, I choose Amazon because the sign on bonus was high and that money is paid out to you in the first two years that don't need to vest. I think this was a right choice as we see what's happening in the market these days. Yes, Amazon bonuses are almost non-existent (expecially for the first 18 months) and benefits are not great, but I'll probably marry a MSFT employee and jump on her insurance plan, I would advise the same for anyone who joins Amazon.

The offer: https://leetcode.com/discuss/compensation/535277/Amazon-or-SDE-2-or-Seattle

Wish everyone best of luck interviewing!

Comments (37)