Hello LeetCode Community,
I'm happy to share my Google L4/SWE-III interview experience,timelines and few preparation strategies.
Background:
Graduate from a Tier 1 College
4+ years of experience in a Tier 1 Product Based Company (Non FAANG)
679 (147 Easy, 422 Medium, 110 Hard) problems solved on leetcode.
Previous Comp : 40L(31L Base + 12% bonus + RSU's)
Initial Call
I was reached out by a Google Recruiter on LinkedIn during the end of August 2024. As I was not very much confident, I asked for a month of preparation (Yes you can ask for time if you are not ready). To get started with, my recruiter has shared me some preparation material and set up my phone screening round.
Preparation Phase
I started doing one question a day on Leetcode starting jan 2024 as a new year resolution. I was moderately regular with this and solved about 150 problems till this point. Few on my own, few looking at solutions. This exercise really helped me warm up and definitely gave me a head start but I know this isn't gonna suffice from now. During this month I have dedicatedly solved every problem of Strivers SDE Sheet topic by topic, watched his videos. Last one week, I stooped solving new questions and just revised the questions I already did from this sheet, especially focusing on the ones that i could not do on my own the very first time.
Phone Screening Round [30-09-2024]
I was asked a typical sliding window based question and a couple of follow ups which were of medium complexity. I explained the appraoch to the interview, coded it, optimised it(O(2N) -> O(N)), did the dry run for 2 examples, one where the optimisation would help reduce the complexity. I was able to finish all this in less than 30 min, interviewer seemed happy and I was confident on my solution.
I did not hear back from my recruiter for about a month even after couple of follow up mails from my end. During this time, I had other interviews lined up, so i had to manage my coding preparation along with LLD and HLD. I continued doing 5-7 medium/hard problems a day during this time as well.
Onsite Interviews:
Coding Round 1[13/11/2024]
I was asked a geometry based question(LeetCode Medium, Google Tagged). I explained the approach, coded it up and then the interviewer asked me few C++ related questions. I had answered them. He asked one small follow up, coded up that as well. Interview was done in 30 mins.
Coding Round 2[14/11/2024]
In this round I was asked to design a class and a couple of methods for RLE. I coded them up and explained the complexity O(N). Then the interviewer asked me if i could do any better. Then I came up with a binary search approach and coded that as well. We were almost running out of time and then interviewer asked me a followup and mentioned to just explain the approach and not required to code it. I explained him as it is an extention of the Binary search solution I had written. He was happy with the approach.
Coding Round 3[15/11/2024]
I was asked a LeetCode Hard in this round, I have already solved a similar question earlier, so I was already familar with the optimised approach. I had explained the brute force approach to the interviewer first and then moved on to explaining the optimal solution. He asked me to code the optimal approach. Coded it up and did the dry run. He then asked me my first follow up - create some test cases for this method, I have come up with some happy scenarios and some edge cases as well. Then my second follow up was on scaling this method I had created for a very large use case. This is something that i was not expecting and was not prepared for. I came up with few solutions but interviewer was not very happy with them and then later explained me what he was expecting. Over all, this round went okay, but not as good as the other 2.
Googlyness [18/11/2024]
I had a weekend to prepare for this round. Went through some youtube videos. Went through some leetcode posts. I prepared for few questions like, what is the most critical project I worked on, challenging aspects of it and put them in STAR format. This round was taken by one of the managers. He asked me some standard questions and noted down my answers. Few of them had followups too. All in all, it went good.
My recruiter did not reach out to me for a week after this. I had couple of other offers so I emailed to my recruiter to let me know the verdict as I have to plan accordingly. Then I recieved a call saying feedback was positive and I will be moved to the team match phase.
In the coming week, I had 2 team match calls. I was interested in the second team and luckily the manager was also interested, so my recruiter moved on and created a packet for me to submit to the Hiring Committe.
After a week, I heard from my recruiter saying the Hiring Committe has put my packet on hold due to some gaps in my technical rounds. She did not mention which round or what were the gaps and neither was i told the hire signals for my rounds even after requesting. So, my recruiter arranged for 2 more additional rounds.
This time, for preparation I had solved about 50-70 recently asked Google Tagged questions in leetcode.
Additional Round 1[18/12/2024]
In this round I was asked a Graph based question. It could be solved with BFS or DFS, similar to Leetcode-200. I explained him both the approaches along with the time complexities. Coded up the DFS one.
Then he moved on to a different question similar to LeetCode-127 . I explained him the approach and started coding it. Then he stopped me and asked if I knew how to solve this using A*. I said I am not familar with A* algorithm, he then explained me what A* is and asked me to go through it in free time. Then he gave a follow up to the original problem , I gave him a solution with O(N^2). He asked me if i could come up with a better solution. We had talked about few other approaches and finalised on one and he asked me to just do a dry run of this and I did.
Additional Round 2[18/12/2024]
In this round I was asked a question realed to modified CPU Scheduling problem. I had given a brute force solution, interviewer aksed me to optimise it. It took me a while to come up with the optimal solution.Then I coded it up and did the dry run. Then we moved on to the next question which is kind of an extension to the original question. The trick was to map it to the Binary Search on Answers kind of questions. I had coded it up and explained the time complexity. Interviewer seemed happy.
As it was holiday season I did not hear back from my recruiter for a long long time. I heard back on 07-01-2025 that Hiring Committe has approved my packet for L4 but the position for the team I had earlier been matched with has been closed. So my recruiter put me in the team match phase again.
I had 2 team match rounds in the next 3 weeks and I finally I was matched with the second team(Google Ads).
Compensation Discussion
Two days after my team was finalised, my recruiter has called me for the compensation discussion. I was given 2 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 was leaning towards option 2 as I wanted more Joining Bonus. I tried to negotiate further. The next day I was given a different option:
Option 3 : 37.6l base + 8l joining bonus + 98k GSU + 15% bonus + perks
I was good with this option and I have recevied my offer on the same day.
Offer Date - 31-01-2025
Final Thoughts
Interviewing with google is going to take a while and all we can do is nothing but be very very patient and stay focused! Happy Coding!!