The world’s largest technology companies conduct lengthy and comprehensive coding tests during developer interviews. Google typically conducts three to four rigorous technical interviews in one day. Adobe requires four technical interviews and one HR interview over six to eight hours. The processes at Facebook and Amazon are similar.
Such technical interviews are fundamental to assessing and hiring great developers. But the volume of interviews, and the competencies they’re designed to assess, will vary depending on role, seniority, and individual teams.
One constant? Coding tests, which have been the backbone of technical hiring for decades. The move to remote-first interviewing and virtually distributed teams has led many companies to shift their coding tests online and embrace tech-enabled hiring processes. And, as hiring demands intensify, coding tests are a reliable way to ensure informed hiring decisions are made based on a candidate’s actual ability to do the job.
To hire the best tech talent, optimizing the candidate’s experience and adding efficiency is absolutely critical. In this post, we’ll break down how to conduct technical coding tests — and the best practices you can use to assess developers with confidence.
What Conducting a Coding Test Looks Like
Candidate assessment is the process of evaluating whether an applicant is the right person for the role. During the process, recruiters and hiring managers rely on individual assignments, often referred to as coding tests or challenges, to score a candidate’s proficiency in key skills. A coding test is a type of assessment that often gauges a candidate’s problem-solving skills and technical proficiency in various programming languages and frameworks. Tests can also measure the candidate’s ability to navigate a complete application environment, design systems, translate log messages, and interchangeably use the command-line, IDE, and browser to interact with the environment.
Examples of coding tests include:
- Take-home coding challenges
- Multiple-choice tests
- Project-based assignments based on real-world problems
- Pair-programming in a virtual IDE
- Virtual system design and whiteboarding
Designing a coding test is highly customizable, and hiring managers have the agency to choose from a number of variations in how to evaluate the technical skills required in the open role. Depending on the assessment platform they use, interviewers can browse from a library of available questions or customize their own. For tests that require code submissions, an interviewer should also be able to change the list of available languages the candidate can use to solve the problem.
Types of Coding Tests
There are a number of different types of tests hiring managers can use to evaluate a developer’s coding skills. The difficulty and composition of these tests will vary based on the experience-level of the role.
Generally, the more experienced the developer is, the more ambiguous the problems they solve become. For example, candidates for entry-level roles might complete coding questions that test execution of predefined problems. In contrast, the questions for senior roles can become more open-ended, and require the whiteboarding of potential solutions.
Problem solving is a core computer science skill. To complete a problem-solving question, programmers have to identify a solution, translate this algorithm into something a computer can do, and finally write code to implement the solution. At its core, problem solving evaluates the study, understanding, and usage of data structures and algorithms.
While problem-solving skills are essential at every experience level, problem-solving questions are foundational to assessments testing the skills of entry-level programmers.
More commonly found in hiring processes for senior-level roles, system design questions grant candidates a look into the organization’s tech stack and operations, and gives hiring managers an understanding of the candidate’s approach to problem solving. These interviews should ideally proceed like discussions, with the candidate thinking aloud about scalability, storage, reliability, and other aspects of the system.
Potential system design questions include:
- Design a ride-sharing service.
- Design a simple social media application.
- Design a video streaming service.
- Design a URL shortening service.
- Design a file-storing and sharing service.
Commonly used for mid- and senior-level developers, a project interview is a technical evaluation of a candidate’s ability to solve real-world problems. This type of coding assessment gives hiring managers the opportunity to conduct an in-depth evaluation of the candidate’s qualifications for the role. It measures the candidates’ ability to apply languages and frameworks to solve real-world challenges. Projects also measure their ability to navigate a complete application environment, to translate log messages, and interchangeably use the command-line, IDE, and browser to interact with the environment.
Traditionally, hiring managers conducted project-based assessments in person, with the candidate solving problems on a whiteboard. In remote technical interviews, candidates don’t have the option. Virtual interviewing tools allow interviewers to conduct pair programming technical interviews with built-in video calling, which creates a collaborative coding environment where hiring teams can assess a candidate’s coding skills from afar.
With pair programming tools, hiring teams can watch candidates build on code from pre-screen challenges in real time, or run and test code together, all in a single session. This enables hiring managers to see a candidate’s problem-solving and communication skills in real time — a practical alternative to onsite interviews.
Sample Coding Test Question
Below is a sample question of the kind of question a software developer might encounter during a technical interview.
This is a problem-solving question that tests a candidate’s coding skills and ability to solve problems with algorithms. While some skill assessments test for specific programming languages, this example allows the candidate to choose which language they’d like to use from a list of options.
Coding Challenge: Cut Them All
Difficulty Level: Easy
An automated cutting machine is used to cut rods into segments. The cutting machine can only hold a rod of minLength or more. A rod is marked with the necessary cuts and their lengths are given as an array in the order they are marked. Determine if it is possible to plan the cuts so the last cut is from a rod at least minLength units long.
n = 3
lengths = [4, 3, 2]
minLength = 7
The rod is initially sum(lengths) = 4 + 3 + 2 = 9 units long. First cut off the segment of length 4 + 3 = 7 leaving a rod 9 – 7 = 2. Then check that the length 7 rod can be cut into segments of lengths 4 and 3. Since 7 is greater than or equal to minLength = 7, the final cut can be made. Return “Possible.”
n = 3
lengths = [4, 2, 3]
minLength = 7
The rod is initially sum(lengths) = 4 + 2 + 3 = 9 units long. In this case, the initial cut can be of length 4 or 4 + 2 = 6. Regardless of the length of the first cut, the remaining piece will be shorter than minLength. Because n – 1 = 2 cuts cannot be made, the answer is “Impossible.”
Complete the function cutThemAll in the editor below.
cutThemAll has the following parameter(s):
int lengths[n]: the lengths of the segments, in order
int minLength: the minimum length the machine can accept
string: “Possible” if all n-1 cuts can be made. Otherwise, return the string “Impossible.”
2 ≤ n ≤ 105
1 ≤ t ≤ 109
1 ≤ lengths[i] ≤ 109
The sum of the elements of lengths equals the uncut rod length.
Best Practices for Conducting Coding Tests
To successfully evaluate candidate skills, hiring managers need to administer the correct type of coding test at the right stage in the interview process. With the right testing methodology in place, there are a number of best practices for conducting remote-first and world-class coding tests.
Leverage easy-to-use technology
When conducting coding tests virtually, the platform you use has a significant impact on the outcome of the interviews. A streamlined, user-friendly interviewing platform will create a better candidate experience and scale easily across departments, all while making life easier for the hiring managers conducting the interviews.
Work in a collaborative IDE
A critical component of coding tests, particularly at higher levels, is collaboration between the candidate and hiring manager. Seeing the candidate’s screen in real time, and giving them a whiteboard to work through problems, creates an interview experience that mirrors the environment the candidate will be working in.
Use a question library
Few factors affect the outcome of a coding test more than the questions that make up the test. A hiring manager’s ability to assess the candidate’s skills hinges on the questions being relevant to the job requirements and an effective measure of their coding skills.
But while hiring managers are technical enough to create their own test questions, they’re often pressed for time. And creating one-off tests can create inconsistencies when hiring for similar roles across departments.
One way technical teams are getting around this problem is working with tools with robust question libraries. This enables hiring managers to import thousands of out-of-the-box questions. Talent acquisition teams can also select approved questions for interviewers to use.