Status:5 YOE
Position: working in a product based company
Location: India
Interview Process :
[Would not be able to give exact questions due to NDA]
Online test consisted of two standard questions - out of the two questions , one was based on dfs/bfs traversal of a graph and the other was based on heaps. Leetcode medium questions - solved both of them passing all the test cases.
Virtual onsite day 1 consisted of 3 f2f interviews - 1 coding round , 2 design rounds were scheduled for the same day
Coding round 1 : Was asked to write code for a question based on basic properties of binary search trees . Started with brute force solution (didnt spend any time coding it) . talked for 10 minutes about the brute force solution and its complexity . Proposed an optimised approach later and was able to code it in 30-35 minutes with a few hints from interviewer . Interviewer didnt comment much during the coding part except for when I explicitly asked him whether what I was doing looked ok to him .
Tip : Never forget to dry run your code. This will help you identify probelms and corner test cases in your code.
Design Round 1: Was given an ambiguous statement and asked to design the system . Asked various clarifying questions but was told to assume most of things as I liked which made the problem more complex. I couldnt perform well in this round but I managed to give few entities and relationships between them .
Question was something based on recommendation systems.
A lot of time was spent on behavioural questions and things related to the current project. Design of the project , latest feature delivered and things like that .
Tip : when the interviewer asks you to list down entites and relations between those, dont waste time on HLD component design . Interviewer is looking for a LLD design .
Design Round 2 : This was the hiring manager round. He started with questions related to current project and behavioural questions on Amazon leadership principles.
Interviewer was humble throughout and made sure I was not nervous while answering . He talked about lockdown and general stuff to ease me into the conversation. Asked to design a distributed system LLD. Common question based on demand-supply model where a customer requests for a service and there are multiple service providers and the most optimal one needs to be chosen . Was able to list all major entitites.He later asked an extension of the design, which I was able to answer.
Focus on converting the asked question into a programming question for LLD interviews.
After a few days, (around 2 weeks) got a call for bar raiser interview.
Bar raiser interview : Started with how well do I know my current project design. Moved to some behavioral questions. Spent good time on those(around 20 minutes). Be ready to talk about genuine scenarios at work . This will impact your selection . He later asked me an array based coding problem which I was able to give the solution for.
Another coding question was based on graphs. It was a bfs traversal question but asked in a complex manner . Identifying the question was a little difficult.
Both questions are leetcode medium questions and marked under amazon list .
Tip : Knowing the runtime complexity of your code is as important as being able to code.
After a week , I got a call from the HR for another design round (because of the goof ups in round 2) .
Design round 3 : Started with current project again. Explained a design problem that I faced recently . interviewer asked a lot of questions on the design implementation which showed how well he understood all the design concepts.
Gave me a design problem for which he expected a HLD . Design problem was something based on database replication.
Second design problem was based on slot booking system . (Asked only the DB schema for this one)
Each round lasted almost 1.30 - 2 hours.
Got an offer after a week .
I think the most important factor is to be consistent while preparation . There is a high probability that in an interview, you will see a question which you have never seen before, so prepare your mind to not panic in those situations and look for answers. Start with a brute force solution and remove the bottlenecks, unnecessary work and duplicated work (BUD approach from "Cracking the coding interview"). If your efforts are sincere, you will definitely crack all the interviews .
**All the best :) **