My Experience in Getting an Internship Offer From Google

Ahmad Izzan
11 min readJan 20, 2019

--

Introduction

Not long before I wrote this post, I received an offer from Google Singapore for a Software Engineer Intern role. The process have gave me a lot of lessons and I hoped that by writing down my experiences, I can reflect back on the journey and you can learn something as well. Plus, I didn’t really found a lot of posts on Google Singapore, so I hope that this could help.

Preparation

There’s already a lot of great resources on how to build a good resume. One of the most popular is the guide from careercup. In general, keep your resume to only one page and make sure that things that you put on your resume are things that make you stand out for the particular role you’re applying to.

Preparing for technical interview is also super important. Here your knowledge in Algorithms and Data Structures (and sometimes Object-Oriented Programming and System Design) will be tested by solving problem via coding.

Personally, I used two resources to prepare for technical interview, which is Cracking the Coding Interview book and Leetcode. I started practicing for technical interview when I first got contacted by Google. Don’t follow this! I believe that ideally you should start preparing for technical interview before you start applying for internships. I made this mistake because I thought that Google most likely wouldn’t reply to my application, but now I realized that practicing for technical interview is not something you do to prepare for a particular job or role because if you’re practicing, the skills you’ve gained will still be useful for another internships or even for full time roles later on. So start practicing!

At the beginning, I would read Cracking the Coding Interview (CtCI) to build the foundational understanding of various data structures and algorithms and after that I practiced problems on Leetcode where I mostly do easy-medium level questions. Plus, since I heard that Google phone technical interview will be held in Google Docs, I practiced writing code there as well. On top of that, I did try to speak out my thought when solving some problems, and I believe that it helps a lot on practicing my communication skills.

Applying

I first received information from my friends on mid October that Google Singapore opened Software Engineering Internship position. So on October 26th, I sent out my application and two weeks later I got contacted by Google!

Phone Screening Round

The first selection round is phone screening round which is a phone call for about 20 minutes with HR. If you think that the questions will be behavioural questions, then you’re wrong. Basic knowledge in algorithms and data structures will be tested, so expect a question about time complexity of various data structure operations and trade offs between algorithms.

I was scheduled to have the call on November 12th. I got a total of 6 questions and the call went very quickly. Gladly, I think I was able to answer the questions correctly. After a couple of weeks, I haven’t received the result of the phone screening round while some of my friends already proceeding to the technical interview stage. I then sent a follow up email to the recruiter, and not long after that I received an email that said that I passed the phone screening round and will continue to the technical interview stage! Lesson: If you haven’t heard from the recruiter for a while, don’t hesitate to send follow up email to your recruiter.

Phone Technical Interview #1

I was informed that the phone technical interview will be an interview with Google Engineer where you’ll be working on a problem related to algorithms, data structures, and/or object oriented programming. Personally, throughout this process, I’ve never been asked questions other than algorithms and data structures, but I heard that some candidates do asked about object oriented programming.

A couple hours before the interview, I try to briefly review the material beforehand and I join the Hangout call 5 minutes before the schedule. The interviewer then joined and my first technical interview begin!

At the start of the interview, the interviewer said that this was the first time that he interview candidates which is cool since this is my first Google Interview as well. He then asked me one question. I won’t discuss the detail of the question because of the confidentiality issue, but I think that the problem is supposedly not that hard. The thing is, I couldn’t give solution beyond really simple brute force solution.

The interviewer then gladly gave me hints on how I can solve the problem more efficiently, and I think that I understand the hint and I start to explain my approach to the interviewer. The interviewer then said that my solution is correct and asked me to start code it. I then implemented it and after some debugging, I finished writing the implementation. Then, the interviewer gave me a lot of follow-up questions, such as the trade-off between my approach and other methods, how to parallelize my program, and how the characteristics of the input affected the algorithm design. I really enjoyed this interview since I think the problem is connected to real products and I believed that I learn a lot from the discussion process itself which lasts for about 50 minutes. On December 12th, I got an email that I was invited for the second technical interview!

