Status: 13 yrs of experience in industrial software (non-tech) company
First of all, thank you so much to the LeetCode community, the problem setters & solvers! Preparing for coding rounds was the biggest challenge for me and practicing here was tremendously helpful.
Interview experience:
Amazon:
- Online assessment: 2 problems in 90 mins. First problem about frequency calculation, ranking and returning top K. Second problem on sorting based on a custom criteria.
- Virtual onsite round 1: First 25 mins LP. Then coding: Graph path finding between given nodes (hard). Follow up questions like why dfs/bfs, backtracking vs other approaches.
- round 2: First 20 mins LP. Then coding: problem with geometry (medium). Like solving line/circle equations to determine points on the canvas. Follow up question on how to handle the problem on a very large scale say the number of points don't fit in one machine's RAM.
- round 3: First 25 mins LP. Then coding: problem on graph traversal (medium). Follow up questions on bfs/dfs, recursive vs iterative solution.
- round 4: First 25 mins LP. Then system design: it was related to designing a system to handle large streaming data and a dashboard with various aggregations. In depth discussions on type of database to use (tradeoffs), scaling, cache, availability and resiliency of the system etc.
After two days the recruiter updated me the it was a strong hire feedback!
Google
- Phone screen: coding - resource allocation problem. Given M resources with different capacities and N consumers, allocate N to M optimally.
- Virtual onsite 1: Coding - Graph find common connections at nth depth (medium/easy). The problem statement was very open/vague and the interviewer asked me to think about the solution as a product manager. So I think apart from code, clarifying and coming up with an approach was the key here.
- Virtual onsite 2: Coding - Problem based on Tries and PriorityQueue (medium). Given the data, the system required to answer two type of queries, one based on string prefix and another based on a priority. The interviwer asked to implement Tries in addition to the actual problem.
- Virtual onsite 3: Coding - code to sovle sudoku based on some conditions (Hard). I could not solve this without hints and could not finish the coding in time.
- Virtual onsite 4: Leadership - usual leadership & behavioural questions.
- Virual onsite 5: System Design - Usual system design for Google scale image storage. But expect to go deep with numbers (throughput, latency, storage...). The interviewer went very deep with how to decide the number of servers, database throughput capacity, cache memory and so on. A lot of discussion on tradeoffs.
After one week the recruiter called to update that HC has approved for L5 position!
Preparation
- Started around 45 days ahead. Brushed up DS and Algo theory (Cormen)
- Daily LeetCode practice, about 3-4 problems. Initially with each category (arrays, queues, trees, graphs...) and then random pick. Third stage, with time restrictions. After solving each problem, looked at problem discussions with top votes to see what's the best strategy to solve the problem and how I could have improved my solution.
- System Design: This is where I had good practical experience with designing large scale cloud systems. So few youtube videos were enough. For both system design rounds (at A and G) I got SH (strong hire) which balanced negative coding feedbacks.
- For system design, I found this useful: https://github.com/donnemartin/system-design-primer#system-design-topics-start-here
Good Luck!!