Amazon | SDE2 | June 2020 | [Reject] | Recruiter feedback
Anonymous User
1754

Experience: 4 YOE
Position: SDE2
Location: Less popular, so it's not a good idea to share it.
LeetCode stats: ~300 (20% easies, 70% mediums, 10% hards)

It was not easy for me to write about my failure, but I hope it will help someone.

Recruiter found my resume in their database and contacted me for a role I was a good fit for. I agreed to start the interview process.

Online assessment: 2 questions, both in the AMCAT Amazon Assessment list here in LeetCode.
I completed both questions in time. One test case didn't pass for the first question but they didn't care that much.

I scheduled for a phone interview to be done after two weeks.

Phone interview:

  • One LP with follow up questions. I had prepared for this very well, so it was quite easy to answer.
  • LeetCode medium question split into three parts: class design => parsing => graph dfs problem
  • I solved all parts without any hints. The graph problem was similar to Course Schedule question.
  • Interviewer was very nice and answered my questions very well.

Virtual Onsite

Round 1:

  • One LP question with a follow up. I had a good story prepared for this.
  • A simple variation of one of the most popular amazon tagged questions on LeetCode.
  • I explained all the approaches and then coded up the most optimal one. I also wrote the time and space complexities.
  • Interviewer was happy with the solution and suggested some improvements. I got the hints and solved them.
  • Recruiter: Interviewer said in the feedback that I did very well on this round.

Round 2:

  • Two LP questions. Had good stories for both and answered the follow-ups.
  • One hard question that is not on leetcode. Interviewer asked the optimal cell in a matrix to build something given places that already have buildings and places we cannot build stuff.
  • I asked what he means by optimal and he asked me back to figure out what it should mean. I gave some thoughts among them being to choose the cell that is closest to some existing building (spoiler: wrong metric). He said "we are on the right track, let's code it up".
  • I initially objected to code something which we didn't fully agree is the right thing, but he pushed for it and I started writing code.
  • It turns out my code doesn't compute the right answer and the entire approach is wrong. He pointed out that it's the wrong approach and I should think of something else. I got another idea but I was running out of time to write the full code.
  • I was baffled that the interviewer asked me to code something that will obviously not work.
  • Recruiter: Interviewer said in the feedback that I was on the wrong track and didn't solve the problem

Round 3 (System Design)

  • 2 behavioral questions. Had answer for one and came up with the answer for the other one on the spot.
  • Interviwer asked to design a system with too many frequent updates from mobile devices
  • I started with requirements, api design, and database schema. I then drew some diagrams in the screen share.
  • Interviewer then asked how I would scale it and I mentioned some options with pros and cons and which one I would pick (and why)
  • We were running out of time and interviwer asked how to scale the system for multiple countries which I answered.
  • Recruiter: Interviewer said in the feedback that my design was good but he didn't have enough time to ask more questions and completely solve the problem because I spent too much time explaining stuff (including the behavorial). Bad time management on my side.

Round 4

  • Fully behavorial, no technical questions. I answered every single question very nicely and interviewer was delighted
  • Recruiter: Interviewer said in the feedback that I did very well on this round

Round 5 (bar raiser)

  • Three LP questions. I was exhausted by this time and couldn't come up with good answers. He had a lot of follow up questions and we spent literally 40 minutes on this part.
  • He then pasted a question that is medium difficulty (not in leetcode) but too many moving parts and criteria. There were two examples and he asked me to fill up the answers for the examples and he will be back shortly
  • I took good 5 minutes trying to understand the problem fully and solve the examples
  • I tried to explain my approach (sliding window) which was the correct technique to solve it.
  • The interviewr was yawning, checking his notifications and smiling at them, the entire time. I felt that he didn't want to be there at all.
  • I started writing the code after getting the approach right and I ran out of time before I could finish it.
  • This was absolutely the worst round ever.
  • Recruiter: The interviewer said in the feedback that I took to long to understand the requirements and couldn't solve the question.

Result
The recruiter emailed me to "catch up" and we had a call. He said the team didn't go with hiring you and in summary, while you did well on the behavioral aspect, you came short on the technical side. After I asked for the feedback for each round, he gave me the answers I wrote above. He said that the team recommends that I re-interview after a cooling period of 6 months.

Take-aways and learnings

  • I read almost everywhere online that interviewers care about your thought process and don't necessarily want an optimal solution. This is absolute horseshit. You should describe the options if you know many and write the optimal solution within the time limit. Minor bugs might be okay, but when given a hard question, do not expect the interviewer to care just about your thought process. You should aim to actually FULLY solve the question and write the full code in the given time. In every round, I shared my thought process and I my approach was right every time except the hard question in round 2 which I explained below.
  • For Amazon interviews, don't spend too much time on the behavioral. Give max 5 minutes including all follow-ups. I was afraid I would do badly on the behavioral so I spent a lot of time giving detailed answers, leaving less time for the technical questions.
  • Practice questions topic-wise. Solve and re-solve the medium and hard questions in each topic. Ye shall leave no stone unturned. For example, I neglected BFS as I was too obsessed with DFS. The hard question required BFS and I realized that just before the time ran out.
  • Do as many hards as you can on each topic
  • Sliding window is a bitch. You should master it.
  • Do a lot of Mock Interviews! I used p-ra--m-p. Specially for system design. No matter how much information you know, you should spend time doing a design question in front of someone.
  • During the interview, clarify the requirements, ask for examples, and describe your approach. Then code the full solution.
  • No matter how prepared you are, you can always get a bad interviewer(s). Try your best to handle them.

I was quite disappointed by the last interviewer. Also in the second round, I could manage to write the solution for the hard question, but the interviewer couldn't even help me clarify the requirements. And the fact that he asked me to start coding when the requirements where not even clear made it even worse.

The recruiter asked me if he can contact me after 6 months as I was very close to getting an offer. I said I will surely consider but I would not interviw with that last interviewer under any circumstance.

Preparation:

  • Elements of programming interviews in Java
  • LeetCode (Premium). Premium is good for company-specific preparation
  • G----ro-kk-ing for system design.
  • System design primer on github: https://github.com/donnemartin/system-design-primer
  • A little bit of Designing Data Intensive Applications (best book on large scale system design).
  • Youtube videos on specific things like consistent hashing, scalability, and conference talks.
Comments (13)