Phone Technical Interview #2

Prior to the second interview, I prepared by learning and practicing on topics that I felt that I was very lack of knowledge which are trees, graphs, and dynamic programming on Leetcode. The second interview consisted of two questions. The first question is quite simple and I finished solving it in about 10 minutes. The second problem, well, after some minutes, I realized that I again couldn’t solve it beyond brute force solution which was said to be not efficient enough.

I know that the subproblem is a little bit similar to a problem that I’ve solved before, but I didn’t managed to find how I can use the that knowledge to solve the second problem. I tried to think of all of the algorithms and data structures and try to think if any of them could be used to solve the problem, but I failed to find any.

To break the silence in my interview, I decided to explain the similar problem that I’ve worked on, complete with the sample test case. Although, I didn’t see how that could solve my problem, it’s better than complete silence. Then, the interviewer told me that the problem that I’ve solved actually have properties that could be used to solve the problem, and she gave me a little hint on how I could achieve that. The hint then clicked with me, because I finally knew how to solve the problem. The solution is basically combining two algorithms which I knew. I then explained my proposed solution with the improved time and space complexity and the interviewer accepted it and asked me to implement it. Gladly, the solution is pretty short in terms of lines of code and I finished implementing it. The interview lasts for 43 minutes and after that I pretty much got a mixed feeling from the interview. I think that I asked or needed too much hints before able to solve the problem. At that time, the only think I could do was to wait. The next day, something unexpected arrive in my inbox. I passed the technical interview round!

Host Matching

After technical interviews, the next selection process is host matching. Host matching process will try to match your skills with a suitable host. There’s a possibility that you don’t match with any hosts therefore getting rejected. In the host matching process, I was asked to fill out form regarding to my skills and preferences in project fields. There’s also optional essay (but strongly recommended to be submitted) component regarding skills and preferences.

Of course, to increase the chance of getting passed this process, I created essays to make sure that I can highlight my interests and experiences better so that I can get matched with a project I’m interested in. There’s 2 essays: 1 essay about skills and experiences, and 1 essay about preferences.

I don’t know what the ideal essay should be like, in my essay, I try to cover as much fields as possible (while maintaining depth in each field). Here’s my skill essay.

I have experiences in Data Science, Machine Learning, System, and Fullstack development. Here are the details on internships/projects I’ve done for each field.

Data Science and Machine Learning:

- I interned at Bukalapak (Indonesia’s e-commerce unicorn) as a software engineer intern in the AI team. I developed similar image search feature prototype by reading research papers and implementing it in Python and Elasticsearch.

- I have participated in various data science competitions where I was involved in defining evaluation metric and experimenting on using various machine learning models. This month, I won 1st place in CIMB Data Science hackathon in Indonesia.

- Highlighted project #1: Netifier, a multi-label social media post toxicity classification. I was involved in the end-to-end processes, from data gathering, machine learning modelling, to building web interface for the project.

- Highlighted project #2: Indonesian news summarization, I experimented on the use of word embedding in multi-document extractive summarization. I also read a lot of research papers on the field.

System:

Currently, I’m a research assistant advised by Prof. Haryadi Gunawi (University of Chicago) where I worked on Java garbage collection. I’m currently testing various workloads on Cassandra nodes using YCSB to find the pain point that causes high latency issue.

Fullstack Development:

- I interned at Dekoruma (E-commerce in the home and living field) as a software engineer intern where I worked on both back-end and front-end development using Python Django and React Native. I worked on push notification system and revamped the order page to make the code more modular.

- Highlighted project #1: Probook, web based book store where I worked on backend using Java JAX-WS and Node.JS.

Besides that, I also enjoyed participating in competitive programming competition. In 2017 and 2018, I managed to advance to the ACM ICPC Regional Jakarta where I competed with students from all over Asia.

As you can see, I try to cover as much ground as possible in the hope that more hosts will be interested in me haha. For the preferences essay, I didn’t write as much. Here’s the essay.

