Status: 12+ years of experience
Position: SDE2 at Amazon
Location: Austin, TX
Date: July, 2020
Online Coding Assessment (90 mins):
Virtual Onsite Loop interview with 5 interviewers (each 1 hour) 5 rounds were chosen because i applied for 2 SDE2 positions in Austin.
I was told that, out of 5 rounds, there will be 3 coding rounds, 1 behavioral and 1 system design. I was also told that each round will have behavioral as well and it was true, in each round atleast 30 minutes was spent on Leadership principles. They tried to probe many questions on the stories i was giving. I think this became my advantage.
Apart from the Leadership Principles in each round, below are the details of each round
Round 1:
Leet code 121. Best Time to Buy and Sell Stock - solved it and the follow up question was what if i have limited money, so i have to chose to buy a stock of my choice and sell it so that i can busy a tock of much higher price and sell it to make more money. I tried to give a solution and he also gave some suggestions and time was up and he was happy overall.
Round 2:
Full behavioral round, manager from 2nd team was a silent participant and the questions were actually asked by one who is getting trained in interviewing. I had stories for all the questions at this point.
1 hour Lunch break:
Round 3:
Implement or Write program that can perform File search based on file extension regex mathcing like *.xml, or search files with size geater than 5MB. He made a made a point that this class should be written in such a way that it can easily accomodate other kinds of search criteria.
I gave a class implementation which looked ok for him. THe followup question was how would i change the class to allow search conditions with AND, OR. I expressed my ideas and the interviewer was ok.
Round 4:
System Design Question started after 30 mins of LPs. So, i had only 30 mins for system design.
He is the Manager of the position for which i applied initially.
Question: Design a system that gives unique id. Thats all.
So i asked question like should we do any rate limiting and he said no because this is a paid service and we do not want to limit the service.
I asked for length and he said it does not matter to him as long as its unique.
One thing he said was that each id generated should be unique for 10 days and after 10 days we can reuse the ids.
So i started approaching the problem normally with generating a random 8 char id out 62 chars a-z,A-Z,0-9 and started talking about handling collisions. He asked me to draw the design diagram and i Did.
Since time was running out he asked me in the last 5 mins whether its needed to generate the IDs on the fly. I said its not needed to generate the ids on the fly and we can pregenerate the IDs so that collisions can be resolved in pre-genration and i was going in the direction of pregenrating the ids.
Overall he was not happy with my approach and commented that i should read more about genrating unique ids.
After the interview i saw a nice article on solving this problem in much elegant way:
https://www.callicoder.com/distributed-unique-id-sequence-number-generator/
Round 5: (I felt he is a bar raiser)
LPs took up to 40 mins and particularly he asked me to give 2 examples of innovative things i did. I think this part did not go well because i did not have any innovative stuff in my career other than just some interesting things i did in my career.
Coding question (there was less than 20 mins):
In a firm there can be multiple employees reporting to a manager. So, i need a program to give me the common manager of 2 employees. So, i asked further questions on how this is a n-ary tree problem and asked about how you would give the information to me and we agreed on getting a root as an input.
When i was trying to explain my direction to keep track of parent of each node, he said lets say there are only 2 reportees for each manager instead of more than 2. So the problem suddenly changed to binary tree. and when i eas explaining about capturing parents info for each node, he said lets say we have prents info as well, how do we go about it.
I suggested that i will go with a map to contain the parent of each node and traverse back. He asked if there is any other way and he gave a clue on how to approach and i picked it up in a wrong direction.
Overall, round 5 did not go well considering that the coding question is about lowest common ancestor problem in n-ary tree and then in binary tree.
I had to email the recruiters after 4 business days on the feed back and later that evening recruiter called me and said that he has a mixed feedback that i was not fit for the teams in austin but fit for amazon. If i am open for a position in Seattle, i need to do clear 2 more rounds, one coding and one system design.
So, i took up the next 2 rounds challenge. Below are the details. I was surprised and heard that these cares are a rare situations.
Amazon | SDE2 | Seattle | Jul 2020 [Offer]
Round1:
Coding round:
In a binary tree, find nodes which are at a distance of K from a node, i think this was also a problem in leet code.
Solution is DFS to capture the parents info in a map and then perform BFS from the target node. He was happy.
Round2:
Behavioural
System Design:
Design a system that can fly flights from point to point in auto pilot mode. In short flight automation not the flight booking. When i went into OOD manager did not want that and he specifically was looking for system design.
I felt that i did not do a decent job in this system design question.
After 2 business days, i got a call from recruiter that the team wants to take me in and gave me an offer.