Taking a bite out of FAANG: My Interview Study Plan
28 Jun 2020I Did it. I got a FAANG Job 🎉
If you are not familiar, FAANG (Facebook, Apple, Amazon, Netflix, Google - and Microsoft!) is an “elite” group of companies that many people would do anything to work for. Getting into one of these companies is largely seen as a golden ticket for career growth. With a FAANG company on your resume, there aren’t many places that won’t take your call.
So how did I get in?
I studied. A LOT. But not just aimless study. I didn’t just read blog posts about how to apply at one of these companies.
At first, I did what everyone does, I just looked at YouTube videos and read blog posts. But, after a few frustrating hours, I realized that my current strategy wasn’t working - there was just too much to try and learn.
I’m going to tell you _exactly_ what I did and I encourage you to update this plan based on your learning style.
Preparing for the Interview
Because of the massive amounts of information out there, I decided to choose a specific set of resources to use in preparation for the interview.
Most of these jobs interviews have a heavy focus on _Data Structures and Algorithms_. People fall into one of two categories: never learned it or learned it so long ago that they’ve forgotten it all. That’s okay, I was the latter and I had to catch up - here’s how you can, too.
-
AlgoExpert.io (paid) - DS/Algo crash course that covers the fundamentals in a way that made me feel more comfortable with many of the topics. Each of the “must know” topics have a specific video with nice diagrams.
-
Cracking the Coding Interview - This book’s opening chapters really help you to focus on how to determine the Big O notation for a problem and since that’s such a core part of the interview process this is a great option.
-
De-Coding The Technical Interview Process - This book was a bit of a surprise in how helpful it was. I used this book as a way to quickly review topics that I had studied in more depth on some of the other sites/resources. This could be a great place to start in that it has a nice introduction to some challenging topics with clear diagrams, too!
-
Googling I did some searching and Googling to find topics that I wasn’t clear on. A lot of computer science course content from universities come up (for FREE!) so you can get as deep with the content as you want. And, to be honest, you’ll want to Google search stuff as a part of your process.
I do want to give a quick honorable mention to the following resources:
- LeetCode - this site has some good problems, but they are inconsistently labeled. I can’t tell you how many “easy” problems were hard as heck for me!
- EdaBit - I love this site for anyone new to coding. You can find really good coding problems that will help you get comfortable with JavaScript (if that’s your language)
- Hacker Rank - I found that the problems were correctly labeled here but I got tired of reading the convoluted problem descriptions. One of the key goals is solving problems in less than 15 minutes but if you are spending 15 minutes trying to understand the problem then what the heck!?
Study Habits
Listen, I get it, people work differently when it comes to studying. Some people like music, no music, a little TV in the background or some other style. I preferred to create a low distraction environment when studying.
- No social media
- Phone on “Do Not Disturb”
- Noise Cancelling Headphones (Sony WH-1000M3)
To pace myself, I used the Pomodoro Technique:
- 25 minutes of focus
- 5 minute break
- repeat
Then, eventually, after 3 or 4 rounds, I would take a 10 minute break. In general, when studying, I only put 1 - 2 hours in daily in combination with 3 or more practice problems. Because of my family situation, I did my studying at night but I would do my 1 or 2 practice problems in the morning and 1-2 at night. Some days, I only got through one problem and that’s okay!
During my study blocks I used brain.fm (includes referral code) to help me focus. This site has “focus” music and sounds that can lead to increased focus. If I listen to music with words or something like that, I’m going to get distracted. This was excellent for my 25 minute blocks.
After each block, that 5 minutes was enough time for me to check texts, emails, etc. Then, after the 5 minutes was over, I got back to work.
Bonus tip: use something like tomato-timer.com to help you stay on track with your work sprints and your breaks!
Note-taking and Organization
Here is the parent most of y’all have been waiting for: How did I organize my notes for this process?
I kept all of my notes in an app called OneNote. It let me have digital notebooks, sections and pages. Here’s an example of how I kept things organized:
I use a computer that has a digital pen, so my notes on each page were color coded and handwritten. For some reason, writing things out instead of typing them really helped me to cement the concepts.
Organizing my notes in this structure had a huge benefit for my ability to be able to go back and review specific notes that I took on a topic.
To make my life even easier, I used the tablet form of my laptop and put my notebook on one side and the content I was studying on the other side. This window grouping works on Mac, PC, iOS and Android - so just find the right format for you. Though, any tablet with a pen input would have worked just fine here, too.
Here’s an example of that specific layout that I’m describing (on a Surface Book 2 Tablet)
Aside from just studying for the sake of studying, you also need to know what to study. I focused on it like this:
Fundamental DataStructures (maps, sets, queues, arrays, stacks, graphs, trees) Fundamental Algorithms (sorting, searching)
Once I felt comfortable with that, I started doing practice problems to see where the gaps in my knowledge were.Then, I’d add those topics to my list. For example, if I came across a problem about graph traversal and couldn’t solve it, I’d add that to my study list.
Final thoughts
I was patient with myself, even when I got problems wrong. I didn’t punish myself for mistakes. I set my mind on the goal of passing the interview and I didn’t have unreal expectations. I made up my mind that if I didn’t get the job on my first try that I would take note of where I struggled, focus on improving and then try again in 6-8 months.
If you give yourself that freedom to be successful over time it can most certainly help reduce the amount of stress brought on by the process. One thing I didn’t mention in the study plan is that I got sleep. I never stayed up late to study.
Even during the last week leading up to the interview, I stopped stressing about what I didn’t know and did my best to get sleep (where my nerves didn’t get the best of me!)
If you like this content stay tuned for me because my journey is just beginning and I have a feeling that yours is, too. I’ll see you at the top, friend.
I’d love for you to sign up for my email list because you’ll be the first to know about new content like this AND anything that I’m working on that you might find to be awesome!
- Mark