Google | L5 | Onsite [Rejected]
Here is my overall interview process:
Recruiter reached out to me few months backs and due to covid, I thought I had some time to do serious preparations and decided to accept and go through their onsite process. I did atleast 3 months of serious preparations, solved many leetcode problems, repeated multiple important problems and ran through 20-30 mock interviews covering both coding and system design and felt I was prepared for the onsite
Couple days before I started getting slightly nervous for the onsite but I have done few onsite interviews in the past so I had a better control of my nervousness on Google Onsite day.
Now on the onsite day, I dont think the interview questions were tough. They were mostly all medium level questions and I have definitely solved much harder problems during my preparations. I dont think I bombed any interviews so I was slightly hopeful for the offer but I guess they expect to have near perfect interviews which I didnt meet.
I would refrain from giving any exact questions but I will point out to similar leetcode problems
Interview 1 - Coding
It was a made up problem which you eventually have to solve using LRU Implementation https://leetcode.com/problems/lru-cache/
- I think this was probably my good interview. I was able to derive that problem should be implemented using LRU and approached solving it with hashset set doubly linked list with O(1) time complexity. Interviewer was happy with my approach. There was one issue around edge case for my putOperation where detaching of a node from empty list whcih could throw NPE. I missed that during my testing, interviewer pointed my out and I fixed that
Interview 2 - Behavioral - Gogglyness
I was asked all standard questions, like tell me a time when you lead a project, what your role etc
- From my answers, I felt the inverviewer was statisfied
Intervew 3 - Coding
Again it was made up problem similar to https://leetcode.com/problems/random-pick-with-weight
- I proposed a solution where I built a cumulative sum array during initialization and use binary search to pickIndex to which interviewr agreed. At this point I was feeling happy that I was able to solve and wrote the code for it. However interviewer asked me to optimize on both O(n) space and O(lg n) on time. I had 5-10 minutes left and this where things took a turn. In the time left I just couldnt think of a good option. I felt interviewer was unsatisfied with my solution as I didnt give optimal solution and it was mentioned in my feedback
Interview 4 - Coding
This was a fairly standard DFS/BFS problem on a n-ary tree. I was able to solve it within few mins. There were multiple follow up questions to build on top. In one of the follow ups I made a stupid mistake and I overlooked that mistake. When interviewer asked to walk through my code and gave me a sample example where my code fails, I found out about my mistake and immediately fixed it. However, this mistake counted against me from my interpretation of my recruiter's feedback. Othewise the interview was smooth sailing
Interview 5 - System Design
This is likely the interview which has put me to rejection list. I wasnt prepared for the question I was asked. The question involved building a functionality involving geospatial search [eg find nearby restaurants]. I never worked on any functionality related to geospatial search before so my proposals were not optimal. I hit a wall to optimize and eventually interviewer gave me hints. I took that hint and updated my proposal but may be it was probably too little too late. I did prepare for many system design interview questions but I somehow missed problems involving geospatial searches.
I am too burned out from this whole process and getting rejections isnt helping. It started impacting my personal life. I am going to take a break and recover.
Here are my two cents from the interview process with FANG companies
- During leetcode sessions make sure to look for optimiized solution, interviewers do care that you solve in optimized manner. Sometimes you submit solution and it works in leetcode but followup around to see if there is a better approach for it and try implementing that approach yourself
- During leetcode sessions try to do as thorough testing manually as you can before you submit. In real interviews you dont have an option to quickly run your code and identify your mistakes. If you cannot catch these mistakes by yourself, interviewers will and it will cost against you
- Focus more on solving easy to medium problems perfectly as interviewers mostly focus on that.
- Read the problem clearly, make sure you clearly understood the problem make clarifications if you didnt. I made this mistake in one of my FANG interviews where I didnt clarify and ended up writing code for something that wasnt asked.
- With experience, your System Design interview matters a lot more than coding. You only have 1 system design interview but 2-3 coding interviews. Messing system design interview is much more costly than coding interview
- Prepare for System Design like you would be asked in real interview. I made mistake of only keeping 1-2 weeks for System Design and rest of the time mostly focused on coding interviews