Algorithmic technical interviews are, without a doubt, the most-hated part of the software engineering hiring process. And, with good reason.
Many technical interviews and online assessments:
And yet, they are here to stay.
With each open position garnering hundreds to thousands of applicants, it's no wonder why these assessments are the preferred method for weeding out candidates - they're easy.
Why waste resources skimming through resumes when I can thin out the candidate pool with an automated test instead? And why waste time asking questions about work history when I can throw a puzzle at candidates to quickly judge how well they perform under stress?
Until Big Tech finds a more inclusive process that still filters candidates at scale, we are stuck with the current technical interview regime.
This means that you, as a candidate, must get comfortable with technical interviews and online assessments.
In this post, I share how I prepare for technical interviews, so you can confidently start preparing for your own.
Hi, I'm Kat.
After nearly a decade of working in the marketing industry, I went back to school to get an additional degree in computer science.
As a computer science student, I've received internship offers from the following companies (ordered by most recent):
I've also taught algorithms through Women Who Code San Diego for two years (here's a link to a few lectures) and completed an interview prep program through CodePath.org.
So, while I wouldn't say I'm an expert, I'm familiar with the process and the level of preparation it takes to get offers from well-known companies. This experience has allowed me to develop a process to approach technical interviews with confidence.
Before I talk about my process for attacking algorithmic interviews, I would be remiss if I didn't address the elephant in the room:
Not all companies do Leetcode-style interviews!!
And, this statement is absolutely correct. You can find companies that will not conduct algorithmic interviews.
But here's why you should prepare for these interviews anyway:
In sum, if you want to optimize the results of your next hiring season, it's best to prepare for algorithmic technical interviews.
Which leads us to the first step of my interview preparation process -
If you're unfamiliar with how technical interviews work, this section will provide some necessary context. First, you'll need to get familiar with both aspects of the interview process: online assessments and technical interviews.
Online assessments are the first boss in the software engineering hiring process. These assessments are commonly seen in positions with a high number of applicants, including internships and junior positions.
During these assessments, you will receive around four algorithm problems via an automated testing platform like Hackerrank or CodeSignal. These questions must be solved within a set time frame, usually about 70 minutes. OA platforms vary in how they score candidates, but the candidates with scores above a set threshold will be invited to the first round of technical interviews.
This is an excellent write-up that goes into depth on how online assessments are administered and scored.
NOTE: Candidates with a referral can often skip this step and head straight to the first round of technical interviews.
Technical interviews are similar to online assessments, except they are done in real-time with an engineer.
This means you are expected to walk the engineer through your process as you solve the problem, then answer questions regarding:
The UMPIRE Method is a framework, taught by Codepath.org, which walks you through how to design and explain an algorithm.
When it comes to technical interviews, good things come to those who prepare. Like the SATs, GREs, and LSATs, preparation takes months of studying and practice.
This means you'll need to design your own technical interview bootcamp.
Luckily for you, there is a large library of online resources that can help you learn the patterns and data structures you need to be successful during these interviews.
Here's a few, with asterisks indicating my favorites:
In addition to problems, Leetcode's (Premium) Explore page has tutorials as well.
Studying won't be enough. You'll also need to simulate test conditions through a variety of mock interviews and practice assessments. Here are some resources to help you do this:
How often you prepare is entirely up to you. But, for the best results, I recommend treating interview preparation like a class. This means scheduling consistent time every week over three to six months.
It sounds like a lot, I know. But, if you wait at least two to three years between switching jobs, it's a relatively small amount of time.
Desiging your own interview bootcamp is one thing. Sticking to it is a whole other matter.
Aside from actually learning the material, committing to a consistent schedule of preparation is likely the hardest part of interview preparation. It's not uncommon for people to lose steam after two or three weeks.
So, you'll need to establish your own system for accountability.
Personally, I've found success using a variety of the following methods:
When I got rejected by CodePath.org's Advanced Interview Prep course, I didn't let that experience hold me back. Instead, I gathered a group of fellow rejects and created a biweekly study group using their public course material.
Creating my own study group was perfect for two reasons:
Every week, I do a mock interview with a friend from college. During these sessions, we get a chance to catch up as two friends living in separate states, and we also practice our interview skills.
Best of all, because no one wants to be That Flaky Friend, we're usually pretty good about keeping to our schedule.
Announcing your intentions on social media is great for a couple reasons. First, it gives you a chance to document your progress and see how much you've accomplished over a period of time. And also, if you happen to slip up, your audience will notice and check in, further keeping you accountable.
This year, I'm using #100DaysOfLeetcode on Twitter to track my progress in preparing for my last hiring season as a student. It's been a joy to watch my skills get better, and get feedback from Twitter friends.
> Day 7: Leetcode Contest
> I got 2/4 questions right in under 70 minutes 😂
> Sure, that's technically an OA failure, but it's SO MUCH BETTER than before! #100DaysOfLeetcode pic.twitter.com/Md2X1vjmmi
> — kat excellence (@katexcellence) March 26, 2022
I have a confession to make -
When I started teaching interview prep classes for Women Who Code San Diego, I was bad at technical interviews. No, scratch that - I was terrible. I could barely reverse a string to save my life.
Looking back, I still don't understand how I was able to power through that first year of teaching.
But, with each interview prep session, I gained more motivation to get better at algorithms. I wanted to master algorithms so I could provide a better learning experience for my students.
Two years ago, I could only walk through a high-level algorithm solution after spending hours working through it at home. These days, I live code the entire algorithm design and implementation process, while answering questions from the audience.
Talk about growth!
It is my belief that teaching a subject well is the ultimate step in mastering a subject. So, if you want to get better at algorithms - find a way to teach.
Focus is a topic that’s rarely covered when discussing technical interviews. I believe this to be a downright shame, because focus is a key factor in your likelihood of success.
Your ability to master difficult concepts depends on two factors:
Are you putting in hours of "studying" while toggling between Discord and TikTok? Don't kid yourself. You might as well not be studying at all. That's because studies have shown switching back and forth between tasks decreases your overall performance. Your brain can't handle the overload of activity.
So, if you want to get the best outcome from your study sessions, you'll need to put away the phone and block out all distractions.
If this topic interests you, I highly recommend taking a peek at two of my favorite books:
Are you preparing for your own technical interview season? Let's share notes! I'd love to learn more about what other people are doing to prepare for technical interviews with confidence.
Feel free to reach out to me at @katexcellence on Bluesky or Mastodon.