[NDA] Google | L4 (ML) | Bangalore | May 2020 [Offer]
Anonymous User
1812

YOE: 4 years
Current Employer: Non FAANG
Recruiter reached out to me on LinkedIn.

Phone Interview:

I had two rounds of telephonic interview.

First round was easy greedy problem. This was my first interview in four years. I was over thinking and came up with a DP based solution quickly, which was correct but not optimal. I coded the dp solution. Interviewer was not happy about the complexity. After spending some time I figured out that it can be solved using greedy. I wrote the code in time. The feedback of this round was 'inconclusive', so another round was scheduled.

Second round I did not think too much. It was a moderate question on string manipulation. I coded a simple solution first, interviewer said it's correct and if I can improve it. I implemented a better solution. There was one small bug which I discovered while doing a dry run. Feedback was good for this round. So I got selected for onsite.

Virtual Onsite Interview

I had 3 ML rounds, 2 coding round and one behavioral round.

First ML round: The problem was to design ML end to end system for a real life problem. More focus was on how to break down the problem, how to solve the sub problems, how to scale and how to continuously update models. A couple of questions required in depth theoretical and hands-on knowledge of some ML topics. I was initially taken aback by the open ended and vast nature of the problem but managed to pull myself together and give reasonable design and algorithms. Feedback was borderline positive.

Second ML round: Just like the above but focus on ML theory was almost negligible. The problem from a domain of ML in which I had no expertise. I mentioned this at the beginning and said I will give a solution using the techniques I am familiar with. Interviewer was impressed by how I managed to give a decent solution inspite of having no prior expertise on this domain. The review for this round was excellent.

Third ML round: A challenging real world ML system design. Discussed a lot on feature selection, two possible variant of algorithms - their pros and cons, scalability, real time weight update of models etc. Feedback was good.

First Coding round: A real life problem and three follow ups. First part was super easy. Solved in couple of minutes. Then it was extended to a generic problem. Solved it. Now another follow up where I was supposed to use an object from the above problem to solve another problem. Final question was to design test cases for the third problem.
Second Coding round: A really difficult real life problem on graph (google maps). I quickly realize that tI might not be able to give an optimal solution in time. So I told a simple but correct solution to the interviewer. I was told to code. I wrote the code correctly in about 10 minutes. For the rest of the interview we just discussed a possible optimal solution, we discussed a lot, like: from why normal Dijkstra like algorithm will not work; what if we modify this part of Dijkstra in this way, will it work then. It was a dense discussion. However by the end I was not able to guarantee that my 'optimal' solution will always be correct. The review for this round was excellent, interview specially mentioned my 'depth' of algorithmic knowledge.

Behavioral round:** Standard behavioral round. I was just honest and positive.

I got a confirmation call within a week and within two days got HC approval. :)


How did I prepare:

  • Practice a lot: One thing I believe is that you cannot be overprepared. There is always a luck factor but your goal should be to minimize it as much as possible by practice. There is no short cut for Google, you have to work hard. I solved a lot of problems. I solved problems mainly from leetcode, elements of programming interviews, interviewbit and some from ***. image image

  • Mock Interview : I cannot emphasize enough on this. Google is the only company I applied and I was giving interview after four years. LC mock interviews gave me the confidence I needed. image

  • Leetcode discussion section: You solved a problem, all test cases passed, but wait how do you know there is no better solution? how do you know if there is no better and concise way to write the same code? I used to check discussion thread after almost all good problems and almost all the time used to learn something new. There are some legendary people in leetcode whose code looks like a painting. Follow their code and you will learn a lot.

  • Leetcode premium: If you can afford then go for it. My calculation is that whatever raise you get from a switch will be hundred times more than the money you spent on LC premium. Even if LC premium gives you extra 1% benefit it will be worth it.

  • Track your progress: I use a time tracker chrome plugin to track time spent on each problem. Initially it will be frustrating but believe me with time your speed will double or triple. I use toggl but you can choose your own time tracker tool.

Tips:

  • Always think out loud. This is most important.
  • Always start with a easy solution that you are certain will work and then work on optimal solution. Don't spend too much time at the beginning trying to come up with optimal solution.
  • Be honest, don't pretend to know everything. If you don't know the optimal algorithm, then say so and give the second best solution.
  • Be careful about corner cases. Do a dry run after coding.
  • Write code beatifully.
  • Manage time properly.
Comments (10)