Somewhere in Eastern Canada, there is a meeting room that would decide a big fate of many people, including me. I may find myself sweating through coding questions in front of a whiteboard inside that very room with a Google Engineer looking over my shoulder. Weeks of studying and preparing for algorithm questions would be judged through four back-to-back interviews. Over the span of 5 months, I will have gone through the most challenging, fun, and bittersweet interview process of my life.
I pull the suitcase out into the hallway, step out, and turn around to lock the door. Before the door closes, I take one last look back inside the condo before heading off on a 1 week trip to visit my family in Calgary. My dad’s birthday was coming up, and the company was flexible enough to have a temporary work-at-home arrangement. As soon as the door closes, I tap the touchpad on the electronic keypad, making the lock whirl itself into a click, followed by a satisfying beep. I turn and head off to the elevators at the other end of this straight hallway. As I reach the elevators, I take out my phone to see how many minutes are left until my Uber. But my attention is immediately drawn to the email notification, which I made sure to be muted unless it’s an important one.
“Update on your Google Application!”
I immediately tap on it and my eyes begin to devour the email.
As I’m reading the email, an asynchronous thread goes off in the back of brain; Wait, I applied to Google? Oh shit, I did. Probably a couple of weeks back. I was disappointed with my current job, and remember sending some applications.
Suddenly, I’m interrupted by the elevator bell, along with the blue elevator light that is whispering to me that I have an Uber to catch. I look at the elevator, at my phone, then sprint back down the hallway to the apartment with a surge of adrenaline. I grab 2 things: the Cracking the Coding Interview (CTCI) book, as well as my study notebook.
I jump out the door, lock it and run back down. As I near the elevators again, I tell myself that my trip to Calgary will be very busy.
Hello! This is a Part 1 of my Interview at Google series! I will be dividing up my interview experience into separate parts for each interview stage.
Here’s what the email specified:
- 2 coding algorithm questions must be solved within 90 minutes
- questions could vary on whatever topics there are for coding algorithms. So that’s arrays, trees, graphs, dynammic programming, recursion, sorting, yada yada yada
It’s basically 1 Leetcode Easy and 1 Leetcode Medium. If you don’t know what Leetcode is, I’m just saying that the first one is relatively easy and the second one can be moderately challenging.
This stage of the interview process is relatively straightforward and not really unique compared to other online coding challenges.
Google actually outsourced this part of the process to Codility. If you have had an online screening through their platform before, you are probably familiar with this portion of the interview process.
Since it is an online assessment, there is no verbal component. Hence, no need to “say your thoughts out loud and let the interviewer know what you are thinking”. So you can just focus on grinding practice questions.
My main goal: solve as many coding questions as possible. No communication practice, no whiteboard-style answers, none of that “Googley” stuff. Just pure coding questions and answers.
My main study tool was Cracking for the Coding Interview (CTCI) by Gayle Laakmann McDowell. Undoubtedly one of the most popular interview practice books. It covered all the following important topics:
- Arrays and strings
- Trees and Graphs
- Dynamic Programming
- Sorting and Searching
- Others (Bit manipulation, math, and some others I cannot remember)
The 189 questions were more than enough to keep me busy for the week. In fact, I was sure I couldn’t do all of them. There was a considerable amount of ex-interviewees saying that the online assessment doesn’t concern graphs, bit manipulation, or any math problems. This allowed me to break down a study plan a little bit. The plan was relatively simple: spend enough time grinding on questions in concerned topics and get a relatively good understanding of each one.
The next 7 days went by in a blur. Initially, I didn’t tell my family about the Google interview. I didn’t want to create a stir and disappoint them later on, but I didn’t have a good excuse for wanting to spend most of my spare time studying when I came to visit them for a week. Like, what? My son comes back to see his family in 3 months, and all he wants to do is study?
Since I was working from home, I was able to save time on commuting to just jumping straight to interview prep. I spent my evenings on brushing up on coding algorithms and getting myself dirty with interview questions. It has been about 6 months since I last studied coding algorithms, so I was quite rusty.
If you are like me and need a refresher on coding algorithm questions, you may want to do as many questions as possible, rather than understand deeply about a select few. This is because the questions could be about any of the topics, so you want to increase your chance of being familiar with the question.
For this, I came up with the 15-minute rule:
- if I can’t figure out a question after 15 minutes, look at the solution
Ideally, not the best way to study anything, but it did help me cover all the topics needed for the test.
In my next post, I will share the online assessment experience, the result, and the preparation for the phone interview.