TLDR: Discussion is the more important part of the interview, Master the fundamentals, Be ready to get creative
When I got my first interview at Google, I had 0 engineering experience. I went through the phone screen and completely failed, realizing that I was way less prepared than I had imagined.
Right after I failed, I put an invite on my calendar for exactly a year later to follow up with the recruiter and reapply.
I then started the “typical” study path based on my google research, which was grinding CTCI & Leetcode every day. As I approached my interview, I had over 200 Leetcode problems under my belt and had practiced cracking the coding interview (CTCI) from front to back.
According to the internet, I was ready for this coding interview.
A year later, I got to my Google interview and left thinking “maybe I passed”. I spent most of the interview feeling uncomfortable. The interviewer asked random questions that were nothing like what I had been studying. They were very math-heavy and way more abstract, lacking a lot of detail.
There was also way more discussion around the problem solving, which I was definitely not expecting. I was used to just trying to code up a solution as fast as possible. There wasn’t an exact moment that I felt like I failed, but I felt confused and unsure about myself throughout the interview.
When I got the email that I didn’t get the job, I felt sick. I spent a whole year of my life dedicating myself to studying for this interview. I missed out on social and family events and it was for nothing. On top of that, I was doing everything that everyone told me to do, how could I have failed?
I, again, put a calendar reminder to myself a year later to re-reach out to the recruiter I had been in contact with for another shot.
After letting myself be depressed for a week, I finally said screw the common advice, I am going to build a plan based on my interview experience.
My plan was based on three things I learned:
Discussion is the most important part of this interview. Being able to articulate your thoughts very clearly is huge. This means talking through your thought process and staying calm when you do not know what to do. You want the interviewer to think that you are someone they could work with and depend on. Not someone who gets frazzled and rambles. Mock interviews helped me practice this skill.
Mastering the Fundamentals
This is not a memorization exam. Even if I had every Leetcode problem memorized I would have failed. I remember that during one of my interviews I was asked to simplify a huge equation and if I didn’t understand how logs worked then I wouldn’t be able to do it. You need to go back to the basics, learn the math, and understand the fundamentals from the ground up.
Be Ready to Get Creative
Expect to get a problem that you have never seen before. It was extremely rare for an interviewer to ask me a question I had already solved. This meant I needed to be comfortable getting creative and working through problems on the fly.
I studied for another year and ended up interviewing with Facebook & Google. I created a framework to keep myself on track as well as a sheet that I used to approach every programming interview regardless of the topic. I entered both interviews with the mentality “I don’t know what they could possibly ask me that I wouldn’t already know”. This confidence carried and after crushing both interviews, I knew there was no way I didn’t get offers from both companies. And I did. I’m not ashamed to admit I cried like a baby when I got the call that I got the job at both Facebook & Google.
What worked for me was more than the “typical” study path that the internet gave me. It includes a much more holistic approach to understanding programming fundamentals, improving communication, and learning to get creative instead of freezing up. Without that, I would have never gotten to where I am today. I ended up working at Facebook as a software engineer for 4 years and although it took me a while, I can confidently say it was worth it.
I created Hackpack, a hyperactive community of engineers studying for programming interviews. Hackpack is a community built on support, holding each other accountable, and making sure no one wastes two years of their life studying for programming interviews like I did.