The secret formula to crack Google’s Interview Process
Hi everyone, I know a lot of you are wondering where am I going wrong, am I missing something in my preparation or what do I have to do to crack Google.
Here is my take how one should prepare for Google’s process in an easy non-frustrating way. I am going to talk about things no one mentions about and these are as much as important as having the knowledge of the Software Engineer domain. I hope you find this article useful and do let me know what you think about it.
What is Google looking for?
Needless to say google is looking for top-notch set of developers across the globe but they are also looking for an x-factor which is what separates googlers from the rest of the crowd.
The Secret Formula
X-Factor = Algorithmic Knowledge + Problem Solving + Communication + Speed
Algorithmic Knowledge — Google expects you to have not good but great algorithmic knowledge. You should be knowing all the basic and some important advanced algorithms. If you are a person who crams a lot I would advise you to also pray a lot in the interviews. Cramming never helps! Advance algorithms are usually made up of basic algorithms itself. The only best approach to learn advance algorithms is to try to divide the algorithms into sub-algorithms and then adapt it by using them in some other problems and this comes with experience only.
Problem Solving — Google is looking out for people who understands the passion behind solving problems. If you are someone who tries to understand the mechanisms/working behind everyday applications or tries to solve the problems that are not visible to the naked eye, then yes you are a really good fit. Problem Solving includes creativity and sharpness. I play a chess a lot, I mean a lot which helped me develop pattern recognition and helped me make decisions both visually and analytically. It improved my problem solving creativity a lot and no I didn’t chose my opening move as Queen’s Gambit. I used to do competitive programming (It is not a must have but it is good to have).
Communication — Communication is the key. Probably one of the reason most people are suffering even though having a good talent and knowledge about the domain. It’s easy to say not to be nervous but everyone gets a bit nervous during the interviews which sometimes impact our performance. Even I was struggling with this, so two piece of advice my friend gave me which I really consider the best is first just before the interviews ask yourself in heart what is your end goal and say to yourself that yes you have done enough preparation for this and you have got what it takes! Bring it on! and second Don’t ever think of this as an interview I repeat don’t instead take this as a discussion that you do with your friend. Interviewer is not sitting to reject you instead they are there to accept you. Just like an arrange marriage, they will only reject you if you give something to reject! This helped me a lot in boosting my confidence up and I also played ‘Never say Never by Justin Bieber’ before my every interview, please don’t judge me! Don’t defend yourself if interviewer points something wrong in your answer instead accept it and amend it. So remember staying confident is the key.
Speed — Again a really important factor for google. Everyone knows how to code but to solve a problem with the right speed is very very crucial. I am not building up any pressure but yes they expect to ask you at least 2 questions in the interview and things are probably (not in every case unless the question they have asked is of hard difficulty) on the negative side if you wound up only solving one problem. Time yourself out. Take around 15–20 mins for solving medium questions and be prepared for follow-ups Google loves to ask follow-ups as they want to see how much easily can you deal with modifications.
Don’t Over prepare
Do not over prepare. I have seen people having FOMO which leads them to solve more questions than needed thinking they need to solve every question they see in be it leetcode or geeksforgeeks.org! Even if you have this urge try to apply 3 minute rule in which just give yourself just 3 minutes to think of the algorithm in your head after reading and move on. Because if you are not able to think within 3 minutes you probably won’t be able to think of the algorithms anyways in an actual interview. Fight this urge to solve amount of questions which are greater than your capacity.
Tips during an Interview
- Prepare a 30 seconds introduction of yourself. Google Interviewers are more focused to assess your Technical skills as you have been already screened based upon your introduction in your screening round.
- Make sure your read/understand the question carefully. I cannot emphasis much on this that how important it is to understand the question carefully. Please I repeat Please spend ample amount of time in understanding the question. Do not think the interviewer will judge you if you are constantly asking questions. Ask meaningful and clarifying questions. I used to make multiline comments (I used C++) and I specified each and every detail interviewer is telling me. Eg- /* N ≤ 10⁶, i < j, element cannot move more than 2 steps in a transaction, numbers can be negative etc */. You see this establishes whatever interviewer is saying as you have a written proof. Also it helps in a way that you can think of more clarifying questions while you are typing these comments out. Do not move forward unless each and every bit of detail is clear to you.
- Take a pause now 30 seconds is fine. Think out of an algorithm does not have to optimal at first but if it is already optimal than you have owned the game my friend! Give that approach. Take an example and explain them not just verbally but also typing them out in your google doc/code editor. Explain them how it will work and how the example will also cover the edge cases. If you are not able to think of an example ask them that you need an example. Don’t be afraid.
- Don’t get scared if interviewer is pointing something out I know people usually tend to loose confidence here itself that why is the interviewer is pointing this out. Ohh shit! I have made a mistake! It is never like that. The interviewer just only wants to understand what were you thinking while you established the fact you stated and accept it if you have done a minor mistake and amend it quickly.
- Take at max first 5 mins to think out of an approach including the 3 minute rule and spend the next 8–9 minutes in discussing your approach and optimising it (no I am not mad, 8–9 minutes is sufficient if you are prepared enough) and spend the last 6–7 minutes in coding out the problem after you have the CONSENT of the interviewer.
- Write down neat code, do add comments only the important ones. There is no need to add comments like //using for loop here or //adding the elements instead comments which explains the purpose of the whole piece of code that you have written.
- The more you give something to them that they can use into your feedback the better it is. Show them that you know STL in deep, how they are implemented. Show them that you are not backing down even if you are not able to solve the problem. Show them you don’t directly jump to the problem instead you take your time and then act upon it. Just a tip: Don’t use unary if condition in interviews ( (isBooked)?return 1: return 0;)
- Googlyness and Leadership — Please don’t take this round casually. As I have seen many people getting rejected because google could not find googlyness in them. This being said pull out your resume and read it carefully and close your eyes and try to revisit your resume in detailed milestone and capture each and every story that you feel had made a positive impact in your software development journey. Note these stories out and prepare them in a STAR format. This round consists of two sections in which they will ask you questions about Tell me about a time when something happened and second they will put you in a situation and assess your reaction. Ex — You are a head of this product as Lead Software Engineer and two of your teammates had a conflict about certain algorithm How will you assess it?.
- Lastly interviewers will give you 5 mins to ask questions to them Please don’t waste this opportunity by asking can you tell me my feedback! Dude you are anyways going to get your feedback through your recruiter (in some cases) so don’t waste it. Instead ask them some casual good questions like what problems are they working on in brief? See if you can relate with any news you heard. Ask them about the daily challenges they face and how is life at google. Ask them how the growth looks like at google. etc like this you can ask many questions.
Resources
- I never followed any youtube channel for my preparation I was never fond of any bhaiyas/didis for DSA preparation. Instead I used to look out for tips and tricks for interviews preparation but I could not find much content on that so I will be starting my own channel depending upon the feedback I get on this article in which I want to give insights for the interview preparation to the deepest level so that audience can actually understand what is going wrong because I have been there and It took me a lot of time to crack what was it. Ahh! Finally!
- Keeping it Simple — I recommend this God’s book ‘Data Structures and Algorithms made Easy’ by Narasimha Karumanchi. This book has got crystal clear explanation of all the algorithms and all good software engineers have referred to it while preparing the coding interviews. Secondly you can also refer to ‘Cracking the coding interviews’ by Gayle Laakmann McDowell. This book is heavy so give it a read if you have time.
- I highly recommend to practise consistently on Leetcode. Do not practise a lot of questions but practise quality questions. I used to list down all the data structures and algorithms topics and I used to tick mark myself that I know these topics and what I don’t know I used to touch those topics very slowly. Like you I was also scared of graphs and Dynamic programming. I started to solve graphs using my imagination like drawing circular nodes in my head and placing myself at the starting point and I have to go to the destination point. This helped me a lot. But again its about giving time to yourself and these topics. initially you will see you are not able to solve it but Don’t beat yourself up. Just don’t give up you are almost there and I am rooting for you!
- I also highly recommend to try pramp.com. This is a platform where you can take and give mock interviews for free. The questions lined up here are pretty apt and amazing and are of the level big tech companies are asking these days. Time yourself and improve with the help of feedback.
- There are a lots of resources you can follow on DSA I am not going to go specifically into that but what I can say just believe in the path you are taking and don’t randomly follow anyone. That’s why I preferred books instead of people and It helped me a lot in removing the ambiguity or conflicts I was having in concepts.
- If you are getting rejected constantly and not able to figure out what is going wrong? — Prepare an excel sheet in which prepare what all companies have you interviewed for. Write down their questions. start reading those questions and ask yourself if you were to be given any of these question at any random point of time in life will you be able to solve it. If the answer is no, then probably your problem solving ability is still not upto the mark. Practise until you are able to solve every question at any point in time just like you solve 2+3 = 5 in your head. If the answer is yes, probably the lagging point could be in your speed or communication for that matter.
FAQs
- What should I focus on for interviews competitive programming or development? — I hate to even get into this debate. Competitive programming or development has nothing to do with your interviews competitive programming helps in building problem solving creativity and development helps in building your profile which will get you shortlisted. The only thing you should focus on getting your concepts clear for DSA.
- I am working in other domain than software engineering can I still crack google? — The answer is yes It just takes immense hard work and perseverance to crack google but it is not impossible. Firstly you need to develop a portfolio around software engineering with amazing projects. It will take time. Meanwhile start practicing DSA on a beginner level. Understand why is there a need to store data into these format etc. Slowly get hold on DSA. Participate in coding competitions, give mock interviews build confidence. You will definitely see some progress. This process is going to take time but you can achieve it if you are consistent.
- Does Google hires only experienced candidates? — No, It is definitely not like that I have seen google hiring just graduates for Software Engineer position. It’s just you need to have what google wants to see in its candidates.
What am I going to do?
I have seen people struggling with lack of motivation as they usually know DSA but they don’t know what could be the lagging points so I am going to start an Instagram page in which I will be sharing short videos on tips and tricks or hacks while preparing for this interview named techmunks. The idea is to share the deepest of the tricks in fun and interactive manner which you will be seeing me roasting my fellow techmunks and providing you the necessary info.
Let me know if you have any thoughts about this idea in which we can improve.
Last Insider Tip: Don’t be scared of the interviewer they are also under the same pressure like you. Their job is to make sure that you are comfortable enough so that you bring out your A game. Use this to play your cards right.
Let’s Discuss
Still have doubts. Let’s connect. You can ping me anywhere you want. Looking forward to meet you at google while I enjoy my free food. I will be actively responding to comments, please let me know what are your thoughts and share this with someone who you think needs this right now! Caio!