"Who was Hannibal?"
"How much should you charge to wash all the windows in Seattle?"
"How many golf balls can fit in a school bus?"
Over the years, job interviews have evolved. From Thomas Edison quizzing candidates on arcane trivia knowledge to modern tech companies testing a candidate's ability to think well outside the box, we've come a long way. Today, most hiring managers have settled on constructs that are much more pragmatic — like take-home screening assessments or live pair-programming on virtual whiteboards.
Along the way, full sections of the hiring process have been invented, deconstructed, and debated. Some have disappeared and reappeared altogether. But one thing has stayed the same: an underlying need to assess a candidate's hard and soft skills in ways both methodical and meaningful.
Software engineering trends come and go, but time-tested software engineering interview questions aren't going anywhere. To set recruiters and hiring managers up for success and help provide the best software engineering candidate experience, we created a guide to help you navigate the process and hire the right talent. Here are the software engineer interview questions to know in 2022 to help you hire the talent your business needs to thrive.
Key Takeaways
• Tailoring questions at each stage of the hiring process based on experience level is critical to make a successful hire.
• During a phone screen, questions about the candidates’ previous role and their knowledge about your company work well.
• Though coding interview questions are often evaluated automatically, it’s a good practice to take a look at the candidate’s solution to get a holistic understanding of their problem-solving ability.
• System design interview questions should proceed like discussions, as the candidate thinks aloud about all aspects of the system.
• As a recruiter, maintaining a pulse on trends and changes in tech is imperative for success.
What Does a Software Engineering Interview Process Look Like?
When interviewing software engineers and other technical talent, you'll be asking a myriad of questions at a variety of key stages. Before reviewing the types of questions you’ll be asking, it's helpful to know how to structure your interviewing process for best results.
Phone Screen Round
Phone screens are quick-fire ways to evaluate communication skills and weed out candidates who don’t meet key requirements for the role. During a phone screen, questions about the a candidate's’ previous role and their knowledge about your company work well. A few examples to get you started include:
• How did you hear about our company and this role?
• What tasks did you perform on a daily basis at your previous company?
• Tell me about a career goal you have.
• Why do you want this job?
• What management style do you prefer?
Coding Interview Round
A coding round often comes after this stage. This part of the process is highly customizable, and hiring managers can choose from a number of variations on how to evaluate technical skills thoroughly — via a take-home assessment consisting of theoretical and practical questions, a live pair-programming interview, or both.
This round is used to gauge the candidates’ problem-solving skills and proficiency in a programming language, and it’s a contentious one. Long-standing debates like why senior engineers should be asked to balance trees in an interview remain unresolved. It’s important to establish distinct approaches for every level of software engineering role your organization is hiring for. Read on for more detailed questions in the following section.
• Given a source code in a custom-designed markup language HRML, print the value of attributes
• Handle error messages in a small computational server that performs complex calculations
• Construct Sierpinski Triangles, in the form of ASCII art
• Determine if a linked list contains a cycle
• Count how many birthday candles are the tallest
System Design Interview Round
Following a successful coding interview comes a system design round. More commonly found in hiring processes for senior-level roles, this stage grants candidates a peek 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, as the candidate thinks aloud about scalability, storage, reliability, and other aspects of the system.
• 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.
Culture and Behavioural Interview Rounds
Culture and behavioural interviews are also common, and can occur later in the hiring process. These are carried out with the goal of assessing how well candidates will adapt to an organisation’s culture. Questions during this round are often open-ended:
• When was the last time you made a big mistake at work, and how did you address it?
• What motivates you to do your best work?
• Have you ever taken a professional risk? What was it?
• How do you respond to critique?
• How do you prefer to communicate with your colleagues?
These questions give insights into the candidates’ work personality. Seemingly small things like preferred mode of communication can have a huge impact on their work and collaboration at your company, so it’s incredibly important to assess their “culture add” and pay ample attention to the soft skills they possess.
This process varies between experience levels — for early career professionals, a coding test followed by one interview is considered adequate, while more senior professionals tackle a multitude of coding, system design and project questions over a series of interviews. Tailoring the process for each experience level and role, and eliminating bias at each step of this process, is the magic formula to make a successful hire.
What are Common Coding and Project Questions in Software Engineer Interviews?
Coding and system design interview rounds can engender a great deal of anxiety for candidates and recruiters alike. Preparing adequately can reduce this anxiety and lead to a higher-quality candidate experience. It’s important to make sure to use the right software engineer interview questions to assess the right skills for the right roles.
It takes a village to assess a software engineering candidate’s fit. As a recruiter, you might not be able to independently assess a candidate's ability to answer a technical question. Nevertheless, it's important to understand why these questions are posed so you can aid your partner (often a technical hiring manager) and facilitate the hiring process in the most meaningful way.
Here are a few standard questions from our assessment library to get started. Questions like these are used by more than 2600 companies and 16 million developers worldwide to assess candidates’ technical skills.
The following questions have been sourced from our openly available practice challenges.
Coding Interview Question #1
Lexicographical order is often known as alphabetical order when dealing with strings. A string is greater than another string if it comes later in a lexicographically sorted list.
Given a word, create a new word by swapping some or all of its characters. This new word must meet two criteria:
- It must be greater than the original word
- It must be the smallest word that meets the first condition
Why to ask this question: This question tests a candidate's ability to create a logical, ad-hoc solution. There is no specific algorithm and the challenge is to understand the problem logic, so questions like these allow interviewers to see how a candidate thinks critically.
Coding Interview Question #2
Convex Hull of a set of points, in 2D plane, is a convex polygon with minimum area such that each point lies either on the boundary of the polygon or inside it.
Let's consider a 2D plane, where we plug pegs at the points mentioned. We enclose all the pegs with an elastic band and then release it to take its shape. The closed structure formed by an elastic band is similar to that of a convex hull.
In the above figure, the convex hull of the points, represented as dots, is the polygon formed by a blue line. Given a set of N points, Find the perimeter of the convex hull for the points.
Why to ask this question: This question is hard CS/computational geometry. It might be useful for data analysis or mapping. It's unlikely that an ad-hoc solution can be developed during an interview and two algorithms to look out for in the candidate’s solution are Graham's scan and Jarvis's march. Questions like these allow a recruiter or hiring manager to gauge mathematical knowledge — in this case, geometry.
Technical Interview Question #1
Create a basic auto correction application per the requirements below. The finished application must pass all the unit tests.
Complete the implementation of src/components/AutocorrectTextarea.js according to the following requirements:
- AutocorrectTextarea is a component that takes a correction object below denotes that ‘really’ is a correction for ‘realy’, and ‘weird’ is a correction of ‘wierd’:
Const corrections = { ‘realy’ : ‘really’, ‘wierd’ : ‘weird’, };
- Assume that no value of the corrections object appears as the property in the corrections object.
- AutocorrectTextarea renders a textarea element and lets users write text in it.
- Assume that the text consists only of words separated by a single space character.
- Once a space character is typed, the word preceding it is considered to be complete and must be autocorrected according to the corrections object if a correction exists.
Initially, the file is filled with boilerplate code. Note the following:
The textarea element must have:
data-testid=”textarea”
Please note that the component has these data-testid attributes for test cases, and certain classes and ids for rendering purposes. You should not change them.
Why to ask this question: This question tests the candidate's knowledge of, and ability to use events to trigger a function. Ask questions like these to observe the candidate's familiarity with functional programming.
Technical Interview Question #2
Implement REST APIs to perform filter and sort operations on a collection of Products. Each event is a JSON entry with the following keys:
- barcode : the unique id of the product (String)
- price : the price of the product (Integer)
- discount : the discount % available on the product(Integer)
- available : the availability status of the product (0 or 1)
Here is an example of a product JSON object:
[ { “barcode”: “74002423”, “item”: “Shawl”, “category”: “Accessories”, “price”: 758, “discount”: 12, “available”: 1 } ] [ { “barcode”: “74001755”, “item”: “Ball Gown”, “category”: “Full Body Outfits”, “price”: 3548, “discount”: 7, “available”: 1 } ]
You are provided with the implementation of the models required for all the APIs. The task is to implement a set of REST services that exposes the endpoints and allows for filtering and sorting the collection of product records in the following ways:
GET request to /filter/price/{initial_range}/{final_range} :
- returns a collection of all products whose price is between the initial and the final range supplied.
- The response code is 200, and the response body is an array of products in the price range provided.
- In case there are no such products return status code 400.
GET request to /sort/price :
- returns a collection of all products sorted by their pricing.
- The response code is 200 and the response body is an array of the product names sorted in ascending order of price.
- Complete the given project so that it passes all the test cases when running the provided unit tests.
Why to ask this question: This question tests the candidate's ability to answer API requests with filtered or sorted data as well as returning correct status codes. APIs are oftentimes hard to work with; questions like this gauge how comfortable the candidate is with them.
How can you improve your software engineering knowledge?
Keeping up with the ever-evolving world of software can be a challenge. But maintaining a pulse on trends and changes in tech is imperative for success. If you’re looking to brush up on your software engineering knowledge, understanding common software engineering terms is a good place to start.
Common Software Engineering Terms to Know
Here’s a comprehensive guide to start with. Or, if you’re looking for a jump start, here are five of the most commonly used terms.
• API: Application Program Interfaces are how applications communicate with each other.
• Server: This is the hardware or software that provides information to users. A database server gives you access to a database, a file server lets you access files—there are tons of types of servers like these.
• Framework: A skeleton to build on. For example, instead of developing a website from scratch, a framework like Django and Angular can be used.
• Front end: The part of an application or website that’s visible to a user — the fonts, images, colors and shapes.
• Back end: An umbrella term for everything behind the scenes that keeps an application or website running. It typically consists of a server, a database and an application.
Software Knowledge Centers and Developer Communities
The importance of trending technology can’t be underestimated in the world of tech. One day, Python is dominating the biggest companies’ tech stacks and on the next, Go is quickly replacing it. Here’s a handy list of sources to help you stay in the know.
Tech News:
• Built In
Tech Communities:
• Bytes
Educational Resources:
• HackerRank’s Technical Recruiting Learning Series
Thought Leaders:
In a world where tech recruiting gets more challenging by the day, knowing the best software engineer interview questions to ask is core to your success. Equally important? Having full purview of the process, familiarizing yourself with basic programming knowledge, keeping up with the latest in tech, and actively participating in online communities can all play a significant role in helping you make the perfect hire for your organization.