/ Pratik Mallya
My Google Interview Experience
Exactly 2 months ago, I was laid off my job. Since it was my first job ever, it was especially painful, but not very surprising. We had all known that the company was not doing super well financially, and the project that I had been working on was complete. By some luck of chance, a guy I took a networking class with at Illinois recommended my name to Youtube and a recruiter contacted me asking if I was willing to interview?
Was I? Of course I was. Google is the computer scientist’s dreamplace to work at, with its infamous 20% time for personal projects, concentration of smart people and generous compensation. In fact, I had interviewed for Google 2 times before; both times I did not get past the phone screen. So, although excited, I was also super nervous.
The one thing that was different this time though was that I actually did prepare for the interview. I solved coding challenges on HackerRank and Project Euler mostly, but also studied Python more in depth. I reviewed algorithms, but I was still not super confident when the phone screen came up. Luckily though, the questions the interviewer asked were fairly basic; I think he simply wanted to see whether I could really code or not; therewere a few edge cases that you had to catch but that was that.
I assumed that since the first phone screen went well, there would be a second one. Honestly, my objective was to clear the first one but not the second; my knowledge of data structures was still not solid enough to withstand deep questioning. However, they informed me that they wanted to fly me in for an onsite interview, yay! I was quite pleased with myself, perhaps I had done better than I thought in the phone screen.
Nevertheless, I had read way too many stories about scary Google interviews, so I set about preparing for it. The first thing I kept in mind was again,that I would probably not clear it. This might sound negative and fatalistic to most, but I know what I know and what I’m confident with and what I’m not. Maybe I have an idealistic view of Google, but I did want to be super quick with algorithms and data structures before working there. Meanwhile, I started reviewing material.
What is the best way to prepare for a Google interview? Read Steven Skiena’s Algorithm Design Manual. It is a very readable exposition on Algorithms, and specifically, it covers data structures in great depth. It is much less mathematically dense than CLRS and the style of exposition is targeted towards a programmer trying to learn by doing rather than the computer scientist trying to understand and analyze algorithms mathematically. Implement the basic algorithms such as BFS, DFS, all sorting algorithms. But do so with tests.Tests are what made writing these algorithms fun, because I would immediately know whether an algorithm was actually solving the problem or not. Organize the code as a github repo, integrate it with Travis-CI for free to determine whether your tests are good. Its a great boost to your confidence to see that little green button which says that all your tests are passing!
Now, for the onsite interview, Google pays for your flight, hotel and even a rental car, which I thought was pretty sweet. In fact, they flew me in on Sunday afternoon, the interview was on Monday, and I flew out on Tuesday. I took this as a good sign; they took care of their people.
Since I signed an NDA, I cannot reveal what questions were asked in the actual interviews. But suffice to say that they will only ask you to code in the language of your choice and will question you on the same level of your experience. I got mostly algorithmic and design problems which were tricky, but not super difficult. I was expecting having to use super complicated data structures and stuff, but the most advanced data structure I used were heaps. The interviewers themselves were very friendly, and one of them took me for lunch at their cafe; I had expected geeks full of themselves but I was pleasantly surprised that all of them were very personable and helpful.
I did not get an offer. The Youtube office in San Bruno is actually pretty sweet; all the toys that you expect in a Google office are there, and they’re actually expanding to a newer building; so I did really want to work there. Anyways, I will probably apply again in the future. Or maybe not. It’s hard to predict what I would want in the future. Either ways, it was definitely a positive experience.
One of the side effects of preparing for a Google interview has been that all the other technical interviews that I’ve had have seemed like a breeze. I interviewed at a local Austin startup, and although I had not known the questions that they asked me, I was able to figure them out on the spot. They were very impressed. So, it was not a wasted effort! In fact, now I have the confidence and determination to complete Skiena’s book in its entirety, and also study other book on algorithms. Its funny that two well-known universities did not spark my interest in Algorithms as much as the prospect of working at Google. But I tend to think that this was more of good timing; I had wanted to study algorithms for some time now, and the Google interview was a just a good excuse to do that. I’m going to take that momentum and push forward with a more in-depth study of algorithms; as a computer scientist, I feel like these are things that I should be very comfortable with.