Google Interview Experience | Software Engineer (L3)

Google Interview Experience | Software Engineer (L3)

Hello, welcome to my first article (My "Hello world" article).

What to expect? - If you don't know about the Google interview process( especially for Software Engineer), then you should surely dive in. You will see below that I am not any ninja level coder, as I have never done Competitive Programming till date :P. I am just a guy who always tries to be a better version of himself :) .

Interview Process for Software Engineer 1

~ I cannot share the exact questions here as they are confidential, but I will try to cover the topics. And also I will try to make them sound a little easy, unlike some other articles you might have come across :P

Total Rounds(45 min each):

  • Round 0 : Telephonic(Qualification, DS ALGO)
  • Round 1-4 : On-site(DS ALGO/ Problem Solving)
  • Round 5 : Googliness
  • Fitment Call
  • Google Hiring Committee Approval

The general characteristics of every DS ALGO round: The interviews will be about 45 min each and depending on the interviewer, you may be asked two separate questions or one question with follow up questions. I was asked one question and then follow up question in each of the rounds so don't be afraid of it, also if you are concerned, you can just ask the interviewer they are really helpful and happy to answer :).

My Experience

I applied in February via referral. I was at home that time, so I asked my recruiter (Komal Tanwani) to give me some more time as I can't take the interview there and need to come back to Bangalore. She helped me with that, and also sent some preparation material:

Links to some coding practice sites (GFG, Codeforces, LeetCode), some YouTube videos (channels like Tushar Roy, some google made videos) and some book references. I studied from the Coursera Algorithms course, they have explained the algorithms in a very clean way from explaining the need of algorithms to some complex algorithm made easy.

Coursera Algorithms Part 1, Coursera Algorithms Part 2

Round 0 (Telephonic, DS Algo):

As you can guess this is a virtual round. During this you will be connected with the interviewer on a google meet video call, along with that you will be provided a Google Doc where you can write the code & explain your approach. I would recommend you to practice on a doc for this interview as we all tend to solve problems using pen & paper and it becomes really hard to explain things by typing them.

We got some connectivity issue during this round and there was some time lost in resolving that. Actually, it was quite funny, I couldn't hear them, but they could hear me, So I told them to write on the doc, and we kind of started chatting on the doc. Then they realized that this is not going to work and called me on my cell phone.

I was asked a medium level 2d Matrix question based on backtracking in this round. Later on, after completing the coding part. He asked me to dry run it and discussed about the complexity of the solution.

I was worried as only one question was asked. So I asked the interviewer that is it a problem? And he replied with ease that "We were only targeting one question because of the time lost". So guys don't be afraid to ask questions.

~ The next day I got a call from my recruiter, she told that the feedback is very positive and the interviewer was happy with my speed and coding knowledge. I was happy and relieved at this point.

Then after she told me about the further rounds more clearly that there will 3 onsite rounds, these happen in google office. But in my case because of coronavirus pandemic, they all were virtual. I was informed that only after clearing these rounds with a good review I will be able to proceed with further rounds as competition was high and there were only a limited number of positions available.

Round 1-3:

These interviews were all scheduled in a single with a 15 min gap between each round.

In Round 1, I was asked a question on Strings. There was a lot of discussion in this round, around the various test cases. After completing the code he asked to write unit test cases for my code to check for all the corner cases.

In Round 2, I was asked a question on Backtracking. At first, he asked me for some mathematical proofs then we discussed about the approach to the basic question. After this he asked a follow up question with an increased conditions and dataset. After much discussion, the interviewer was happy with the approach and asked me to write the code and dry run it.

In Round 3, I was asked a question which went from basic DFS to DP. I got a little confused here as I had done the tabulation version not the memoization one for DP. So it took me a few minutes but I wrote the code.

The thing which I really liked (kind of messed up) was the code quality, apart from just solving the question like we do in other interviews. Here at Google, they really like to see the code quality. They judge you based on parameters such as:

How clean your code is, how easy is it to make modifications, etc. I used to take care of code quality while writing development code but never thought about it when doing DS algo problems.

