Google STEP Internship Experience

STEP stands for Google “Student Training in Engineering Program”, formerly known as Engineering Practicum, which releases every year for students in their Freshman and Sophomore years. This is a 10-12-week long internship that allows to work on a software project on Google’s massive codebase accompanying other STEP interns under the assistance of full-time Googlers, providing development opportunities through professional development training.

After submitting my application, I was pleasantly surprised to receive an email from a Google recruiter within just two days, inviting me to select dates for my interviews. The following day, I received a call from the Google team to confirm my interview dates, and shortly after, I received an official invite for the interviews.

In terms of preparation, I chose to focus on revising concepts I was already familiar with rather than cramming new material. I firmly believe that programming proficiency comes from consistent practice rather than last-minute studying. Therefore, I dedicated my time to reinforcing my existing knowledge and strengthening my understanding of past concepts rather than attempting to learn new ones. Additionally, I tailored my practice sessions to prioritize straightforward questions in data structures and algorithms (DSA), opting for a variety of problems rather than solely focusing on advanced challenges typically found on platforms like Codeforces.

The interview process for the Google STEP Internship consisted of two technical interviews, each lasting 45 minutes, with a 1.5-hour break in between. The questions posed during the interviews were strictly focused on DSA, with no inquiries regarding past projects or personal introductions. Instead, I was immediately presented with coding questions and tasked with solving them within the allotted time frame. To facilitate this process, a Google Coding Doc was provided for me to write and share my code.

During the interviews, I successfully tackled the questions presented to me, providing optimized solutions within the given time constraints. However, despite my efforts, I received a rejection email from the recruiter within two weeks of the interviews, with no specific reasons provided for the decision.

Upon reflection, I identified areas where I could have potentially improved my performance. As a competitive programmer, I tend to focus on finding the most optimized solution immediately, sometimes neglecting to discuss alternative approaches with the interviewer. In hindsight, I recognize the importance of communicating my thought process more thoroughly and discussing various potential solutions before honing in on the most efficient one. Additionally, during one of the interviews, I encountered a question related to a rare data structure that I was unfamiliar with. While I was able to solve the problem using my own techniques, I acknowledged my lack of knowledge regarding the specific data structure. However, I suspect that the interviewer may have been looking for candidates familiar with that particular concept, which may have influenced the final decision.

Despite the outcome, I remain confident in my abilities and view this experience as an opportunity for growth. Failure, in my opinion, serves as a valuable teacher, and I am committed to learning from this experience and improving my skills for future opportunities. I hope that sharing my experience can offer insights to others and encourage them to learn from both successes and setbacks.