My Experience Interviewing with Google!
what I learned and what you can learn too..😮💨
Starting this with a…SIGH! (Seriously, I have to do this)
All right. Before writing anything, and everything, let me say to you one very important thing — learn from my mistakes!
Disclaimer — Generally, I use my medium handle to write and publish articles focusing on core data science and machine learning. But this one is going to be something entirely different. Though the sole purpose of this article is to do a “failures and mistakes revision” session before my next interviews, I decided to pen down this article, as there are lots of good programmers out there who are even struggling to get their resumes shortlisted and referrals accepted by FAANG companies, let alone getting a chance of being interviewed. This will be of real help, so make sure to read till the end.
I have broken down this article into 4 different phases-
- My experience interviewing with Google and life lessons learned.
- Resume getting shortlisted by FAANG but failing interviews.
- Resume not getting shortlisted? Tips on that to improve your chances.
- Competitive Programming — required or not?
1st things 1st, let’s get to phase 1.
My experience interviewing with Google and life lessons learned.
How it all began
It was a regular day in mid to late July. I was relaxing with my evening tea after the tiring morning-to-noon coding sessions, and scrolling through Instagram reels. Suddenly, I saw a job posting on one of Instagram’s job update pages (cannot recall the name) saying “Google is taking applications for SWE intern, winter 2023…Apply here!”. IDK, what I was thinking, at that time. I just applied. 👀
You must be thinking, “Who does that man? Just randomly APPLIED to Google?”
Yes, I did. Because I was so confident, that, being from a college that nobody outside my home state can identify, I have little to no chance of getting my resume shortlisted among the huge ~60k applications they receive each year.
I WAS SO WRONG, LOL.
A Google recruiter mailed me back on the 24th of August. It said something like this…
I couldn't decide if I would yell in happiness or cry the shit out of me. I had an unexplainable sort of mixed feelings going on inside me. One part of it was like, “Did just Google call you for the interview, you piece of dust?” and another was like, “You are not ready for this, you know that, right?”
Yes. I knew I wasn’t ready for this. I was (rather I am) participating in regular on-campus placements (of mostly service-based MNCs) that have started in my college, giving their aptitude and coding rounds and interviews which have no matching standards to what is asked at F(M)AANG, and most importantly due to regular exams and interviews, my “product-based” preparation was getting a bit slow and not up to the mark. When I say up to the mark, I mean, I was not getting a solid 10 to 14 hours a day to just focus on problem-solving and coding.
After this mail…
So now that I have been shortlisted for the interviews, I have to face it. There’s no time left to think, “Tf will I do in the interviews?”
I compiled all opinions and resources from literally everyone I thought I could take, wrote my strategies down on a sticky note, and started to solve problems for almost the entire day (17–18 hours straight, give or take). Anything else I did during those days, was to leave my laptop alone for 5 mins to swallow my lunch and dinner…hmm, that’s all I remember.
I knew I had at most 10 days, for my interview, so in those 10 days, I have to give my 100% potential and do AS MANY PROBLEMS AS I CAN and cover ALL DSA.
Poor me :). Let me show you my toxic schedule. I made it up to the 10th of September. Little did I know, they will call me for the first round on the 7th of Sept, lol.
So, I made this at 3.40 AM on 29th August. When I woke up the next day, I refreshed my mail and a mail popped into my inbox — my interviews were scheduled by a recruiting coordinator at Google.
My interviews were scheduled for the 7th of September, and hence the strategy above had to be modified a bit. After replanning, I sat down with my laptop and notes, to cover all topics and stepped on the journey to learn everything in a week lol (later on, on why this is not a good way to prepare). But I was desperate, as always, trying to give my best no matter what toll it takes on my physical and mental well-being.
The 1st Round of Interview…
Finally, the day came. The previous night, I had too many panic sessions to manage a good sleep for me. Though I decided to take this interview opportunity solely as a learning purpose for cracking the PBC-s, I always have this “you could do better” thing going on, for which I faced a lot of burnout. I reached that level where I was solving problems on leetcode even 15 mins before my interview.
So, I joined the Virtual Interview Platform at 3.25 PM and waited for my interviewer over Google Meet. He joined after 5 mins and greeted me. He asked me to introduce myself, and so did I. He appreciated the work I put on my resume, and then we moved forward to the coding question.
The best feeling was when he said, “Okay great, now let me write a question, and then we will discuss the various solutions together”. You saw that, right? It immediately blew away half of my nervousness, take a leap of faith as I was not alone in this, and this is NOT an exam, it’s like solving an interesting question with a senior!
Then he wrote the question on the coding doc (much like the Google doc thingy). I cannot disclose the exact question due to the NDA document I signed, but all I can say is, that it was a medium difficulty question based on intervals. He started it as a warm-up question and asked me to explain what I was thinking. I solved important interview questions from every topic that ever existed, and yes, intervals were one of them. I was happy and asked some clarifying questions to avoid jumping on the wrong side. He clarified my doubts, and then I explained my brute-force approach. He asked me time complexity, and I said it was O(N).
Then he levelled up the question, this time it shifted from medium to somewhere between medium and hard. I modified my previous approach, to optimize it a bit by using a two-pointer/ sliding window approach, which will help me to prune some unnecessary calculations by enhancing a “shrinking search space” strategy. He seemed satisfied and said, “you are thinking in the right way, try to think a little bit more and improve the TC to O(log N).” When he said “log N”, my brain went…” BINARY SEARCHHHHH”.
I explained the binary search approach to him. He asked me if I wished to code as I had only 15 mins left, or if I would like to challenge my thinking more, and then he will ask me another follow-up question. He was enjoying the interview, and so was I. I preferred the follow-up question and asked him to ask me the final hurdle. Likewise, he smiled back and asked it. I thought for a while, and I answered straight away. It was close to a leetcode hard one 😂.
I had only 6 mins left to code out the optimal approach, and he said “alright, just do the binary search, no need to do the last part”. I am not yet that much comfortable with fast coding, and carrying out a binary search on intervals is a bit time-taking. I did it in a rush and got a few bugs on my way. While he pointed it out, I understood and fixed it. Overall, he seemed satisfied (not sure if he was, but according to me, I did better than I ever imagined I could). So it was personally a win for me, a HUGE growth.
After that, he asked me to leave the editor for some chit-chat. He was very friendly, felt like I am talking to my cousin, lol. He gave me feedback that I need to practice coding in a time-bounded environment, as it helps in situations where the brain fails to work (mind block) under strict time constraints. He asked me to try and solve questions with a 15-minute timer, and do Codeforces/Codechef contests(I am not a competitive programmer and prefer ONLY Leetcode, and I am more of a dev person). He said he was an ICPC world finalist and represented India in ACM-ICPC 2020 in Moscow!! He had no complaints about my problem-solving skills, as I aced it.
I qualified for my 1st round and advanced to the final one.
What LESSONS I took that will help me further — PART I
- Though I am not a competitive coder, and If you too aren’t, it’s absolutely fine. He didn’t ask me to get into CP(or maybe he did, in that case, he is WRONG). And since he is a CP person, he mentioned his favourite coding platform/s. That's fine. But let's understand what he meant in the bigger picture —
When you are interviewing at FAANG, you need to get this straight, you have strictly 45 mins, after which they expect a working, and optimal(depends on question and level of experience) solution. If I do the math, the first 5 mins are passed with intros and bla-blahs, the next, 15 mins on explaining and discussing approaches, and an additional 10mins if you are facing a problem and being given hints to think. That takes up the next 25 mins. So, 30 mins gone, and you now have only 15 mins. So YES, you need to be able to code real fast to write down your solution in 15 mins and I think that it’s a bit hard when it’s an undergraduate/fresher/entry-level interview, and you have 0 software engineering experience.
Platforms like Codeforces and CodeChef provide an environment where you need to solve challenging problems in very, very less time. It helps you get acquainted with fast-paced coding and translate your approach to code quickly. And for doing that, just 2–3 hrs per week on CodeChef/Codeforces is more than enough. No need to become a “Codeforces MASTER” or the fancy words people use, Codeforces Grandmaster, CodeChef Thanos, whatever, go for it if you have a passion for it, but for interview purposes, 2–3 HOURS is more than enough (AGAIN, go for it if you are willing to, there’s absolutely 0 necessity to do CP for getting fast at coding. There are much better alternatives. More on that later…)
Give the rest of the time to leetcode contests, brushing up on DSA questions on leetcode which companies tweak and give in interviews directly from Leetcode.
Protip — Even if you don’t like competitive coding (at ALL, chill I hate CP too; you don’t have to join the rat race), but still want to become fast at coding your approaches, then sticking to LeetCode contests, and developing projects on your preferred languages/frameworks in shorter deadlines, contributing to open source will also help you do that, even more efficiently! Getting into dev as well as practising DSA and problem solving will help you deal with real-world problems and not weird questions on CodeChef/Codeforces that are USELESS for job preparation.
YES, COMPLETELY USELESS.
Note — If anyone is suggesting you to do CP to prepare for job interviews, please kindly and blindly ignore that advice. Just don’t bother from where or whom that piece of advice came. Many big “influencers” are spreading wrong advice on doing CP for job interviews.
Try to follow the right person from the huge pool of tech influencers. 👈🏼
If I haven’t got this awesome opportunity, I would never figure this out, I would do it at my own pace which is NOT enough for PBC interviews. Practice coding REAL FAST.
2. When you get a question, where you feel like you are stuck, brainstorm your mind with literally every topic of DSA.
“Will heap work here? No. Okay, what about two-pointers? NAH. Wait, this has choice-based calculations with indexes, is it BACKTRACKING? DAMN YES.
It helps you save time, as it’s not a pair programming session with your friends or boyfriend, you have lesser time than you imagine. Be sincere about saving time to code. Without code, there’s no win. No matter how well you explained your approach.
The 2nd and FINAL Round of Interview…
On the previous day, I was quite satisfied with my interview, and my panic attacks did slow down a bit. I figured out I am breathing after a long time, WOW I AM BREATHING.
My final interview was scheduled for 2 pm on 8th Sept. Yeah yesterday lol.
Again, my forehead was sweating, fingers crossed. Anxiety and stress had already eaten up half of my neurons. I knew today it’s going to be hard. Really hard. I took two deep breaths and pressed the “join as an interviewee” button.
After some time the interviewer came. He said ‘Hi’ in a very awkward way, it didn’t sound friendly…, whatever, I needed a friendly hi, but….shit happens, not all days are good, and not all people are friendly. He introduced himself, and so did I. Then he asked me if I could see the editor, and I was a bit shocked,……he already had an approx. 7-line long problem statement ready for me. 🤐
“You are so ruined……I don’t have the answer to this”, my brain replied to me. Ya, I could feel my brain saying this to me.
It was awfully weird as well as, a hard question. To me, at least. It was a dynamic programming question hidden behind a lot of stories to confuse you in an interview setting. For the first 7 minutes, I was totally blank, and couldn’t figure out what to do. REAL STUCK. I asked a lot, and a lot and a lot of clarifying questions, but sadly, his answers did not help me improve my thinking, but it felt like I am in a wormhole of confusion. I never saw that question, even after solving 2 dsa sheets of 300+ questions and also more than 250+ questions on leetcode, GFG, no nothing was even close to this one, nothing!
Unfortunately, whilst explaining my approaches, whatever stupid idea came to my mind, I told him all. And after every explanation of mine, he just said “no you cannot do this, not you cannot do that”... by changing some test cases he showed me I am going in the wrong direction, and all it did was make me feel more miserable. Again, shit happens…
35mins passed, and I was blank. There was a greedy approach I decided to tell but I figured that it won’t work out due to non-uniformity in the values. My last resort was dynamic programming and asked if that will do. Now he said, “Yes, it involves recursion, but I expect you do give an optimized dynamic programming solution, so think and say your DP approach..”
I stumbled, repeated whatever shit I was talking about, tried to explain something I couldn’t figure out totally, and gave a vague but ok-ok explanation, followed by some broken code. I knew what to do in the code, but by then, my brain and spirit already said goodbye, we are leaving….
He was giving a neutral look and definitely wasn’t satisfied.
Even though it felt devastating and disturbing for a bit, I realized that I couldn’t have done it any better, at least this time. I explained more than I thought I had knowledge of, crossed my thinking boundaries and tried till the last minute. In the final 2 minutes, he explained the solution.
He gave me feedback that I need to work on solving hard dynamic programming problems, not just medium. He suggested me to solve hard DP problems from leetcode, only hard ( which sounded a bit odd, I never heard any Googler suggesting that..)
I didn’t ask him any other questions(I cannot pretend I am curious or interested in someone when I am not, just strictly not my thing) and just ended my call after saying goodbye, and praying of getting a better interviewer in my next Google or be it any other interviews.
What LESSONS I took that will help me further — PART II
- Before giving the interview, I read a LOT of threads from Quora and a ton of blogs. I read everybody saying that all of their interviewers were extremely friendly and helpful. So by default, I assumed I will get hints. After the interview, I figured out that there’s a lot of randomness in the hiring and interview process, and that there are ZERO guarantees that your interviewer will always be helpful. It should always be YOU, who you will trust blindly and expect to get help from. Never go to the interview thinking you will be helped every time. Sometimes, like you, your interviewer may not be in the mood to talk much, maybe they had a bad day, maybe they don’t prefer talking much, or maybe, sometimes, they may expect you to figure out the solution all by yourself.
So here’s the RULE — Be prepared in such a way that you can handle any situation. No matter how bad it may turn, your preparation should help you even if the interviewer isn’t willing to help. Go for that extra hours of preparation and strive for that excellence that you WON’T HAVE TO BE DEPENDENT ON ANYBODY, EVER.
2. Don’t spend too much time on LeetCode Easy tag problems. They are of no use for FAANG interviews. After 100 easy, do only MEDIUM and HARD problems topics and don’t try to miss a single leetcode competition. The first 2–3 contests on LeetCode will make you feel like a loser, but all winners were terrible losers one day😄. TRUST THE PROCESS, and you never have to think about the results. They will come to you.
So, that’s all about the interview experience. I will attach some resources below, which were definitely helpful, and you will find them handy while your preparation.
Resources -
- DSA + Problem Solving — Leetcode, is the only place I prefer. However, for getting fast at problem-solving, you may give 2–3 hours a week to Codeforces or CodeChef.
- Wanna learn DSA the right way? Kunal Kushwaha’s DSA Playlist is GOLD.
- TopCoder’s take on Dynamic Programming
- NeetCode’s MUST DO SHEET(Both Blind 75 and NeetCode 150)
- Striver’s SDE Sheet
- Learn DP from Striver’s DP playlist — BEST on Youtube so far
- Pramp — Most real-time Mock Interviews (though I did mock interviews with my boyfriend🥲, Pramp is especially helpful if you are not acquainted with communicating properly with new people)
9. System Design — Gaurav Sen’s playlist (in case you have a System Design round)
I guess that should be enough.
Resume getting shortlisted by FAANG but failing interviews
If you are someone, who is facing this, let me say to you, IT’S OK. Read what a Google engineer says -
Sit down, relax, and be proud of yourself that you made it this far. People struggle to get a chance of getting their resumes shortlisted, and are still hoping to be invited for an interview someday. Even after applying with referrals, many people don’t get their resumes shortlisted. Congratulate yourself that you passed the most important hurdle — a harder thing than the interview itself — getting shortlisted for an interview!
Next, if you couldn’t make it, and feel terrible about it, then you might be surprised at how many people failed at their first Google interview. Not only Google, be it Meta or Microsoft or Amazon, the numbers will surprise you. Maximum engineers working there, except a handful of exceptional ones, qualified after their 3rd/4th or even in some cases after 13/14th attempt.
And they know, what is the secret to getting into these giants…I know now too…
“The more interviews you give here, the better are your chances of cracking it the next time..”
Their interviews are designed to be of a “masterclass” type. Where you solve the most unique and challenging problems with their engineers and come together to a solution. When you get to experience this, it improves your perception of solving problems and helps you figure out your weak points and potential gaps. After coming out of the interview, you work specifically on these weak points, fine-tune your preparation, and eventually get ready and try again. Over time, you grow up to be a more professional problem solver, and they eventually hire you! So, you need to work on yourself and keep giving interviews, and that one day will come when they will roll out the offer to you!
Never give up.
These people are talking w.r.t Google, but the story is the same, for every Product Based Company.
So, wear your failure proudly, dust yourself off and get working again!
Resume not getting shortlisted? Tips on that to improve your chances
First things first, keep it a 1-page resume. They throw away 2–3 page resumes.
- Projects — very, very, very Important! Develop some websites, build some APIs, some cool android apps, or use AI/ML to create cool predictive tools and technologies! Don’t just spend your entire college life-giving coding contests..you are ultimately going to become a software engineer, in the long run, you need to explore your profession as early as possible in your career.
- Internships — Getting a good internship is hard. From my experience, I can say, you get good internships if you either have great projects, or you interned somewhere before (it can be anywhere). So first develop some good projects, and rigorously keep applying on Internshala, for the technical role you prefer. For people in their sophomore years, I suggest you try this from the very 1st year of your college. Prefinal and final years of your university will be a tough time where either you have to give your entire energy into problem-solving and coding for cracking product-based companies as well as sit for your on-campus placements.
Plan your career in the very 1st year of college, at least that’s what I did. If your circle is not so productive, choose and get into a productive circle, where you mutually learn and grow. You will learn everything from college except engineering, so focus on self-paced and group learning as soon as possible.
3. Focus on Quality over Quantity — Keep your resume, short, and concise, and fine-tune it every time before applying to a particular position. Make sure you add some keywords that match the job you’re applying to. Most companies have an NLP-based pipeline that shortlists resumes based on job-specific keywords ( even I developed one keyword extraction pipeline for resume shortlisting during one of my internships). So even if you have a great resume, yours might not pop up as a shortlisted one if it missed out on relevant keywords.
Next thing is, to make sure you point out “what you achieved” during your internship rather than “what you did”. Focus on accomplishments, not responsibilities. These tech giants are interested to know what you achieved, by developing something, not just what you used to build them.
4. Try Latex for writing your resume — I see a lot of people use online resume-building platforms to build their resumes. Avoid doing that, it will do you no good. Companies like Amazon, Google, and Microsoft (and almost all of the PBC-s) have a special obsession with latex-created resumes. They look professional and provide much better formatting than Word with superior quality. Check out mine, which was shortlisted by Google.
5. Added Brownie Points — If you have a part-time hobby, that is directly related to any technology, like freelancing or technical blogging, or youtube channels where you teach tech, make sure to put that in your resume. They love it when you are a bit tech-savvy and love to explore tech. I decided to learn Data Science and Machine Learning as well as teach what I learned through my blogs, and it not only helped me become good in the subject but also elevated and outshined my resume.
Competitive Programming — is it Mandatory?
The answer is that it’s not at all mandatory, but you are encouraged to try it. The reason is, that you get to solve questions and run your brain faster. As I mentioned above, I struggled to code fast in the last 6mins of the interview. Competitive programming helps you there. So, I will suggest spending 2–3 hours a week on Codeforces and Codechef and also give every LeetCode contest and try to solve at least 3 out of 4 questions in the 1hr 30mins time frame. This requires dedication and doesn’t come in a day. So prepare yourself accordingly and get uncomfortable.
Lastly, PRACTICE, PRACTICE AND PRACTICE! The more you practice, the more you get a step ahead of cracking FAANG.
An extra piece of advice I learnt after interviewing with Google is — Apply. Yes, just do it. The more you get to experience interviews at these companies, the more your chances will improve the next time. There is no limit like “this is my last interview with Google, or whatever”. Keep on working, keep on applying, keep on giving interviews, and surely you get it after your n-th attempt. 😄
Major Takeaways
- Give yourself time to prepare. I will definitely encourage you to keep applying until you make it, but not randomly. Never. Give yourself time to practice and prepare, and apply when you feel ready. Applying randomly will take a toll on your mental health, and stress you out, causing extreme burnout (I could not eat properly and sleep for 2 weeks due to constant panic attacks, it’s no joke. Your mental health should be the top priority, always.)
- These companies tend to test you brutally on your knowledge, experiences, views and problem-solving skills. So, If you can’t think of the optimal solution and feel stuck in a loop, then better tell a shitty solution first. It is at least better than no solution. It slightly (delta slightly) increases your chances of getting points.
- As every people who interviewed at Google say, Think Out Loud. Explain whatever comes to your mind to the interviewer. They are there to help you, only if you let them know what you are thinking. They are no astrologers.
- Grind LeetCode as much as you can. No limit. Just keep on solving. Seriously, no thresholds like 200 or 300. Do as much as you like, do as much as you can. Push the damn boundaries. Coffee is always available in your nearby shop.
- Have plenty of sleep and rest before your interview. Trust me, I felt extreme fatigue and burnout and was feeling terribly weak before my interviews, due to improper rest and a toxic level of overwork. That was not necessary if I look back now.
- Get this one straight. Sometimes it’s just great, and sometimes, it’s a lucky draw. Even if you are prepared enough, often there will be biases going on or you may get a sick question. If you fail, chill. Just don’t give up and be grateful that you were given the chance of interviewing. Not many people get that.
- Work on yourself and improve. Gain relevant experience. Grow. There will always be new opportunities, either in Google or at another. A single company shouldn’t be your target. Your ultimate target should be moving to a great work culture at a great organization!
Final Words…
I haven’t yet got my interview results, but based on my 2nd interview experience, there’s no chance or hope of a positive reply. I didn’t even sit for the interview with the hope to get an offer in the first place and took this opportunity they provided me to improve myself and gather them up for my next preparation and interviews.
A piece of advice from Coding Ninjas…
You will hear that many of the Google employees did not make it in their first attempt at the interview. All the stories have one common factor, persistence. They never gave up. Learn from your mistakes, prepare accordingly, and improve as much as you can.
Self-criticism doesn’t help a lot. Rejection does not indicate you are not good enough, it’s just an indication that you may need to prepare more or you need more experience in a few areas.
Lectures apart…
If you are a beginner in Data Science and Machine Learning and have some specific queries with regard to Data Science/ML-AI, guidance for Career Transition to Data Science, Interview/Resume Preparation or even want to get a Mock Interview before your D-Day, feel free to book a 1:1 call here. I will be happy to help!