Google | L3 (New Grad) | MTV, USA | Dec 2021 [Offer]
Anonymous User
5499

Background

New grad with MSc in CS from top 50 university in US with no previous internship or work experience.

Preparation Strategy

I started to prepare on mid-January, 2021. My goal was to solve 50% of easy, medium, and hard questions. At that time, I believe there were around 1700 questions on LeetCode. I planned to solve 10 questions per day and do it for 90 days (I think I didn't skip a single day, but sometimes I did more questions on one day and took the next day off). I started with easy questions, once I solved more than half of them, I moved to medium questions and then hard. Around mid-April, I had already solved more than 900 questions, the goal was reached, so I stopped.

Algorithms classes were one of my favorite topics at college. I genuinely enjoyed solving these type of questions. Since I enjoyed solving LeetCode questions, it was somewhat easy for me. I would say on average, I spent around 4-5 hours per day to solve 10 questions. If I got stuck on a problem more than 15-20 minutes, I would just look at the solution, try to understand it, copy the code and then submit it. I also LOVE working with graphs and graph problems. Towards to the end, it was kinda sad that there weren't any graph problems left :( Also towards to the end, I got lazy: I'd look at the question, solve it in my head, then look at the solution and copy the code from there lol.

Applying for Jobs

Since I didn't have previous experience, I waited for a few months for new grad positions to open up. I started applying around August 2021. On daily basis, I'd go to LinkedIn and apply most of the new grad positions for software engineer from no-name companies to FAANG. Initially, I was keeping a record of the campanies I applied in a spreadsheet. But in a few days, I lost the track of it and didn't record them anymore. I still don't know how many companies and positions I have applied.

Landing Interviews

I was confident that if I could get an interview, I'd most likely pass it because of my preparation. But there was one big problem: I was not getting any interviews. Most of them were ghosting me. I was at a point where receiving rejections was making me happy (they at least took the time to reject me even thought it was likely an automated email). I think it was because of the fact that I didn't have any internships experience in the industry (I stayed at the university and did "research internships" all summers).

One of the places I applied was Google. I managed to get a referral from an acquaintance and applied via it towards the end of August for Software Engineer Early Career Campus position. I have also done a Google Summer of Code a couple of years ago. At the end, they give you a one time referral that can be used to apply Google. I used that referral as well. Towards the end of September, I got an email for the snapshot survey and online coding exercise. I had one week to submit them.

In the coding exercise, there were two questions: one LeetCode hard, one LeetCode medium level. But they weren't on LeetCode. I managed to solve the hard one in optimal time, but the second one I couldn't find the optimal solution (did brute force). However, I messed up the submission proccess and I think only my solution for the medium level question was submitted. I reached out the snapshot help, but they weren't much helpful. I thought that was the end of it. However, in a few days I got an invitation for the onsite interviews. I scheduled it for a month later.

Preparing for Google Onsite

This time I decided to buy LeetCode premium and solve all Google tagged questions that were asked in the last 6 months. I solved all of the Google tagged questions that were asked in the last 6 months and most of the questions that were asked in the last year. Since I have solved more than 900 questions previously, most of the tagged questions were already solved. Like before, I tried to solve 10 questions per day. I think I solved close to 200 questions. In total, since the prep start I have solved around 1100 LeetCode questions.

I also went over all of the questions in the Cracking the Coding Interview book (I skipped the sections such as system design, testing, databases, threads and locks, which aren't asked in new grad interviews). I had seen most of them or their variations on LeetCode, so it was kinda easy. I'd solve them in my head, quickly double check with the solution and move on to the next question. I did the same thing for Blind Must Do 75 LeetCode questions list (I have already solved almost all of them).

To prepare for behavioral interview, I read the relevant section in Cracking the Cracking Interview book and few online posts. I also prepared answers for common questions by using the STAR method.

Two days before the interview, I skimmed through the top 50 most frequently asked Google tagged questions again. In the last two days, I just rested and slept well.

Interview Day

The interviews were virtual: 1 behavioral (30 minutes) and 4 coding rounds (45 minutes each). The coding rounds were conducted in a barebone custom IDE that only supports syntax highlighting, nothing else.

  1. Behavioral: it was relaxed, the interviewer asked a few questions about work culture, what I would do at a certain scenario and "tell me about a time where something happened" type of questions. I haven't seen any of them during my preparation. I answered them with good examples. My self evaluation of the result was hire.
  2. Coding 1: it was a sliding window question, not on LeetCode. Initially, it was very easy (I coded it under one or two minutes). Then it started to get more complicated with every follow up question. I think there were three follow ups. The interviewer also asked me how I would test it. I also pointed out something the interviewer didn't think about. It went very well, and I gained more confidence for the following rounds. My self evaluation of the result was strong hire or hire. Since I have heard that it's very hard to get strong hire, it was most likely hire.
  3. Coding round 2: this was a medium level heap related question (not on LeetCode, but there might be something similar). I briefly mentioned the brute force solution, and then the optimal one. The interviewer asked me to implement the optimal one, which I did. Initially when the interviewer explained me the question, I asked a clarification question. Later on, the interviewer asked me that question as a follow up and I implemented it. My running time analysis was a bit off (because I forgot about the size of the heap), the interviewer corrected it. The interviewer also gave me hints about one or two bugs/missed corner cases, and I corrected them. My self evaluation of the result was hire.
  4. Coding round 3: it was a question about playing a game which could also be considered as DFS. Its level would be hard (there is a similar hard question on LeetCode, but this one was even harder because it was more general). Multiple helper functions were needed to solve the question. The first two were easy/medium which I solved them in a few minutes and talked about their complexity. I got confused in the next one, couldn't really understand it. I was stuck on it for a while. After the interviewer gave me a few hints, I coded it. The next step was to solve the main part of the question. But there wasn't much time left. So I breifly explained how I would solve it with DFS and the helper functions we have written so far. My self evaluation of the result was leaning to no hire or leaning to hire. Since I got the offer, I assume it was likely leaning to hire.
  5. Coding round 4: after the 3rd round, I thought it was over, I bombed it. As a result, I was much more relaxed. The question in this round was DP (double penetration as I call it ;)). I'd say it was medium level difficulty, but it might be hard as well. It was not necessarily graph problem, but one could consider it as graph DP problem too. It wasn't on LeetCode, but there might be somewhat similar questions which I think are easier than the one I was asked. I walked through an example to understand the question better, explained my approach to solve it and then started to code it. Once I finished, I walked through my code, fixed a few bugs. The interviewer also gave hints about one or two corner cases/bugs and I fixed them. I mentioned another way of solving it, then the interviewer asked about pros and cons of each approach. My self evaluation of the result was hire.

As a result, I thought I had a chance, but I was really worried about coding round 3. But there wasn't much I could do other than wait for the results. I was slightly pissed off too, because I didn't get more graph questions (usually Google loves to ask graph questions and I love them too :)).

The Offer

Two or three days after the interview, my recruiter said that my package was sent for the internal review. After three weeks, my recruiter called me out of blue and delivered the good news. Product area matching took just two days. I signed the offer letter a few days ago. The whole process from applying to signing the offer took about three months including one month for my preparation.

Tips for the Onsite Interview

  • DON'T stop talking. I mean don't talk about BS, focus on the question: ask clarification questions, walk through your thinking process, think aloud, explain why you are writing each line of code as you write them.
  • Take all the hints from the interviewer, try to understand what they imply and get the hint before the interviewer goes on and gives you more hints or explains the solution.
  • If you catch any bugs while you code, go back, explain the bug and fix it. Also at the end, look for more bugs, dry run your code and refactor your code if it doesn't require much time, explain why it's better.
  • Don't stress out much, it's just another interview, not the end of the world.
  • Rest and sleep well before the interview.

In conclusion, Google was the only company to interview me and I was able to pass it (even thought it is considered one of the hardest to crack)! I believe that hard work always (probably noy always, let's say most of the time) pays off. Sometimes, I think I could have solved all the asked questions without any preparation, but probably I'm wrong.

Good luck in your further interviews!

Please don't ask for the specific questions that were asked, I signed NDA

Comments (12)