Years of Experience: 0 (New Grad, Tier 2 college, 7-8 months of internship experience)
Position: Software Engineer L3
Location: Bangalore
I'd like to thank the Leetcode community, the discuss section was extremely helpful. Now it's time to give back!
I won't share the exact questions [NDA], but will give a walkthrough of the process.
Background
Bachelor's degree from Tier 2 college. Recruiter reached out in early 2020.
About me:
Preparation
I'm into Competitive Programming, solved ~50 problems before interviews (~25 Medium + 25 Hard). A bit of advice: Even if you're able to solve a problem, do check the discuss section for the same. There may be multiple approaches with similar complexity, which you might not have thought of.
Interview
I did not have any phone screen based on my profile. The onsites were divided into two parts: First 3 rounds were scheduled and the next two would be taken based on performance in the first three. All the rounds were of 45 minutes, and that is strictly followed.
Round 1: Coding Interview
Round 2: Coding Interview
Round 3: Coding Interview
Round 4: Coding Interview
Round 5: Googlyness
I will be giving estimated difficulty level for the problems (based on leetcode problems), although none of my questions was on leetcode. However, you can find some similar problems, so practicing sure does help. All the interviewers were very friendly, always communicate your thought process however silly it sounds.
Round 1
The interviewer jumped into the problem after giving his introduction. I came up immediately with a BFS based solution, which he asked to code. This had a follow up question for which he just wanted the approach, which was a very slight modification to the original solution. Make sure to use self explanatory variable names, and write the code with proper indentation.
My Rating: Medium
Round 2
This was a difficult round. The problem was graph based. I took some time to come up with a DP based solution and explained him. He was really interested in the approach, asked a lot of questions on the approach, testing various cases. We nearly discussed about 15-20 minutes on this, and the he asked if I had any other solution in mind. I gave him a Dijkstra based approach and explained the working (this was probably the approach he was looking for). He asked a lot of questions on the tradeoffs in both the approaches(which one works better in what situation, on time and space complexity etc). We had an extensive discussion in this round and I was left with a very little time to write the code. He asked me to write code for any approach which I wanted.
My Rating: Hard (or even harder than the ones present on leetcode)
Round 3
This was a simple round(or what I thought to be a simple round in the beginning). The problem was very straightforward, I immediately gave the solution and coded it (~nearly 5 minutes). He then asked me to optimize the code, and this was the tricky part. I knew the code could not be optimized further. After thinking for a while I realized that it was space which could be optimized. Always think about Time as well as Space Optimization. I took some time to come up with an optimized solution, and gave him a detailed walkthrough of how it worked (be ready to explain step-by-step execution with an example). He seemed satisfied with this, and asked me to code it.
My Rating: Medium (The problem was easy, but keeping in mind space optimization it was overall a medium one).
Round 4
The interviewer started with a very simple problem(easy one). I gave him the approach and coded in ~5 minutes. Then he gave a follow up question. I kept on thinking in the same lines as the first problem and gave him 2-3 solutions (all brute/optimized brute). Then I realised this solution can't be extended further, so came up with another BFS based solution. Keep in mind that the follow up sometimes can have a completely different approach. I gave him the approach and coded it. Since we had ~15 mins still left, he gave another problem. I came up with DP based solution, but this was not optimal, so I gave another Dijkstra based solution. He asked me a lot of question on why the DP based approach could not be optimized further(be ready for such questions). He didn't ask me to write the code for this one.
My Rating: Medium-Hard (Medium for the first one, Hard for the second one).
Round 5
This was the Googlyness Round. The interviewer asked questions around team work and conflicts. Be prepared with a list of such experience(if you have), and try to connect these with the question asked. Prepare well for this round as well, as this could also be a deal breaker(sometimes).
Offer
My packet was sent to the hiring committee. It took around 1 month to get a conformation.
A few tips for preparation
Google interview process can sometimes take a long time(many months). So don't give up if you don't hear back within a few days and keep practicing. All the best!!