It seems no developer’s blog is complete without a post on their FANG interview experience, even in 2020.
At the risk of just producing a long-winded flex, I wanted to share my own journey on interviewing and ultimately receiving an offer from Google over this summer.
I believe my perspective is unique in that I have less than a year of professional programming experience. I enrolled in a 6-month web development Bootcamp last Fall, graduated in March, started studying data structures and algorithms in May, and received an offer at the end of July. Hopefully somebody out there finds this content worth the read.
TL; DR
I spent about 6 weeks spending most of my spare time grinding Leetcode problems. Having absolutely nothing else to do while in quarantine helped make it feel less sad.
Getting In The Door
In May, about 2 months after the delightful timing of both my Bootcamp Graduation and the beginning of COVID, I got an email from a Google recruiter about development roles. Confident it was some kind of error on their part, I signed up for a phone chat anyways.
To this day, I don’t actually know how I got in the recruiting pipeline for software engineering roles. About 3 years ago, a friend had referred me for a Product Design role. I was brutally rejected after the take home assignment step.
I was honest with the recruiter about my experience, but made a point to speak to the skills that I knew the company looks for; leadership, going the extra mile, etc.
Phone Interview
The recruiter gently suggested booking the phone interview 3 weeks out so I would have time to study.
Tip: Do this.
My bootcamp had covered Data Structures and Algorithms at only the most rudimentary level, with an attitude I might describe as “hastened” or “half-assed.” To get to interview-ready levels of DS&A, I used the following resources:
-
Udemy Class: Algorithms and Data Structures Masterclass This came recommended from a fellow student at my Bootcamp. The class was wildly helpful because it went deeper than every other beginner-oriented resource I found, and also covered common patterns such as sliding window and double-pointer solutions. As a bonus, it has a really thorough section on Djikstra’s algorithm.
The instructor talks at excessive length through every problem/solution but you can just skip those parts if they become tedious.
-
Leetcode free tier At the beginning I could barely solve the Easy problems, which was terrifying and disheartening. The above course gave me the ability to recognize patterns in problems, but it all comes down to the grind. I averaged about 2 questions per night, and by the onsite could solve Medium level with some reliability.
I’ve tried all the other code prep platforms like Hackerrank and Codewars, but still prefer Leetcode for its succinctness and no-nonsense UI. The discussion forums are populated by a strange community of people living with no apparent life purpose other than employment at a FANG company, but they routinely post the exact wording of onsite and phone interview questions.
I was asked one question during the phone interview, with two parts. I can’t retell it here (apparently Leetcode users live without fear) but I will say it was a string problem with a double-pointer solution.
Onsite
A few days later, the recruiter called to inform me I’d somehow passed the phone interview. She said they could book the onsite up to 5 weeks out, but didn’t recommend it because COVID was starting to force hiring freezes on many teams.
I scheduled the onsite for 3 weeks, which saved my ass. I now see angry posts on Blind daily about people stuck in team matching limbo, waiting for positions to open up.
I knew I had to take my game to the next level for the onsite, and added the following to my arsenal:
-
The famous Cracking the Coding Interview by Gayle Laakmann McDowell
I will be honest, I didn’t find this to be much additional help. Many of the practice questions are available on Leetcode, and some subjects (like bitwise math) are unlikely to appear on a junior developer’s interview loop. To me, Lakkman’s most valuable content is her process for solving algorithm problems.
-
Leetcode Premium. I bought it just for the month I was studying, on the advice of a friend, and I will say it is mostly worth it for the solution descriptions. Premium does provide the feature to filter questions by frequency at specific companies, but I’m skeptical how accurate or up-to-date that is. FANG companies develop new interview questions and rotate old ones out constantly.
For example, this alien dictionary problem is marked as one of the most commonly asked…I checked with every SWE friend and nobody had ever seen it.
The onsite itself was obviously adapted for COVID times, but I was into it. Somehow I felt more relaxed enduring a grueling day-long interview from my own home, rather than an unfamiliar office following a day of cross-country travel. My interviews consisted of:
- A graph question
- A few questions on web development/Javascript
- A matrix problem
- A behavioral interview
- A system design problem
Of all the above, I was actually least prepared for the system design problem. Having almost no professional experience, I can’t speak very well to best practices or design patterns for building a system at scale with a database/frontend/API.
To be honest, by the end of the day I was convinced I had failed. I left my room feeling a little dejected, but I also had in no way expected that a recent Bootcamp grad would pass the Google SWE interview on their first try.
Offer
My interview was on a Wednesday; on Friday, I got an update from the recruiter letting me know that they were modifying their process and next steps a bit due to COVID. I was out in the woods fishing when she called, and the reception was awful, so I’m still not 100% sure how the process changed.
I do know that they found a rare opening for me on a team in NYC. I was even luckier that the team was centered around a technology I was interested in. Once we did the matching calls, I was given a hire offer within a few days.
Parting Thoughts
- I see a lot of aspiring developers on Twitter discussing their difficulty learning Data Structures and Algorithms. DS&A is not your enemy. I think the greatest difficulty lies in the barrier to entry for those self-teaching — most resources seem to be too shallow or too deep. Regardless, one can learn to solve tree problems with Leetcode, a few Youtube videos, and practice, practice, practice; the same is not true for engineering system design questions.
- Practice narrating your thought process when solving algorithm problems. Even if you can’t get the optimized solution, you can still impress on an interviewer your excellent communication, critical-thinking, and problem solving skills.
- Start all your Leetcode problems by writing on paper or on a word document. It’s tempting to modify your solution line by line in the Leetcode IDE until it passes all the test cases without ever understanding why you had that off-by-one error.
- It will probably be a long time before anybody can interview onsite, in-person, with a whiteboard. Learn to “sketch” trees or arrays in a text format that makes sense to you.
- Don’t wing behavioral interviews. I see a shocking amount of sad and confused posts on Leetcode where people did exactly this. Why?! Every FANG company has plenty of resources — official and unofficial — out there on exactly what kind of traits and company values they look for in the “Tell me about a time when…” questions.