Hello, this is part 3 on my Google Interview series. Click here to start from part 1.
In my previous post, I menioned that I was chosen for a phone interview with Google.
I emailed my Google HR with my available times for the interview, which were all specified for the following week. So, I studied as if I would be having the interview within the following week. However, there was no response from the HR.
Days passed by as we crept closer and closer to my specified “available days”. Then those days passed by, and the HR still didn’t respond. I sent another email. I wasn’t sure when my interview would be anymore, so I began to study less. Was I being ghosted? Maybe I wasn’t being considered anymore. I didn’know.
More than 2 weeks has passed since I sent the interview response to Google. I was becoming quite displeased with the process. Fortunately, I noticed that there was going to be a local Google event in Montreal. I went there and was able to talk to a local Google HR, who pinged my HR for any updates. This resulted in an email from my HR (yay!) apologizing for being behind in schedule. He connected me to the Google coordination team, mentioning that I should be scheduled for an interview in 2 days.
If the Google coordination team is responsible for actually scheduling an interview, then what was my HR doing all this time? I was confused, but oh well.
2 days later, I got an email from a different HR in the coordination team, who scheduled me for an interview 2 weeks from now. This was a good amount of time to brush up on my coding interview skills, considering that I had been studying on-and-off in the past couple of weeks.
For the next 2 weeks, I didn’t have a life. I was studying in the evenings after work and the entire day on weekends. Going to study at Starbucks or at a library was a daily occurrence. I would always be carrying the CTCI book around in my bag. Whenever I was waiting in line for something, I would be reviewing questions in my head to keep the concepts fresh.
2 weeks passed, and D-Day was only a day away. As I was solving problems on Leetcode, I got a phone call.
I had to leave to Korea for a family emergency. This delayed the interview by another 10 days.
So… Another couple of days passed before I began studying like crazy… Again! I have to admit I was getting kind of tired at this point. Preparing for a test then having the test date postponed multiple times was wearing me out. But it was my first Google interview and I was quite motivated.
Before D-Day, I have completed the following:
Majority of the questions in the following chapters from CTCI:
- Arrays and Strings
- Linked Lists
- Stacks and Queues
- Recursion and Dynamic Programming
- All Google Easy questions from Leetcode.
- 25 Medium + questions from Leetcode. Not as much as I wanted, but I did a lot of questions from CTCI so I didn’t feel too bad.
- Watched majority of the videos from the GeeksForGeeks Dynammic Programming Video series.
For the interview, I cleared my desk of anything non interview-related. There was only my laptop, paper, pen, (landline) phone, and bright light. I was prepared for the phone call 15 minutes before the scheduled time.
5 minutes before the interview is set to begin, I get a call from a number in Waterloo. I pick up, and it’s a Google employee. After a quick hello, he explains that the interview gets rather short on time and decided to call a few minutes early! Woot!
Pro tip - be ready 5-10 minutes before the interview for some bonus minutes :)
After that, he does a routine check to see that we are both on the same Google doc, and gets to the problem straight away.
I should mention here, as I did in my last post, that I did not expect any graph / tree questions. Other blogs have pointed out that Google does not ask these questions in the phone interview. So, I didn’t study any tree questions.
Well, he began to ask me a tree question.
But it’s not the time nor place for panicking. I follow through the question with the interviewer, and do as I practiced:
- I reiterated the question back to the interviewer.
- I asked questions that concerned edge cases.
- I communicated my thoughts out loud.
Then I verbally went through a brute force solution with the interviewer. This took me a while, and I feared that the interviewer would not be satisfied with my speed of solving the problem. However, the interviewer kept giving me pretty positive feedback. He would always say something after each one of my sentences. In the end, “we” landed on a viable brute-force solution.
He asked for a more optimal solution. I thought out loud with him, and derived a more optimal solution. He asked if I could do better. I walked through the question and discussed that there was another solution that had a better time complexity but worse space. He was happy with the proposed solutions and chose me to begin coding one of them.
I begin to code on the Google doc. It’s as awkward as it sounds. No code syntax, no automatic tabs, page breaks, yuk. But I practiced enough and was familiar with it and didn’t let it deter me. While writing my solution, I thought ahead to keep my code as clean as possible.
After writing the code, I debugged the code. I went through example cases and test cases through my code, line by line. I found a bug and fixed it.
Within 25 minutes, I had a working optimal solution.
He was surprised that I was done in 25 minutes. Apparently this question took almost the entire 45 minutes with other candidates.
He gave me another question that was a deeper layer of the previous question. Once again, I reiterated, asked edge cases, and verbally began to walk through a brute force.
I was having trouble coming up with a solution. He asked me if I could use my solution from the previous question. I went back to the question. I still didn’t get it. He pointed out some details. I began to make some deductions, which he liked, but I still didn’t have the full answer. He pointed out another detail, and then I got it. I was able to verbally discuss the optimal solution.
By that point, we had 5 minutes left in the interview. He said there wasn’t time to code it out, so he asked if I have any questions. And of course, I had a LOT.
He was a cheerful and friendly guy, from the beginning of the interview to the end. I felt that this was probably the best phone interview ever.
2 weeks after the interview, I get a phone call from my Google HR on a Friday afternoon.
He tells me that I have passed the phone screening, and will be invited to an onsite interview at a Google office.
I want to scream. Holy shit.
I asked him how come I only got 1 phone screening, will I hear a lot of other people getting 2. He tells me that for University Grads, there’s usually just one phone screening.
He explains that I have a choice of different Google offices I can go to. He tells me which offices are available and which ones are not, and that I have some time to think about it.
I’m ecstatic by the time we hang up the phone. It was really happening - me having an onsite at Google!
I will talk about the onsite interview prep in my next post.