How to Prepare for the Technical Interview

Interviewing can be brutal. But it doesn’t have to be.

Ask anyone how to prepare for an interview, and their answer will more than likely be the standard canned response of reading a certain green book.

They heard it helps and maybe they’ll tell you about the websites where you can practice coding actual interview questions, but that’s as far as you’ll get with their advice. Reading that book alone didn’t do it for me—and I’ve read it three times! The coding sites didn’t help me either (and I believe they actually hindered my learning, so I wouldn’t recommend them).

People ask me a lot about interviewing and how I learned computer science fundamentals without a computer science degree. It wasn’t easy.

No one told me what to study, where to find it, or how to do it. I had to figure it out, and now I want to make it easier for others.

In this post, I’ll share what helped me prepare and ultimately succeed in interviews for jobs in tech. These tactics helped me tremendously, and I wish someone would have told me the things I’m about to share.

“Desperation repels people, but passion attracts people. So don’t walk into the job interview or a social situation with an air of desperation or need. Walk in with a passion and with joy. People lean into light. So shine yours and watch what happens.” – Ava DuVernay (Interview with Teen Vogue)

Tip #1: Mix Up the Learning Medium

When I’m learning something new, the best approach is to research the topics and compile a list of different kinds of resources. I look at a mixture of books, YouTube videos, and blog posts before writing any code. Rotating between the different mediums of learning has been the most effective path for me. For example, I’d spend two hours reading a book on recursion, one hour of watching videos, one hour of reading blog posts, and conclude the day with an hour of writing code. Once I felt like I had a decent amount of background knowledge (usually a couple of days), I’d edit the hours to focus more on videos and writing code. Every couple of days, I’d introduce a new topic and incorporate it into the study plan.

Taking a break every two hours or when you get stuck is essential because your brain can only focus on a single task for, at most, two hours. Anything over that without a break is a waste. Take a break every two hours, or if you get stuck on a problem, take a 10 minute break and come back to it. The key is to avoid getting frustrated, because that won’t help your comprehension.

Tip #2: Master Concepts, not Questions

To be fully prepared, it’s imperative that you study computer science concepts and master them, instead of trying to prepare for certain questions that you think a company is going to ask. Be able to talk about the tradeoffs and explain your approach, because they’ll definitely ask you specific questions to test your grasp of the concept.

I interviewed at all the big tech companies, including the social media ones, and my biggest advice is that you can’t predict what they’re going to ask so don’t spend time trying. Spending time mastering concepts is the best advice I can give. Work on understanding the whys and the hows will manifest.

In my interviews, I was asked questions about arrays, recursion vs. iteration, graphs, maps, hash tables, and quicksort vs. mergesort.

The best resource for this is V. Anton Spraul’s, “Think Like a Programmer.” I wish I could’ve read this book a year ago because it would have made a big difference. He explains computer science from a different perspective and his fresh approach will leave you saying to yourself that this stuff isn’t so hard after all. It’s a big confidence booster and he clears up the gray areas.

After reading Spraul’s book, YouTube is a great source for programming videos. My favorite channels are Computerphile, V. Anton Spraul, and HackerRank. Computerphile’s channel has a lot of in-depth explanations and entertaining anecdotes to help you learn.

Medium has been valuable for blog posts about computer science—especially Vaidehi Joshi’s posts. Joshi’s posts explain computer science concepts visually and the simplest way possible. I also recommend these blog posts: How Not to be Stumped by Trees, Deep Dive Through A Graph: DFS Traversal, Less Repetition, More Dynamic Programming, and Algorithms in Plain English: Time Complexity and Big-O Notation.

Tip #3: Focus on Your Strengths

What do you do if you’re not sure what part of tech you want to be in, or if you want to be front-end or back-end or mobile? A lot of people ask me how I figured out what I wanted to do in tech.

If you’re in this boat, don’t worry—I’ve got you covered. If you’re unsure what you part of tech you want to be in, that’s okay. We’ve all been there! Focus on your strengths. What are you good at? What do you enjoy? If you’re unsure, read “Soar With Your Strengths.” It will help guide you on these answers. It helps you determine a hobby vs. a strength and gives you confidence in figuring this all out.

Lastly, a book I recommend is “Programing Interviews Exposed.” It’s short and will help reinforce the topics and sprinkle in some programming questions.

Following this guide proved successful for me, and I want the same for you! You can do it—I believe in you!

As always, I welcome comments and questions!

Written on January 18, 2019