Status: New grad, MS CS Top 100 CS school
Position: SDE-1 at Amazon
Location: Palo Alto, CA
YOE: 2 yrs(INDIA) + 1yr (Internship in USA)
Date: April 7, 2021
Jan 2021: Appiled for the role
1st week Feb 2021: Got a reply from recruiter and got the OA debugging same day. OA Debugging(7/7)
2nd week Feb 2021: Got the coding OA 1 hr after giving Debugging, prepared for a week for coding, had code solutions for all expected OA coding question. Compeleted OA coding (2/2).
Next Day after OA 2: Gave OA 3 behavioural.
Next Day: Got email invitation to schedule Phone Screen, Sceduled after 2 weeks
1st March 2021: Phone Interview
Phone Interview
Coding question only. Related to Graphs. From Leetcode Medium.
Completed the question in 20 mins. The interviewer was expecting only one question. Gave multiple approaches with time complexities and ran through 3 test cases best, worst and large. Since we had 20 more minutes left interviewer came up with a new made up question. Done in 10 mins with multiple apporaches. Then we spoke about the team and Amazon.
4th March 2021: Got Email that I have cleared the Phone Interview. Schedued the Onsite interview after 3 weeks.
28th March 2021: Onsite Interview
Virtual Onsite
3 rounds
Round 1: Senior Manager, jumped into a OOD question directly. Very vague question, but mentioned that the code I write will be reused. Spoke out loud and gathered the requirments. Interviewer told me to assume what ever I can, I took worst cases to be considered and wrote the code. Then the interviewer checked if I had covered all cases. Asked why I made some variable private and placed the error check which were not mentioned. Told him I was trying to cover all the worst cases so that the next person using my code would find it easy to extend it. Last 15 mins, jumped into 2 LP questions. Answered them and asked question about the product and the team.
Round 2: SDE-2, This was right after the first round. Jumped right into the question. LC medium question. I remeber solving the question, but forgot the O(N) approach. Explaied the O(N^2) approach and told them "I think this can be optimized to O(N), but if it is okay I would like to write the O(N^2) first". Interviewer said that was fine, was expaling what I was writing and why. Ran 3 examples again coveing best worst and lengthy. Then started optimization. Wrote the code and while running the examples I realized I made a mistake, went back to code and made the changes. Ran 3 examples again prefectly. Jumped to the LP question next, had 20 mins remaining. Answered it and discussed more about the team work environment.
Round 3: Team Manager, First 5-7 mins they introduced themselves and spoke about the team. This was the most gruling round and thought I bombed it! First 25 mins 6 LP question and follow up questions on my answers. Had only 15 mins left, jumped to the coding question. First when I saw the question, it was a LC medium which I had previously done. When I started gathering the requirements, I understood he made some changes and made it a LC Hard. Was worried if I could complete in 10 mins. Discussed about Hash Maps and collision handling, then Wrote the code, had 3 mins left. Found that the code I wrote might have a buffer overflow, pointed it to the interviewer and said I was thinking of a better apporach. They said we were over the time limit and said something, which went right over my head as I was tensed that I couldnt come up with perfefctly working code. Spent 5 more mins after the 45 mins for any questions I had.
After the interview:
I felt I did not do well in the 3rd interview and probably thought this would be the reason for reject. Was furious that how can they expect to solve a Hard question in 15 mins.
April 2nd: Recivied a mail saying I cleared the interview.
April 7th 2021: Recivied the offer letter.
Preparation:
Solved LC 300 question 3 times = 900 over the span of 1 year. I did this not to prepare for the interview, but out of interest. Seems like impossible, but LC and Algorithms are a hobby for me.
Suggestions: