Preparing for Google
Bonjour Friends!
I had recently appeared for the interview of Software Engineer at Google. Luckily, I got selected. Following that, I got a lot of queries regarding the interview process and preparation. Since, I was not able to respond to the individual messages, I have tried to answer them here.
Applying to Google
The first and the easiest way to apply at Google is through their career page. You can apply for at most 3 positions at a time. This is how I had applied and I was fortunate enough to get a call from the recruiter. But, this may not always be the case considering the huge number of applications Google receives each year. Consequently, I believe referrals are a better option.
Our social profile speaks a lot about us, so maintaining a good LinkedIn profile is a good step in been noticed by the HRs which may also directly contact for any such opportunity.
Preparation
I got a lot of questions on how I prepared. Well, that is a tricky one. As to say for myself, I focussed a lot on problem solving ability. We should know our data structures and algorithms well because they are the tools for solving any problem. Next, we should be able to employ them correctly for our solution. For that, practice is a must. Here are some of the resources which I used for
- Books : Narsimha Karumanchi is a good read. It has almost all the concepts explained in an easy way. The book also contains some good problems and their solutions in a optimised manner. For deep diving in data structures and algorithms, Cormen is an excellent read. For interview preparations, Cracking The Coding Interview is a recommendable resource.
- HackerEarth tutorials : These are a good starting point for beginners. Along with learning the particular concept, we can get a hands-on experience here, which is great to start!
- InterviewBit : This is awesome in the sense that it has really a small amount of questions. They have a flowchart which one can simply follow and can go on conquering one topic at a time. The problem set is small but it helps to get the gist of that particular data structure and algorithm and makes one comfortable around them. They also have a timer going on recording how much time we spent on a question, which helps further to monitor progress.
- LeetCode : This is undoubtedly one of the best platforms for interview preparation. One can find problems related to all the different topics sorted by difficulty level and their frequency of been asked in an interview. You cannot help but fall in love with it. I kind of started with LeetCode very late so I used it in a manner that might prove beneficial to me. Since by the time I started doing LeetCode I had enough practice, so I used the platform efficiently to test myself. I would pick up a question without looking to which topic and difficulty level it belonged to try to solve it all by myself. The goal should be to finish an easy question in less than 15 minutes, a medium question in 15–30 minutes and a hard question within 45 minutes.
- GeeksForGeeks : One simply cannot skip GeeksForGeeks when it comes to interview preparation. It is like a dictionary for programmers. Both GeeksForGeeks and LeetCode have a section of interview experiences which one can refer to see the types of questions been asked recently.
- CodeForces : Competitive programming is crucial if not essential. I personally owe all my speed to CP. It not only helps to code faster but the learning curve in a competition goes exponentially up.
While these are the resources, the most important thing which helped me was to trying to solve the questions all by myself. We often tend to quickly look for solutions and spend less time in thinking ourselves while preparing. While this saves time, the former helps the brain to warm up and be ready to tackle totally unseen problems in an interview.
Luck does plays a role. But the more one practices, the less it counts.
Interview Process
The first round was a sort of a rapid fire round with the HR in which I was being asked some basic theoretical DSA questions. There were approximately 10–15 questions which I had to answer. That went pretty good for me. I was instantly asked to schedule the phone interview. I took one month of time for preparation. After qualifying for that, I had 4 virtual technical onsite rounds and 1 Googlyness(leadership) round.
The phone interview and the technical interviews were 45 minutes each. Since, I had applied for Software Engineer L3 position, I was not evaluated on the basis of design. All my interviews were purely on data structures and algorithms. I had to come up with the most optimised solution(s) and code it in Google Docs.
Everything is then evaluated by a Hiring Committee which takes the final decision.
That was me. I have kept it very short. Hope this helps in some way.
All the very best :)