Google | 9 months Experience | Software Engineer
Summary
I interviewed for a Software Engineer position at Google, undergoing multiple coding rounds and a behavioral assessment. Despite performing well enough to receive 'Leaning hire' ratings in my technical rounds, I was ultimately rejected. Although offered reconsideration, I withdrew from the process after accepting an offer from another company.
Full Experience
Background
I graduated in 2021 and had 9 months of experience when a Google recruiter reached out to me in April 2022. Interestingly, I received this call on the same day I got a rejection email from another company. The recruiter gave me 3-4 weeks to prepare for the onsite rounds, which were scheduled for May 2022. All my interviewers were from Google's Zurich office in Switzerland, and sometimes I struggled to understand their questions due to their accent. However, it was a good experience because I could ask questions until I fully understood. The Google recruiter was incredibly helpful, discussing strategies with me and offering advice on coding practices and what to focus on during the interview.
First Onsite Round
I felt a lot of pressure during this round, which unfortunately prevented me from thinking optimally, and I ended up writing a lengthy, less efficient code. The optimal solution only occurred to me after the interview had concluded. The result for this round was 'Leaning hire'. After this round, I felt underprepared for Google and stopped preparing for a while.
Second Onsite Round (one week later)
This round also resulted in a 'Leaning hire'.
Third Onsite Round (two days later)
This round too resulted in a 'Leaning hire'.
Fourth Onsite Round (one week later)
This was a 'Googlyness' round, focusing on behavioral aspects.
Final Result
Ultimately, I received a rejection. However, the recruiter offered to schedule two more coding rounds for reconsideration. By then, I had already joined another firm, so I was unable to proceed with the additional rounds.
Overall, giving a Google interview was a unique experience, and I hope to clear it successfully next time.
Interview Questions (7)
Given a 2D array consisting of 0s and 1s, count the maximum length of a straight line formed by contiguous 1s. The line can be oriented diagonally, anti-diagonally, horizontally, or vertically.
Given a 2D array, count the number of possible paths from the bottom-left corner to the bottom-right corner. Movement is allowed horizontally, diagonally, or anti-diagonally.
This is a follow-up to the previous question. Given a 2D array and a list of 'bad indices' (i,j) which should not be present in any path, find the total number of paths from the bottom-left corner to the bottom-right corner, allowing horizontal, diagonal, or anti-diagonal movement, while avoiding all 'bad indices'.
Given an array a of n elements, find the total count of pairs of indices (i, j) such that |a[i] - a[j]| = i - j.
This is a follow-up to the previous question. Given an array a of n elements, find the total count of pairs of indices (i, j) such that |a[i] - a[j]| = |i - j|.
Implement integer division without using multiplication, division, or modulo operators.
This behavioral round assesses alignment with Google's culture and values, focusing on aspects like teamwork, leadership, problem-solving approach, and how one embodies 'Googly' principles.
Preparation Tips
Points to Remember for Preparing Coding Rounds:
- I focused my preparation heavily on Data Structures and Algorithms.
- I tried to solve problems as independently as possible.
- I proactively considered optimizing my solutions.
- Before coding, I thought about tradeoffs and overlapping replacements in algorithms.
- It's crucial to be vocal and verbalize your thought process; never be silent.
- I made sure to proactively think of a variety of test cases, rather than waiting for the interviewer to prompt me.
- I kept a tab on my coding speed, considering the 45-minute slot for each round.
Before the Google Interview, some points I learned to keep in mind:
- Always ensure you understand the question properly, without any lingering doubts.
- If I had doubts, I made sure to ask for clarification.
- Interviewers also check if you can identify missing parameters in a question; sometimes they intentionally omit details, expecting you to ask for them.
- It's acceptable to ask for hints if you get stuck.
- Never forget base cases (I made this mistake in one round).
- Always dry run your code first before telling the interviewer you're done.
- Always use an optimized data structure.
- Have a clear understanding of which data structure is appropriate for the problem.
- Discuss time and space complexity with your interviewer before writing any code.
- Write production-level code, organizing it into short modules.
- Aim for bug-free code.