~ After this I got to know that my reviews for 2 of the rounds were just above the boundary, also as I mentioned above the code was not clean enough. So my recruiter told me that I need to perform very well and have a strong review in the 4th round.

As I already got up to this position I didn't want to loose this opportunity. So I read about memoization and solved a few questions until I felt comfortable. I also brushed up my other topics during this time. Also, I looked at the editorials, blogs, etc. to see what improvements I can make in my code.

~ Never Repeat the same Mistake Again

Round 4 :

This happened the same day as the 5th one with a gap of 15 min. In this round I was asked a vague question with a small array which didn't have a final solution so we discussed through it and got to an approach. The solution was a bit on the mathematical side and I had to notice some patterns here and there. When the interviewer was happy with the approach he asked me to write the code for the same. In this round I tried to avoid any previous mistake and do better than my previous interviews. I wrote the code cleaner and faster.

Round 5 :

Round 5 was a non-technical Googliness round. The questions here revolve around your overall personality, how well do you work with others, how well do you work with the manager, the conflicts you faced, any steps you took to build something new or improve the existing process, etc. Be prepared for various situation based questions.

~ I was confident about these rounds, but like everyone else I was also nervous as I had just an above average score in previous two interviews.

So after a day I got the reviews from my recruiter and she told me that the last rounds went pretty good and I got a strong review in those hence my overall review is positive.

~ Interviews are finally over and I am selected ??

Right? Wrong!!! :D

Then my profile was sent further for a fitment call. This is a non interview call, where Director of Engineering, Product Manager or any other senior person from different teams will connect with you separately. It's to check if you are a good fit for the team from the Director's point of view and also for you to see in which team you want to go.

Luckily my profile was selected by Sanjeev Gupta (Director of Engineering) in Google Clouds system India. My recruiter told me it's a good sign to be picked up by someone directly.

So in the fitment call, he told me about the team(group of teams), current projects, scope, roadmap, etc. He asked me about my current role and team, the things I like to work upon, how do I get updated with the technology. It was more of a casual talk.

As I am inclined more towards backend, he recommended me for the backend team.

~ Yeah, finally the team is decided and I got the offer ??

Right? Wrong Again !!!

At this stage I was like "100-200 jyada lelo par land kara do" :P

My profile was now forwarded to the Google Hiring Committee (GHC), they asked for my degrees, a note about my experience, and an Internal Reference.

~ Internal Reference - First of all it's not a must have but a good to have. This is where someone who has worked with you before and is currently working at Google can write a recommendation for you. I had a senior with whom I worked in my freshman year and was currently working with Google. So, she helped me with my internal reference.

Then my profile was sent to GHC, luckily they saw me as a good fit, after that there were some approvals from VP etc.

So my recruiter called me and said

"Congratulations!!! You are selected!!! You can Jump, you can tell your parents or do whatever you would like to do!!!"


And seriously, at this moment I was dumbstruck I couldn't give a proper reply, I only replied with "Thank you very much".

As soon as I got off the phone with my recruiter, I called at home, to all my mentors and my friends.

It was such a relief ??.

No alt text provided for this image



Things I liked about the whole process

  • The people, they are very helpful and really knowledgeable.
  • The best recruiter, I have seen so far. She helped me throughout the process, gave the preparation material, helped me with the timings, gave me insights about each and every round as to what to expect, what I need to improve etc. The recruiters here really want you to succeed.
  • The interviewers not only just saw the algorithm but also the quality of code that I wrote, and at a good level which was really great. I have taken interviews with other companies and they look at the general things like if the code runs on all the test cases, variable names, etc., but here they want to you to write a production (which we write while developing large applications) level code for a simple DS algo problem.

Because of these things, I would encourage all of you to apply for Google even if you think you are not ready. Even if you don't get selected the experience that you will have during these interviews is unforgettable and you will learn a lot of things.

Also, it will make you fall in love with the company even before joining it.

Preparation Material:

Below mentioned are the resources which helped in problem solving and also in Google interview preparation:

