Google India STEP Interview Experience (2021)

Khushboo Gupta
6 min readFeb 26, 2021

--

Google STEP (Student Training Engineering Program) is a 10 or 12-week internship program for first and second-year underrepresented undergraduate students in circuital branches. I had the chance to give my first ever technical interview for the same during my sophomore year and even though I was not selected, I learned a lot from the experience. In this article, I would mainly be talking about how my interviews went and the parts where I could have improved, and not the resume shortlisting process. For that, you can refer to some amazing already existing articles like this one.

Interview Structure

There are two 45 minute interviews scheduled usually on the same day. The interviews mainly test the candidate’s knowledge of Data Structures and Algorithms (very rarely Object Oriented Programming (OOPs concepts) related questions are asked) and questions related to CS fundamentals like DBMS, Computer Networks are not asked. One can code in the language of their choice which is filled by them in a form given by the recruiter. The interviews are conducted on Google Hangouts and one has to code in Google Docs. It is very helpful to have prior experience of coding in Google Docs because it is very much different from coding on an IDE as it does not have features like automatic indentation, auto-complete, etc.

Tip: Practise easy-medium questions on interview preparation sites like Leetcode and Interviewbit. It is also very helpful to practise some of the famous hard level Leetcode problems if time permits as the interviews are usually scheduled just two weeks after the resume selection.

Interview Experience

Two 45 minute back-to-back interviews were scheduled on the same day by my recruiter. My preferred language was C++.

First Interview

My first interview went really well as compared to my second one. The interviewer was a Software Engineer working at Google India. He asked for my brief introduction and then we straight away got to the question. I cannot reveal the exact questions that were asked because of a signed NDA but I was asked 2 Leetcode Medium level questions. The first question was relatively easy and it was very clear that it was to be solved using Hashmaps. One key piece of advice that I would give is to be very thorough with the time and space complexities of each and every function that you are using (even if it is from an inbuilt library, like STL for C++). I could answer this question quite easily and also give the correct time and space complexity.

The second question was a relatively open-ended question and I had to ask several clarifying questions. During the time of the interview, I thought that it was based on maths and greedy algorithms but recently, I saw a similar question and came to know that it could have also been solved using heaps as well.

Tip: Try to think of multiple approaches of solving a question by leveraging different data structures and algorithms. I was only thinking about trying to get into the depth of one approach whereas my friend tried answering each and every question with multiple approaches which really helped her in her selection.

At the time of the interview, one thing which I did wrong was that without much thought I told the interviewer the first approach which came to my mind. After a small hint from the interviewer, I came to know that I was not thinking in the right direction. The interviewer then broke the question into two parts and I was able to explain my approach to the interviewer and code the most optimized solution. Then, after thinking for some time, I was able to come up with the brute force solution for the second part as well and coded the same. Towards the end, the interviewer told me that even though my solution worked, but it was not exactly what he was expecting from me and told me the best way to solve that problem.

Scope for improvement: I should have realised that when the interviewer broke the question into two parts, he was expecting me to make use of the first function that I had coded in order to solve the second problem. This would have made the code more modular and readable and would have prevented the extra work that my second function did.

As the time was up now, he then asked me if I had any questions for him and I asked about the team which he works in and the work culture at Google.

Second Interview

My second interview was scheduled just after my first one. But unfortunately, after waiting for 15–20 minutes, I realized that due to some issues the second interviewer could not join and then contacted my recruiter. My recruiter was very helpful and immediately apologized for the same and asked me for my preferred date and timing and my second interview was rescheduled just after the weekend. My second interview was the most challenging one yet the one from which I learned the most.

The interviewer was a Software Engineer at Google India and was very friendly and kind. He started with his brief introduction and then we straight away got to the question. The question was based on the topic I fear the most, Dynamic Programming, and was of Leetcode Hard level. As I had not practiced dynamic programming much and was only familiar with the very basics, I knew this interview was not going to be easy for me.

Tip: Be thoroughly prepared with difficult topics like Dynamic Programming, Graph traversals and other graph algorithms and Tree traversals. Many a times, students including me think that they might not be interviewed on these topics as they are just in their third semester, but most of my friends were asked questions from these topics during their interviews.

I was panicking because I was unsure how I could approach the problem. My interviewer was very helpful and helped me by first asking me for some edge cases that I can think of where a simple approach would have failed and then asked me for a recursive solution for the problem. I was able to explain my approach and then code the recursive algorithm. He then asked me about the time complexity for the code which I could get right in the second attempt with some hints from the interviewer.

Scope for Improvement: It is very unimpressive to get the time complexity wrong especially in an interview. After making this mistake, one thing I would strongly advice is to take some time to think about the time complexity of your solution and then get it right in the first attempt.

I was then thinking hard about how can I optimize my code. One thing that I did wrong here was that I wasn’t very vocal with my interviewer about the thought process because I was panicking a lot as I was not comfortable with DP. Panicking is the worst thing that you can do to yourself in an interview as it blocks your thought process. The interviewers are there to help you and hence, try to be calm and at each and every point discuss your solution with your interviewer. After trying really hard with some hints from my interviewer, I was able to code a top-down DP solution for the same problem. While coding, I made some silly mistakes which I then corrected after they were brought to my notice by the interviewer.

Tips: Always dry run your code yourself on some good edge cases and make sure that your code compiles without any errors before showing it to your interviewer.

The interviewer then asked me about my experience and I asked him how it feels to work at Google. The interview concluded and I then received my rejection mail after almost a month. Through this article, I hope you get an in-depth idea about the Google STEP interview experience and understand the mistakes that I made and try to prevent them during your interviews. All the best!

--

--