Types of Interviews
This section contains the most common types of interviews you'll come across when finding a software engineering job. Each interview type will be discussed in much more detail in subsequent sections of this handbook.
Behavioral interviews
Behavioral questions attempt to gauge how you would behave in stressful or otherwise adverse conditions. There are a couple common types of behavioral questions:
- "Tell me about a time..." These questions are based on the idea that the best predictor of future behavior is past performance. The goal is to get you to present real examples of how you have handled things like conflict and failure in the past so the company can have some insight into how you may behave in the future.
- Scenarios. Rather than looking for past examples, scenario question present you with situations and you're asked how you would handle them. Interviewers are generally looking for problem solving and empathy skills when asking these questions.
Studying for behavioral interviews is incredibly important! Almost any interview you do will have a behavioral component.
BEHAVIORAL INTERVIEW EXAMPLE QUESTION
Tell me about a time you had a conflict with a team member and how you handled it?
Values interviews
Not to be confused with behavioral interviews, values interviews attempt to gauge how you align with a company's value system. For example, Google has its Ten things we know to be true, which is a set of philosophies against which candidates might be assessed.
Some companies explicitly test against values while others unconsciously make this assessment. Regardless, it's very important to know a company's public values and be prepared to demonstrate how you align with them.
VALUES INTERVIEW EXAMPLE QUESTION
At our company, one of our core values is "team above individual." How have you exemplified this value?
Leetcode-style interviews
Leetcode-style interviews are probably the most famous, or should I say infamous, type of interview. Leetcode is a website with algorithm and data structure programming problems. In Leetcode-style interviews, you solve algorithm and data structure challenges in front of one or more interviewers. These challenges are performed on a white board or a computer depending on the company's preference and whether the interview is being conducted in-person or remotely.
These challenges aim to test your problem solving, collaboration, and technical skill. Often, interviewers will ask for your understanding of the time and space complexity required to run the algorithm.
These types of interviews were popularized by big tech companies but are used throughout the industry. For those of us who are really uncomfortable with this type of interview, there are plenty of companies that do not use Leetcode-style interviews.
LEETCODE-STYLE INTERVIEW EXAMPLE QUESTION
Write an algorithm that takes an array of numbers as an argument and returns the same array. If an element in the array is a multiple of three, the output value should be "fizz"
. If an element in the array is a multiple of five, the output value should be "buzz"
. If an element in the array is a multiple of both three and five, the output value should be "fizzbuzz"
.
Example:
Input:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
Output:
[1, 2, "fizz", 4, "buzz", "fizz", 7, 8, "fizz", "buzz", 11, "fizz", 13, 14, "fizzbuzz"]
Practical coding interviews
Practical coding interviews involve collaborative coding to solve a job-related problem. This is one of my favorite interview types because, unlike Leetcode-style interviews, it focuses on the kind of work you might do on a day-to-day basis. For example, if you're a front-end engineer, your coding challenge might be to write HTML, CSS, and JavaScript to a specification. In these interviews, it's extremely important to fully understand the requirements and the level of interaction/collaboration the interviewer expects.
PRACTICAL CODING INTERVIEW EXAMPLE QUESTION
Let's write the HTML, CSS, and JavaScript for a website that will fetch and display a Github user's profile information.
System design interviews
System design interviews are aimed at determining how more senior engineering candidates might go about designing a system. These interviews try to determine how the candidate thinks about systems as a whole, whether the candidate can elicit and clarify vague requirements, and depth of knowledge in the candidate's domain. System design interviews can be very fun but their open-endedness can also be very challenging.
SYSTEM DESIGN INTERVIEW EXAMPLE QUESTION
How would you design a real-time, web-based chat application?
Technical knowledge/trivia interviews
Technical trivia interviews generally don't involve writing code, but rather ask you technical questions to determine how well you know a subject area. These types of interviews get a bad rap, but their effectiveness really depends a lot on what types of questions are asked. For example, asking about some uncommon/obscure language feature that can be googled quickly is pointless and a bad way to assess someone's domain knowledge. On the other hand, asking someone about a foundational aspect of a domain works may be useful. Technical knowledge questions are fairly common in all interviews.
TECHNICAL KNOWLEDGE EXAMPLE QUESTION
Tell me about some measures you might implement to make sure your web application is secure.
Combined interviews
Many companies, especially smaller ones, combine multiple of the above interview types into each interview. In some cases, it's because they prefer each interviewer see all sides of a candidate. In other cases, there just aren't enough interview sessions to have distinct interviews.
What interviews should I prep?
That's a lot of interview types! The interviews you should prep for depend a lot on the types of companies to which you're applying. Realistically, the only type of interview you don't need to prep is the leetcode-style interview if you know the companies at which you're interviewing don't do leetcode interviews.
If you want to know what types of questions certain companies ask, I recommend the following:
- Look at the company's interview section on Glassdoor.
- If you're preparing for an interview at a specific company, ask your recruiter. In pretty much every case, my recruiters have told me the exact types of interviews I'll be undergoing.
You'll notice the latter point as a theme throughout this handbook: ask the recruiter. They're an incredible source of information at a company and they want you to succeed. Treat them well!
Help this guide grow
If you're enjoying this guide, please support it be giving it a "star" on GitHub. I would really appreciate it!