Based on my experiences, I would love to be matched with projects that’s involved either in machine learning / artificial intelligence field or distributed systems. I’m really interested in the implementation of AI in Google products, for example Google translate must have used various AI technologies to make the sequence-to-sequence translation possible. I also interested in getting matched with projects in the distributed system field. Although, I’m pretty new to the system field, I was fascinated by how systems worked together to solve real-world problems and I would love to learn more and contribute to teams that worked on distributed system. I’m always open for new challenges because I believe that to grow, I have to take and learn new things and therefore I’m open for various kind of projects. Hope that I can be a member of your team! thank you.

4 hours after I submitted the form, I got interview invitations with 2 hosts. I was informed that the interview will be not technical and will lasts for about 15 minutes to see whether the team feels that I’m fit for the project and whether I’m interested in the project itself. The interview was scheduled to be held the next day of the email, and the HR strongly recommends to not reschedule the interview unless really necessary. The thing is, the next day I’ll be at an airport and the interview time will be very close to when I’ll be entering the plane. After some discussion, I decided to not reschedule the interview, and take it on the airport.

Since the interview is just a casual chat, I only reviewed my resume to make sure that I didn’t missed any key details when discussing about my skills and experiences. The first call was with the Payment team, and the chat was mainly about my experiences, the technologies that the team used, and what kind of problems that the team faced. The interviewer said that he couldn’t give like the exact details regarding the project, since if I remembered correctly it’s because of confidentiality issues. But I really enjoyed the chat because he’s very thorough in explaining the team and I’m quite interested.

The second call was with the Research & Machine Intelligence team. Different from the first call, we spent the most of the second host call discussing my experiences and projects in Data Science / Machine Learning especially in my internship work at Bukalapak. He then explained to me the project was data processing. The project itself, will be research-y in nature. I really enjoyed the chat as well, I’m really into the discussion and the project itself is to me very interesting.

After the host matching calls, I was asked to give my preferences on the hosts. On one side, I’m more interested in the Research & Machine Intelligence team because the project sounded really cool and it could be an opportunity to enhance my knowledge in the applied ML field, but on the other side I felt like the skills that I’ll learn on the payment team will be more transferrable throughout my career, especially if I decided to pursue other field that’s not machine learning related. After contemplating and discussing with various people, I decided that my first preferences in host was with the Research & Machine Intelligence team. I felt that as a student, I don’t want to limit my self by the transferability of things that I wanted to learn, because I believe that the point of learning is exploring things that interests you. Now, I just hope that the hosts are equally interested in me.

On December 27th, I received an email that said that I was matched with the Research & Machine Intelligence team, yay!

Hiring Committee

Unfortunately, passing the technical interview and host matching round wasn’t enough to guarantee offer because applicants have to faced the hiring committee round. From what I read, at this stage the recruiters will send applicants hiring packet (resume, interview results, etc) to the hiring committee, consisting of several people, to discuss whether to recommend to hire the applicants. There’s 3 possible outcomes: hire, no hire, or extra interview. On January 4th, the recruiter finally announced that I passed the hiring committee review!

Then, I was asked to wait for another week for offer/compensation package approval and on January 10th, I GOT ACCEPTED! suddenly I felt really excited that I don’t have to constantly check my email and that the internship search is over. The recruiter then said that the official offer letter will be sent to me in 2–3 business days and I’m really excited to joining Google Singapore in May 2019.

Personal Notes and Tips

Here are some things I wanted to say for you internship seeker:

  • Don’t be afraid to apply: Wherever point you’re at right now, always believe in yourself that you can prepare for the internship you’re seeking. So don’t be discouraged that your friend at the moment might be more prepared, just start preparing!
  • Prepare Well: The internet have all of the resources and tips that you can read, so read as many tutorials or blog posts to gather the materials you have to prepared for the internships you’re interested in.

Thank you! If you have any questions or just want to connect, feel free to contact me on email at aahmadizzan@gmail.com, or linkedin.

--

--