Google | L4 | Bengaluru | Jan 2025 | Offer
Summary
After a comprehensive and protracted interview process at Google for an L4 Software Engineer position, which included multiple coding and behavioral rounds, as well as additional technical assessments after an initial hold, I successfully secured and negotiated an offer.
Full Experience
My Google L4/SWE-III Interview Journey
I was initially contacted by a Google Recruiter on LinkedIn in late August 2024. Feeling that I needed more time to prepare, I requested a month's deferral, which was granted. This period allowed me to focus intensely on my preparation before starting the official interview process.
Phone Screening Round [30-09-2024]
The phone screening round featured a typical sliding window-based question with a couple of follow-ups, all of medium complexity. I clearly explained my approach, coded it efficiently (optimizing from O(2N) to O(N)), and performed a dry run with two examples, one specifically demonstrating the optimization's benefit. I completed everything within 30 minutes, and the interviewer seemed quite satisfied.
Following this, I didn't hear back for about a month despite sending follow-up emails. During this waiting period, I managed other interview processes and continued to practice 5-7 medium/hard problems daily, alongside LLD and HLD preparation.
Onsite Interviews:
Coding Round 1 [13/11/2024]
This round involved a geometry-based question, tagged as LeetCode Medium and Google-specific. I presented my approach, coded it, and then answered a few C++ related questions. After a small follow-up, I coded that too, finishing the interview in 30 minutes.
Coding Round 2 [14/11/2024]
Here, I was tasked with designing a class and its methods for Run-Length Encoding (RLE). I coded an initial O(N) solution and explained its complexity. When prompted for a better approach, I devised and coded a binary search-based solution. As time was running out, a follow-up was given, for which I only had to explain the approach without coding, describing it as an extension of my binary search solution. The interviewer seemed content.
Coding Round 3 [15/11/2024]
I encountered a LeetCode Hard problem in this round, which I had previously solved or seen a similar variant of, making me familiar with the optimal approach. I began by explaining the brute-force method, then transitioned to the optimal solution. After coding the optimal approach and doing a dry run, I was asked to generate test cases, including happy paths and edge cases. A second follow-up involved scaling the method for a very large use case, which caught me off guard. While I offered some ideas, the interviewer wasn't entirely satisfied and later clarified their expectations. Overall, this round was passable but not as strong as the others.
Googlyness [18/11/2024]
I spent the weekend preparing for this behavioral round by reviewing YouTube videos and LeetCode posts. I focused on structuring answers to common questions, like my most critical project and its challenges, using the STAR format. The round, led by a manager, involved standard questions with some follow-ups, and I felt it went well.
A week passed without hearing back. With other offers on the table, I proactively contacted my recruiter for an update. Soon after, I received positive feedback and was moved to the team matching phase. I had two team match calls, and fortunately, the second team and manager showed mutual interest, leading to my packet being submitted to the Hiring Committee.
However, after another week, I learned from my recruiter that the Hiring Committee had placed my packet on hold due to some gaps in my technical rounds. Despite my requests, specific details about which rounds or what the gaps were, or individual hire signals, were not provided. Consequently, two additional technical rounds were scheduled.
For these new rounds, I dedicated myself to solving 50-70 recently tagged Google questions on LeetCode.
Additional Round 1 [18/12/2024]
This round began with a graph-based question solvable by BFS or DFS, similar to LeetCode 200. I explained both algorithms and their complexities before coding the DFS version. The interviewer then presented a different problem, similar to LeetCode 127. As I started coding my approach, they asked about the A* algorithm. Unfamiliar with it, I received a brief explanation and was encouraged to learn more. A follow-up to the original problem led me to an O(N^2) solution. After discussing further, we settled on an optimized approach, which I dry-ran.
Additional Round 2 [18/12/2024]
I was given a modified CPU Scheduling problem. My initial brute-force solution prompted the interviewer to ask for optimization. After some effort, I arrived at and coded the optimal solution, followed by a dry run. The subsequent question was an extension, which I identified as a 'Binary Search on Answers' type problem. I coded this solution as well, explaining its time complexity, and the interviewer seemed satisfied.
Due to the holiday season, there was a significant delay. On January 7, 2025, I finally heard that the Hiring Committee had approved my packet for L4, but the position with my matched team was no longer available. This meant re-entering the team match phase. I had two more team match calls over the next three weeks, eventually securing a match with a team in Google Ads.
Compensation Discussion
Two days after my team was finalized, my recruiter contacted me for compensation discussions. I was presented with two options:
- Option 1: 35L base + 121K GSU + 15% bonus + standard Google perks
- Option 2: 37.6L base + 6L Joining Bonus + 101K GSU + 15% bonus + standard Google perks
I favored Option 2 for the higher joining bonus and attempted to negotiate further. The next day, I received a revised offer:
- Option 3: 37.6L base + 8L joining bonus + 98K GSU + 15% bonus + perks
This offer was satisfactory, and I accepted it, receiving the official offer letter on the same day.
Offer Date - 31-01-2025
My overall experience taught me that interviewing with Google demands immense patience and unwavering focus. Happy Coding!
Interview Questions (4)
Design a class with methods for Run-Length Encoding. Initially, an O(N) approach was discussed, followed by optimizing it using a binary search approach. A follow-up question was also given, requiring an explanation of the approach based on the binary search solution.
A graph-based question that could be solved using either Breadth-First Search (BFS) or Depth-First Search (DFS). I explained both approaches and their time complexities, then coded the DFS solution.
A question similar to LeetCode 127 (Word Ladder). I explained my approach and started coding. The interviewer then asked if I knew A* algorithm, which I was unfamiliar with. They explained A* and then gave a follow-up to the original problem, for which I provided an O(N^2) solution. After discussing other approaches, we finalized one, and I performed a dry run.
The first part was a modified CPU Scheduling problem. I initially proposed a brute-force solution and was then prompted to optimize it, eventually arriving at an optimal solution which I coded and dry-ran. The second part was an extension to this problem, which required mapping it to a 'Binary Search on Answers' type question. I coded this extended solution and explained its time complexity.
Preparation Tips
My Preparation Strategy
My preparation began in January 2024 with a New Year's resolution to solve one LeetCode question daily. I was moderately consistent, solving about 150 problems by late August. This initial phase helped me warm up and build momentum. When the Google recruiter reached out, I asked for a month to intensely prepare.
During that dedicated month, I focused on:
- Systematically solving every problem from Strivers SDE Sheet, topic by topic, and watching his accompanying videos.
- In the final week, I stopped solving new problems and concentrated on revising previously completed questions from the sheet, particularly those I struggled with initially.
Even during the month-long wait for phone screen results and while managing other interviews, I continued practicing 5-7 medium/hard problems daily, along with LLD (Low-Level Design) and HLD (High-Level Design) studies.
Before the Googlyness round, I reviewed YouTube videos and LeetCode posts, preparing answers for common behavioral questions (e.g., most critical project, challenges) using the STAR format.
After my packet was put on hold and additional technical rounds were scheduled, I specifically focused on solving 50-70 recently asked Google-tagged questions on LeetCode to fine-tune my skills for their specific problem patterns.