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…