Google Interview Experience - L4 Software Engineer
This blog describes my Google interview experience for L4 level. I have covered what interviews I had, how did I prepare and general tips to help you prepare.
In May - June this year, I interview for Google for Software Engineer L4 level. It was a long but exciting process and I managed to clear and join Google. So let’s come to the point and talk about my interview experience!
How Did I get the call ?
I was contact by a Google recruiter over LinkedIn. She pinged me asking whether I was interested in interviewing at Google, to which I replied yes. After this short conversation over LinkedIn, the recruiter called me up after a week and we had a small chat about my professional experience and what I was working at Microsoft. We discussed (in brief) the following :
What technologies I was working on at Microsoft.
What are my areas of interest.
Whether I am prepared to take the interviews.
After discussing the above, the recruiter asked me the date I would like to interview. I took a full 1 month to prepare. Although I was in touch with data structures and algorithms due to various mentoring programs I am part of in which I guide mentees, I needed some practice to boost my confidence and make sure I am fast and accurate.
Key Takeaways
Make sure that your LinkedIn profile is updated. If you can show that you are a strong candidate who can clear the interviews through your LinkedIn profile, the recruiters will reach out directly to you and you should have no problems in getting the interview calls. Focus on the following while updating your LinkedIn profile :
Update your work experience with the projects you have worked on, including the tech stack.
Update your Skills section with what you are good at.
Update your bio, summarising what you are good at and your achievements.
If you are good at competitive programming, make sure you mention your competitive programming profiles with the ratings.
If you have done open source contribution, mention your Github profile.
TL;DR the whole idea is to let anyone going through your LinkedIn know that you are good at what you do (with proof).
First Interview
The first interview was a screening round - its an elimination round to filter candidates. So you have to perform well in this round otherwise you would be rejected. In this round, the interviewer asked me a question which was based on priority queue. The question was not direct. I took some time to think through the solution, once I figured out the data structure, I explained the solution to the interviewer, we both agreed on the approach and I started coding the solution. Once you have the solution, coding usually doesn’t take much time. I was able to complete the code in 5 mins and then we analysed the time and space complexity.
This round went pretty good and I was able to solve the question in time.
Feedback
Soon after the round, the recruiter called me and said that the round went pretty well and she will now schedule the interviews. All the other rounds were scheduled 1 week post the screening, 1 round each day.
Second Round
The interviewer who took my second round was a very intelligent person. She told me about herself and what product she was working at Google. The interviewer’s voice wasn’t very clear to me. I noticed she wasn’t using headphones, so I requested her to use headphones :). It’s very important that the environment is set right before the interview starts, like connectivity, sound etc. Please call out if are facing issues. The question which was asked to me was based on multi - point bfs. Again, the question was not very direct and I had to figure out how to mould the standard bfs algorithm to get the solution. I messed up a little bit in terms of time complexity. The interviewer gave me hints and I was able to correct my analysis later. It’s important to realise your mistakes and be quick to correct it in interviews. Sometimes we feel that if we do anything wrong in an interview we are screwed. Well, I can tell you from my experience of giving and taking interviews that - everyone makes mistakes. It’s important to catch the interviewer’s hints and correct your mistakes.
Feedback
Overall, this round went well. The recruiter gave me the feedback telling me that I was able to solve the problem in time and told me that my communication skills and code quality was very good. She also told me that I made a mistake in finding out the time complexity, so I might want to improve on that before the next interview.
Third Round
The third round happened just a day after my second round. In this interview the question which was asked was again based on graphs. It was a difficult question and I had never solved such a question before. The question boiled down to a modified implementation of Dijkstra’s algorithm. I took a lot of time to understand the problem. I knew if I am able to come up with the correct solution, coding shouldn’t take more than 5 mins. Again, I told the interviewer about my approach. He agreed and asked me to code it out. After that he asked a follow up question which was pretty simple. I implemented that quickly. We had sometime left, so I asked the interview question related to his team and work at google.
Feedback
The feedback was very positive for this round. The recruiter told me that the interviewer was very impressed with my approach. The code quality, readability, speed everything was perfect. Overall this round went excellent.
Fourth Round
In the fourth round, the question which was asked was a variation of the overlapping intervals problem. Again, the solution was not direct and the problem statement was vague. I had to ask multiple clarifying questions to the interviewer to understand the problem completely. The solution to this problem was not very difficult. I’ll say it was a Leetcode medium level problem. The twist was that the interviewer asked multiple follow up questions, increasing the difficulty slowly. I remember that he asked me at-least 4 follow up questions. I was able to solve 3 of them with code, then I ran out of time so I explained my approach for the last one. Overall, this round also went well.
Feedback
The feedback for this round was also positive. The recruiter told me that the interviewer was very impressed with the way that I asked clarifying questions, my solution to the follow ups and there were no red flags.
Fifth Round
The fifth round was a Googlyness round which was taken by a senior engineer from Google Research. We had a healthy discussion on a lot of scenario based problems, like what would you do to resolve a conflict between teammates, how you would onboard a new joinee etc. This round is usually pretty chill and I think it’s very difficult to screw this one :P. But still, I’ll say one should go through some standard scenario based questions and keep the answers to those in your mind. Usually you can use these points to answer similar questions. It’s always good to be well prepared.
Feedback
This round also went well and the recruiter told that there isn’t any concern. She told that my candidature looks positive and she would forward it to the Hiring Committee for the final approval.
After few days, the recruiter told me that I have made it to Google !
She discussed the initial offer with me and after few rounds of negotiations, I accepted the offer. 🎉
Key Takeaways from my experience
Solve at-least 150 problems on Leetcode of medium to hard difficulty. I’ll say if you are not very good at DSA, get Leetcode premium and solve company specific problems.
Focus on speed. The interviews are of 45 minutes out of which 15 minute goes away in introduction and understanding the problem. You’ll hardly get 30 mins to think through the solution and code it. The interviewers are very strict with respect to the time. You won’t be given extra time.
Focus on accuracy. Since you hardly have 30 mins to solve the problem, if you go in the wrong direction then there is hardly anytime to pivot and change your approach. So I’ll say focus on getting the solution right in the first go. Think out loud, discuss the solution with the interviewer, take hints if needed and starting coding only after interviewer is satisfied with your approach.
The whole game is to stay confident and calm. Many people get nervous because it is ‘Google’. I know this is big opportunity, but don’t think too much about it. Calm your nerves !
Ask clarifying questions. The problems statements given are intentionally ambiguous and they want you to ask questions to get info. So don’t be scared that you are not able to understand the problem. The interview is designed that way.
Focus on speaking while coding. It’s important to make sure that you and the interviewer are on the same page. If you speak, the interviewer would know what is in your mind and if he is not following, he can ask you questions. Don’t assume that the interviewer would be able to understand.
Make sure you pay attention to code quality. You would lose important points if your variables are not named properly.
Remember the standard time complexities. You should know the time complexity of standard algorithms like bfs, dfs, union find, binary search etc.
Focus on giving your best in each interview. If you are aiming for L4, you should try to give your best in all the interviews. If there is some negative feedback in the interviews, there are chances that you would be down levelled or rejected. So, focus on one interview at a time.
At the last, I’ll say negotiate your salary. There is no harm in asking :)
That’s all I have in this edition of Sudo Scripts. Subscribe to the newsletter the directly received posts in your inbox.
All the best for your interviews !
Hey Jatin, thanks a lot for sharing this experience. It’s very insightful for me as this can help me improve my problem solving skills in general too.I work at Microsoft and I have been following you for quite a while. Great to see people like you sharing such valuable information. One of the first reasons why I look up to you and your content.
Subscribe to my Youtube Channel : https://www.youtube.com/channel/UCTtfPJ8hM5gH1H1ptgTTr9w
Follow me on Instagram : https://www.instagram.com/the.sudo.pie/