GFG - Learn all the DS and algorithms there

InterviewBit - Practice here and try to do all the questions or until you get comfortable with things.

After I was done with above

Leetcode Google Premium - You will be able to see what to expect in the interviews and if you feel uncomfortable with some topics then practice more for same. It is not necessary as you can find similar questions in interview experiences available online at other websites for free. It's just that, in LeetCode premium you get an already made question bank for the same.

Tips:

As I am not a pro level coder or someone who do CP(Competitive programming) , I will tell you what worked for me.

  • Ask clarifying questions during interview, do not assume anything on your own
  • Don't start writing the code without finalizing the approach with the interviewer
  • Keep the interviewer engaged with your thinking process
  • Have a good grasp over basics
  • Be comfortable with all the DS and algo because if you know them 80% of problems are already solved.
  • I tried to understand the concept well and not solve too many problems for same but enough to make the concept a second nature of me. Now I can tell just by looking at a problem for 1-2 min that I could solve it or not and if yes how.
  • Mentors - Try to find mentors because when you study from a mentor all of their experience become yours and you will learn a lot in a very less time span.
  • Stress Management - I think this is the most important of all the points and people generally tend to avoid this just for the sake of solving a few extra problems. Guys, remember that it's not what you do before, but what you do in the interview matters. And that depends a lot on your mental state, I have seen some really good coders stressing themselves out in interviews and unable to solve some really easy questions. So don't stress yourself, because in the end, it's just a job. Don't ruin your brain for anything.
  • Stop doing any questions prior to a few days before interviews and try to enjoy other things to calm yourself. Try to get good sleep the day before interview.
  • If the interview is near, don't try to solve every question by yourself. If you are unable to solve a question don't waste your day or two for that. Just look at the solution, you will be able to learn a new concept. I have a logic which I follow during this time, I know I can solve 20-30 questions in a day and If I spend two days on a single question then I would miss out on those other questions, which I really don't want to do prior to interviews. If the interviews are not near, then try to solve the problems by yourself.
  • Don't judge yourself - This problem happens, especially with the one's who are just starting something new. They may try to do problem solving and find some problem which seems like impossible for them to solve and then they get demotivated, that "I can't do programming, it's too tough for me" and leave it. This happens with everyone and the top level coders you see are there because of the continuous practice day by day.
As Rome was not built on a single day,
Don't try to be red coder in a single day.

Me and my friend also took a session for interview preparation for juniors in my college, it's a bit specific to my college, but I think it will help those who are still there in college or in the initial phase of their career. Sorry for the bad video quality, this was the first time we tried something like this.

How we prepared for tech giants

Conclusion:

I have a few things to say here, will be going into details in further posts:

  • Don't just try to follow someone else's footsteps try to find what you like to do and which is also the need of the market.
  • Look for happiness rather than money
  • Don't trade learning for a short time win.
  • Learn how you learn.

And just go for it, if you see an opportunity then go for it, even if you think you are not ready.

No alt text provided for this image






Rajeev Kumar

Software Developer | Java, Spring Boot, Microservices | System Design | Problem Solver | NIT Trichy | Immediate Joiner | Exploring AI ??

1 个月

Nice One.

回复
Mrinmoy Kalita

? 3rd YR (Junior) Vit B || Google ML certified || AWS cloud practitioner certified || software developement enthusiast || programmer ( c++, python ) || Design principles

1 年

Thank you bhaiyya, however clean code actually needs more emphasis. I agree, I know about it.

回复
Tarun Verma

Software Engineer @ Oracle | Java | Docker | Kubernetes | Terraform | Former SDE intern @ Amazon | Computer science @NITC

1 年

Nice one.

回复
Vishali garg

Software Engineer at Google

3 年

Thanks hemant for sharing ...but how much time does it took after futment call for your recruiter to come back ?

Dipankar Kumar Singh

Engineer @Slice , Early @0xPPL . ICPC Regionalist

3 年

Very Detailed and Insightful

回复

要查看或添加评论,请登录

社区洞察

其他会员也浏览了