Amazon | SDE2 | Palo Alto | Nov 2020 [Rejected]
Anonymous User
3546

I wanted to share my onsite interview experience with amazon. I was reached out by a recruiter and had a telephone screening. Basic experience questions and in the final, the recruiter asked me to take the online assessment by providing a link within a week.

I was provided with the following coding challenges for the online assessment - beta testing and user logs. I was able to solve one of them with all the test cases passed and the other partially. After a day, the recruiter emailed me that i have cleared the online assessment and want to setup a final interview.

The final interview consists of 4 virtual interviews conducted via amazon chime, all the 4 interviewers are very friendly and professional.

The 1st interview was with two persons (one of them is shadowing), started with intro about each other, LP questions and then moved on to a coding question - was given a scenario to code for a function related to "know what your friends buy most". Basically, the challenge is to get the list of products that your friends are buying, group them and find the products that a person did not purchase and sort it in the increasing order and output as list. You are given with 2 APIs that will give you the list of products for a given a person and another API that will give you the list of friends for a given person. I failed to ask some edge cases like can we get an empty list from the APIs etc. I think this is the biggest mistake i did for this round apart from that the interviewer was quite happy with the code.

The second interview is where everything went bad. The person was again very friendly, intro and LP questions and then a coding challenge based on trie DS. I practiced for different data structures - graph, binary tree, queue, stack, array etc., but missed to even practice with this trie data structure. I was struggling to code for this problem and in the end i was not successful. Given a phone dictionary, find the suggested words based on the prefix. There is a similar problem in leetcode, but the hardest part is using recursion and identifying all the suggested words as output. In the final, i was given an opportunity to ask some questions and it went well.

The third interview was with a senior person, basic LP questions and went into system design to design twitter, this is something i practiced numerous times and felt happy when this problem appeared in the interview. I think the biggest mistake i did is that i jumped directly into the solutioning without clarifying the requirements such as whether we get tweets as only text, or photo/media, tweets/sec, no. of users, how the tweets should be time ordered and outputted etc., capacity estimation blah blah blah. Typical large-scale system design questions. I felt the interviewer was not quite happy at the end but had a small talk at the end. i think i could have done better here which i missed.

The fourth interview was with an SDE (he said Luxemburg probably the bar raiser), again super friendly and intro, LP questions, background and asked me to code for a problem. Given an array with the num of steps at each position that we can jump, write the program to output whether its winnable or not winnable - True or False. I was proposing some queue algorithm the interviewer agreed and started coding and then I felt it will not work. Quickly changed to recursion and implemented it and we both agreed upon the solution at the end.
The recruiter called and gave me a voice message that they are not moving forward but i did not let this down since i had no experience with any FAANG companies. Also had no idea on how this loop interview system works. Felt i could have easily cracked it with some prior experience with these types of interviews.

Most important lessons learnt:

  1. Learn all the data structures and algorithms and don’t miss anything - Arrays, List, Binary Tree, BST, Heap - min/max, stacks, queue, priority queue, Trie, Graph and all algos - Topological sort, DFS, BFS, bipartite, min span tree, Dijkstra, prims, dynamic programming (top down/bottom up approach), recursion with memo etc.,
  2. Practice as many problems possible and look at different problem solution - learn each problem algos and practice as required that you understand and reproduce the same in the interview. Do not spend more than an hour in one problem and try to review it again at a later point.
    Do not waste your time with trying to generate the output for all the leetcode test cases. Know your edge cases and solution for each problem. Since the interviewer expects you to write a clean, efficient, understandable code that the interviewer can agree upon.
  3. Don’t dive into the problems & system design without clarifying the requirements – its ok if you didn’t complete the coding at the end, all the interviewer wants to see is your thought process and how you approach with the solution. These are the most important steps rather than writing the code.

Treat all interviews as an experience and do not let yourself down. Patient and practice are the key and of course some luck is needed. I am confident if not for the FAANG companies there are many decent companies where I can find an opportunity. ALL THE BEST for all job searchers and hope my experience is helpful with your job search.

Comments (10)