Part I: Getting noticed
It all started with a challenge. I was doing some programming exercises at HackerRank (or CodeFights, I don’t know, one of these code-monkey coliseums). My language of choice for these kinds of things is Python, but I wasn’t completely fluent. I was constantly googling Python documentation about arrays, lambdas, data types, list comprehensions, etc.
After some time practicing on HackerRank and googling Python syntax and conventions, something weird happened.
The search results appeared as normal, I scrolled a tiny bit, and then, the page itself seemed to open up like a secret door.
“You’re speaking our language. Up for a challenge?”
Beyond, the Foobar challenge awaits.
Apparently, one of Google’s recruitment tools is the Foobar challenge. I don’t know if they still use it, but it was active during 2018. There are three ways you can access it:
1. Use Python-related keywords in Google Search. Eventually, Google will notice you, and scare the crap out of you like it did me. I was logged into my Google account and using Chrome, so I’m not sure those factors matter.
2. Browse Google’s developer documentation. I didn’t try this method out myself. Supposedly an icon will appear, and when you click it, it takes you to the Foobar challenge.
3. Get an invite from someone else who has gone through the challenge.
There are other ways to access it, and it’s not difficult to find them. Admittedly, I used one of those ways to reinvite myself several months later, when I felt I was more practiced and knowledgeable enough to finish it. I was actually hoping it would start me over, but it actually picked up where I left off. Bummer.
Of course, you can access it directly at http://foobar.google.com, but you need to accept the challenge using one of the methods above before it lets you in.
There are 5 levels of Foobar, each increasing in difficulty. I got to level 3. At that level, you’re directed to a form to input your contact details for a recruiter to contact you.
Part II: Technical phone interview
After a conversation with the recruiter who contacted me via the Foobar challenge, we set up a technical phone interview appointment. The phone interview took place over Google Hangouts and Google Docs. It was basically a peer-programming exercise, except your “peer” is really a senior engineer at Google.
The problem we worked on had to do with a few data structures and their accompanying algorithms. As far as difficulty goes, I’d say it was about Foobar level 1 or 2, or an easy-medium difficulty on any given coding challenge site. It was a lot easier than I was expecting, though I could have stood to practice more problems having to do with common data structures and algorithms. The interviewer I had was very helpful too, so long as I spoke my thoughts out loud. They’re not so interested in you coming to the correct solution, so much as seeing how you approach the problem. During this interview, you should:
- Ask a lot of clarifying questions
- Speak your thought-process out loud
- Write code that works
I’m sorry I can’t be more detailed! Google actually has you sign an NDA to not discuss the questions given. What I can say, is that Google pretty much already provides all the information you need to prepare on their career site. Google lists out all the data structures and algorithms you should be comfortable with.
I kind of get the feeling that the technical interviews, both on and off-site, like to deal with more complex data structures (and their respective contracts and traversal algorithms) like trees, graphs, hash maps and heaps. However, the implementation of those structures does depend on simpler structures like lists, stacks and queues. I would make sure you can implement those basic structures and know how to use them in more complex structures, and then practice easy-medium difficulty problems that use those complex structures.
Part III: 5-in-1 plus lunch on-site
I passed the phone interview, and my recruiter handed me off to a local recruiter to prepare for the on-site. I think I gave myself 2 weeks to prepare for the on-site, but ended up cramming the 3 days before the interview. I ran into a few problems with my study plan. I started studying Python for the on-site, even though I could use any language. I thought that using Python might be more impressive, but after several days, I remembered that I was interviewing for a front-end role, so Python didn’t make any sense. That was my first mistake.
Despite that, the on-site, like the phone interview, was easier than I expected. I just wasn’t as prepared as I should have been. The feedback I got back was pretty much the same as my own self-reflection.
My recruiter will be keeping in touch with me until I can apply again in a year, supposedly? I haven’t heard from him yet, although I only interviewed in February, so maybe I’ll hear from him in May.
My final recommendations for the Google on-site:
- Eat breakfast, even if it’s just a Cliffbar and some green tea.
- Drink hot coffee with sugar to give your brain a performance and energy boost.
- Know your weaknesses, and work on them.
- Practice, practice, practice!