Brainteasers were once ubiquitous in software development interviews. Companies gauged candidates’ logical thinking and creativity by asking them how many golf balls can fit inside a school bus, or to explain why manhole covers are round. But the industry has since realized those questions are not the best way to find engineering talent.
“It’s increasingly popular across the industry to try to avoid gotcha-style questions that are totally irrelevant to your role,” said Ben Picolo, engineering manager at insurance marketplace Policygenius. “That’s something we’re definitely focused on, because we don’t think everybody has to fit inside a single box.”
Instead, companies now consider candidates holistically. Although job interviews may look different from company to company, they’re assessing the same qualities — developers’ coding skills, their ability to collaborate and their understanding of how the code they write affects the business.
Common Types of Second Interview Questions
- Coding Challenges: These questions test candidates’ coding chops and collaboration skills.
- Systems Design Questions: These test candidates’ ability to architect for various types of systems.
- Past Projects Questions: These gauge candidates’ depth and breadth of technical and business knowledge.
- The Cross-Functional Portion: This gives candidates an idea of what it’s like to work with other departments at the company.
Most companies have a couple screener interviews before candidates reach what’s traditionally thought of as the more substantive “second interview.” Screeners generally consist of a phone call with a recruiter or a hiring manager. Policygenius also includes a code pair programming exercise in its process to get a sense of candidates’ technical abilities, Picolo said.
Before the coronavirus pandemic, this second round of interviews were usually on site, and could take a full day or up to several days. Companies assess candidates technically and behaviorally, often introducing them to employees from various departments. Interviews are now mostly virtual, but they still consist of the same assessments.
The second interview is a crucial part of the interview process, so it’s natural to feel a bit nervous. But knowing what to expect and doing some preparation can go a long way. A good place to start is to consider these commonly asked questions.
Common Coding Questions
- Given a list of integers, write a program to find the integers that are palindromes.
- Given an array of integers and an integer target, return the indices of two numbers in the array whose sum equals the target.
- Find the smallest and largest numbers in an unsorted array of integers.
- Write a program to reverse a string in place.
- Write a program to find duplicates in an array of integers.
The interview process for software developers almost always includes a coding assessment. Tricky algorithmic questions used to be more common, but Picolo said the industry has moved away from that practice.
“Very algorithmic-style questions are more tailored for fresh graduates from college in a computer science program,” he said. “It’s exclusionary, both for people with other backgrounds and also more senior engineers.”
That’s because, while computer science students learn algorithms in school, developers don’t really deal with algorithms often in their actual work.
But coding is still fundamental to software development, and companies still need to assess basic coding know-how. The difference is a shift toward using coding problems to observe how candidates code, rather than using hard algorithm challenges to weed out candidates.
Alicia Gansley, senior engineer at Chainalysis, a startup that helps businesses and regulatory bodies track blockchain activity, said her company avoids asking questions “designed to just trip people up or where you have to know something specific going in.”
“I really look for that collaborative spirit, that humility and everything — that’s a big part of what the coding interview accomplishes.”
“The idea is to design these questions so you can see how the candidate thinks, not really test pre-existing knowledge,” Gansley said.
Chainalysis gives candidates straightforward algorithmic problems, such as finding palindromes from a list of integers. The interviewer is there the whole time, asking questions and helping point the candidate in the right direction as needed. Gansley said that, especially for less-experienced candidates, she pays attention to how they receive advice and their willingness to collaborate. Struggling to find the answer on your own isn’t necessarily a deal breaker, but refusing to accept help might be.
“I really look for that collaborative spirit, that humility and everything — that’s a big part of what the coding interview accomplishes, alongside the problem solving skills, which is, of course, what we’re foundationally testing for in that interview,” she said.
Gansley recommended candidates use LeetCode, a website for practicing technical interview questions, before heading into coding interviews. And while interviews are remote, it’s also a good idea to practice using online whiteboards as well, since navigating them during an interview can be awkward.
“It’s not necessarily expected that someone can just walk into one of these algorithm interviews, just based on their experience in their day-to-day job, and really crush it,” Gansley said. “Most people definitely have to practice.”
System Design Questions
Common System Design Questions
- Design a URL shortening service.
- How would you structure a system for buying and selling coffee?
- Design a system like Twitter.
A software developer’s job extends well beyond writing code. Developers often face architectural problems at work — questions about how to structure software projects to serve their specific purposes, the types of databases to use and how services should communicate with one another.
These are the kinds of problems businesses face every day, and they have repercussions over the life of the project, affecting systems’ efficiency, security and maintainability.
Companies assess candidates’ system design skills by asking them to talk through the design process with interviewers instead of writing code or pseudocode. Gansley has asked candidates to design systems such as an Instagram-like website or designing a URL shortening service.
Candidates with different levels of work experience often get different types of questions. Entry-level employees may not see this type of interview question at all, while senior-level candidates may be carefully evaluated for their system design skills.
Picolo said experienced candidates may get more open-ended questions.
“An example might be, ‘We have this problem where our current system hit a scale and it doesn’t work anymore — what are the different pieces we need to do to scale this entire architecture so we can continue making our business successful?” he said.
Entry-level candidates, on the other hand, get simpler questions such as designing a sales system for a coffee shop.
Questions About Past Projects
Common Questions About Past Projects
- How did you contribute to the success of your last project?
- What are some tasks you struggle with, and how have you built the skills necessary to accomplish them?
- Talk about a time you faced a setback on a project, and how you dealt with it.
- Talk about a project you’ve worked on that you’re most proud of, and what you did that worked well.
Candidates may also be asked about previous projects, especially if they’re coming from previous software development jobs. These types of questions help interviewers assess how candidates think of their roles within the bigger picture of the company and its business.
“What I’m always looking for if I’m speaking with a candidate, is whether they really understand the ‘why’ behind all the decisions made,” Gansley said. “Just why the project is being done in the first place and how it’s benefiting the company.”
Interviewers typically ask candidates to walk through a previous project’s design and technical decisions and to talk about any trade-offs that were made during the design process.
“What I’m always looking for if I’m speaking with a candidate, is whether they really understand the ‘why’ behind all the decisions made.”
Gansley said it helps her gauge the depth and breadth of candidates’ technical knowledge, as well as their understanding of the business they serve. She also looks for whether candidates understand how their work impacts people in other departments of the company.
“Understanding that is always a great signal for any engineer — because, at the end of the day, engineers are the ones with our hands on the system, building things,” she said. “We need to have awareness and be aligned to the goals of what we’re building.”
Even if a candidate can do a deep technical dive and write complex code, they may not understand the purpose of the code they are writing — that can lead to problems later, if the system developers created isn’t flexible enough to fit the company’s actual desired solution. Companies want candidates who can shape the technical decisions they make around its impact on the business.
The Cross-Functional Interview
Common Cross-Functional Interview Questions
- Describe your working relationship with your previous product manager.
- Have you ever worked in a cross-functional environment?
- How did you coordinate work with co-workers in other departments at your last job?
Interviews often have time reserved for candidates to meet employees from other departments, such as people who work in product, design, security or data.
Company departments should not be islands, and it’s important that employees from different teams are able to work together effectively. Cross-functional interviews assess how candidates would interact with other parts of the company, and also give other departments a say in how the company grows overall.
This portion of the interview is sometimes known as the behavioral interview, but it’s more of an opportunity for both sides to see what it would be like to work together. Picolo said candidates shouldn’t really try to prepare for the cross-functional interview.
“It’s a conversation not just for us, but also for the interviewee to understand if we’re what they’re looking for,” he said.
For instance, product managers might ask candidates about past interactions with product managers, to get a sense of how they’ve worked with other company stakeholders in the past and whether it aligns with the company’s culture.
“We want to make sure that both sides are having the right expectations for each other.”
“In some organizations, product managers are just an assembly line for tickets, and you just grab tickets off a queue and you get no opinions in the matter,” Picolo said. “But we’re very collaborative, and product managers and engineers and designers are working closely together to build the set of expectations for each other.”
But candidates don’t need to panic if they haven’t worked at companies that collaborate in exactly the same way as the one they’re interviewing for. These cross-functional interviews are more about setting expectations so that candidates can gain a better understanding of the company culture and figure out if what they’re looking for isn’t what the company has to offer.
“There are definitely people out there that want a role that’s just working on hard coding problems all day,” Picolo said. “And that’s totally fine expectations for a role, but it’s not the way our engineering roles look. So we want to make sure that both sides are having the right expectations for each other.”
Just Relax and Enjoy the Ride
Interviews are bidirectional — candidates should take the opportunity to find out more about a prospective company as well. Gansley said that, since interviews are currently virtual, it’s even more important for candidates to ask questions of the companies they’re interviewing at.
“You want to ask about culture and how the team dynamics are, because you’re not going to be in the office observing whether it’s quiet, or whether it’s loud, and what your personal preferences are,” she said. “You should always go to interviews prepared with questions about the culture and trying to see if you would fit in there, but I think that’s in particular important in the remote context.”
Engineering interviews can be intimidating, but she said it’s easier to get more out of the experience if candidates try to relax.
“Try to be yourself and know that everyone in engineering has some bad interviews, it’s a fact of life,” Gansley said. “There are a lot of opportunities in this industry, so just don’t be too nervous and try to enjoy learning about different companies.”