August 25, 2019
I had the opportunity to do an internship at Google for the Summer of 2019. It was a great learning experience where I was exposed to many different technologies, and got to work on an interesting problem.
Getting the internship was a pretty long process for me. I had to apply, go through a coding screen, go through two phone interviews, and then finally go through a bunch of host matching interviews. Due to various circumstances, this process took almost a year.
The coding screen is pretty straightforward. All you need to do is solve a few of Google's technical problems before the time runs out. If I recall correctly, I didn't solve all of them correctly, but I guess my performance was good enough to warrant a phone interview.
To schedule the phone interviews, I had to give my recruiter 10 dates/times where I would be free. Then, two back-to-back 1 hour phone interviews were scheduled. Both of these phone interviews had the same format - 5 min introduction, 50 min of coding, and 5 min to ask questions. The coding was done on a Google docs file, and the problems started off simple. When you solve the simple problem, the interviewer makes it more complicated, and this process repeats itself until time runs out. Judging from my experience and what my friends have told me, the difficulty of the problems present vary quite a bit from interviewer to interviewer. However, the interviewer's goal is the same - to see your problem solving process.
After you finish the phone interviews, your application package along with the interviewer feedback is sent to a mysterious "hiring panel". They will decide whether you will be rejected, will be required to do another phone interview, or will move into the host matching stage.
Once you're in the host matching stage, all you do is wait for a team to select you. Once selected, an interview is scheduled to assess whether or not you would fit into the team. Most host matching interviews are 30 minutes and non-technical just to talk about the project you would be working on, but your mileage may vary.
In the first week of my internship, I went through a bunch of onboarding courses. These courses covered things like accessibility, the culture, the mission statement, etc... There were also more technical courses, like how to use Google's version control system (no, they don't use git). This onboarding process is standard for all first time Google interns.
In my next 2 weeks, I did more onboarding since the technologies used vary wildly on a team by team basis. My mentor/host also showed me where the bulk of our team's codebase lies, and assigned me the task of writing some unit tests just to get familiar with the codebase. After I was onboarded, my host and I discussed our approach to my project. He gave me guidance and advice, and was quick to inform me about the different tools available at Google to make my project work. He also gave me a lot of freedom and independence, encouraging me to design and implement my project myself.
The other members of my team were also nice and provided me with guidance when I needed it. I ended up using some cool technologies like FlumeJava for parallel computations, Guice for dependency injection, ProtoBuffers, etc... I also learned a lot about designing and implementing a project from start to finish, and was able to make a pretty decent impact!
Google also has a ton of perks. We get free breakfast/lunch/dinner every day. If you want to commute to work via bike, a bike, lock, and helmet is provided to you. If you'd rather take a bus, they provide shuttles! If working out is your thing, there are gyms throughout campus. There are honestly too many perks for me to list. If you're interested and want to learn more, just Google it!