Hello, this is part 2 on my Google Interview series. Click here if you have not seen part 1.
Unlike what I had planned, I didn’t complete as many questions as I had wanted. Part of it was because I aimed too high, and another part was me just not studying enough.
And you know what? I didn’t feel too bad. I still practiced a lot. With each question, I made sure that I understood everything; the patterns, the common algorithms, the concepts, the thought-process, and the different possible solutions. My understanding was decent.
Sure, I would have loved to have more time, but it was time for the test!
Before the actual online assessment, I am given an optional mock interview session. I would advise checking it out just to get familiar with the layout of the website.
Also, one thing that helps me was to just read the question online but solve it on my local IDE, like Visual Studio Code or something. With the IntelliCode and Python extensions, you can write and test your code in a snap! The auto-complete and instant run really helps you get quick feedback on your code.
Once I felt comfortable with the website, I started the actual assessment. The first question was simple and straightforward. It was a Leetcode Easy. It took me about 10 minutes to complete it and pass all the tests. I was quite surprised at this point, because I had expected the first question to be a bit harder. In fact, I was looking over the question and answer for a couple more minutes just to make sure I didn’t leave anything out.
Things seemed to be going good for me. More time to work on the second question! More time to guarantee my success! More time to weigh my chances of getting into Google!
The second question was definitely more challenging. It was a dynamic programming problem, and I was having trouble getting a solution with logarithmic time complexity. Despite having almost 75 minutes to spare, I was running out of time without a complete solution. I was able to formulate a logarithmic solution, but it was failing on some edge cases.
By the time the timer went below 10 minutes, my mind started to panic and I couldn’t think straight. My mind was on that timer, the little time that I had left to formulate a correct answer. I was getting more stressed out about the time than the actual question.
I started cursing under my breath. I had studied for this. I had solved DP problems before. Why not now?!
The time ran out, and I had submitted a solution that was not 100% correct. It met the time and space complexity requirements, but it didn’t pass all the test cases.
- Practice more DP problems.
- Practice with a timer!! I didn’t know about this, but solving a question with the timer ticking on was really stressful for me near the end. It stopped me from thinking straight and I panicked. This could have been reduced by practicing with a timer to simulate an actual online assessment.
It’s been a week after the online assessment, and I’m catching up on some Youtube videos during lunch hour at home. I get an email, which as I have mentioned before, doesn’t pop up a notification unless it’s important!
I’m not sure how I got moved to the next round without a 100% correct answer, but I’m very glad anyways.
For the next step, Google asked if I would like to come meet them on the University of Waterloo campus for an in-person interview. Google was hosting an interview day at the university, and asked if I would be available to come there. I had not heard of this process before, as others have told me they went straight to the phone interview after the Online Assessment.
However, I was located in Montreal, and it would take me a lot of money and time to make the trip to Waterloo and back. I was a bit on the fence about this, because on one side, going to Waterloo for that in-person interview could all be worth it! On the other hand, if it doesn’t offer a strong advantage, I could just go with the phone interview and do well there.
In the end, I requested a phone interview.
So this is where it starts to get a lot more serious. The Online Assessment was arguably just some regular Leetcode questions - done online with similar difficulty. The Phone Interview would be live, with a Google employee.
Here’s the interview info:
- 45-minute duration (they are very strict about the time duration down to the minute).
- Coding will be done on a Google Doc.
- The caller can be located in any Google office (you won’t know which one) in a different time zone.
- Some people say you should expect x number of questions in the interview. I should point out that this is not true. Yes, getting through more than less questions is good. But this wasn’t what my interviewer had in mind, which I will talk about in my next post.
Some prep materials:
- How to: Prepare for a Google Engineering Interview
- How to: Work at Google — Example Coding/Engineering Interview
- Google Tech Dev Guide
- GeeksForGeeks Google Interview Prep
Talk through the problem out loud with your interviewer.
- You may think you understand the problem but you may have actually misunderstood. Reiterating the problem statement to your interviewer allows them to point out your mistake and save you from wasting time on an incorrect solution.
Ask questions to clarify the question.
- Show them your thought process.
Use a landline, not a cell phone.
- For the quality connection.
Start solving questions on paper / Google Docs.
- Be able to write 100% compile-able & bug-free code without any code completion.
Do mock interviews. Lots of them.
- It’s very different from solving questions on your own. Trust me, the more mock interviews you do, the better you perform.
I also strongly suggest to get Leetcode Premium in preparation for the interview. Here’s what it offers you:
- You unlock the top Google Interview Questions.
- You unlock and can filter by all questions that are tagged to be asked by Google.
- Best of all, you get the entire Google Interview Preparation package, which basically walks you through from A to Z on how to prepare for the Google interview.
Even though the interview date wasn’t confirmed, I roughly estimated that I had about 10 days to study. With that it mind, I had the following plan:
- Focus on Dynamic Programming concepts, and not Graphs / Trees. The word on the street was that Google does not ask Graph-related questions in the phone interview stage. This turned out to be wrong, which we will get to in my next post.
- Complete the Top 50 Google questions on Leetcode (Easy and Medium).
- Complete more questions from CTCI on topics that I had trouble with.
- Go through Glassdoor interview questions.
- Do mock phone interviews with friends.
In my next post, I will talk about the phone interview experience.