The questions you ask software engineers in a technical interview have a huge impact on hiring outcomes. So much so, that 34% of engineers and developers consider the quality of interview questions to be the number one factor in whether or not they accept a job offer. The relevance of the questions is also key, as 32% of engineers and developers reported this as the first thing they notice about a company during an interview.
So what types of questions should you ask when interviewing a software engineer?
We’ve compiled a list of practical interview questions covering four key software engineering skills: system design, programming, database management, and non-technical problem solving. To create a question strategy for your upcoming interview, select some of the following problems that directly assess the skills you’re hiring for.
System Design Questions
A system design question challenges candidates to design a back-end system, often on a physical or virtual whiteboard. By their nature, system design questions are broad, open-ended questions with a variety of possible answers. Candidates should verbally explain their solution and thought process as they develop their answer, considering factors such as scalability, storage, and reliability. System design questions are more commonly found in hiring processes for senior-level roles, though engineers of other experience levels might also encounter this type of question.
Design a ride-sharing service
Design a ride-sharing service that enables users to request rides through an app. The system should account for workflows for both passengers and drivers.
Components to consider:
- Payment processing
- Encryption and storage of payment methods
- Push notifications and in-app messaging
- Databases to manage user and driver data
- Data privacy and encryption
- GPS and mapping technology
- User reviews and score aggregation
- Data tracking to identify patterns and spikes in activity
- Image hosting system
Design a simple social media application
Designing a social media application is a common system design question that tests the candidate’s ability to plan out the structure of a wide range of technologies. Databases, media hosting, and algorithms are just a few of the topics they’ll need to cover to successfully answer this question.
Components to consider:
- Ranking algorithms
- Databases to manage user data (SQL, MySQL)
- Privacy controls
- Engagement features (following, liking, commenting, sharing)
- Hosting of user generated content (images, video, gifs)
- Database schema
Design a video streaming service
Design a video streaming service that allows users to view and search videos. The service should also enable internal teams to upload content through the back end. The service needs to be highly scalable, supporting large numbers of users on the platform. The application should also be able to upload, store, edit, and transmit large data files.
Components to consider:
- Databases to manage user data (SQL, MySQL)
- Video and image hosting system
- Privacy controls and age restrictions
- Engagement features (following, liking, commenting, sharing)
- Recording data about video performance
- Ranking and recommendation algorithm
- Push notifications and announcements
- Video player functionality
Design a URL shortening service
Design a URL shortening service that returns a short and unique URL when a user enters a long URL. Applications such TinyURL and bit.ly are examples of this service. However, many other technology companies, such as YouTube, also have their own URL shortening services built into their functionalities.
Components to consider:
- Generating a unique and short URL
- Scalability to handle thousands of requests
- Functionality to redirect from the short link to the original
- Support for custom URLs
- Analytics and tracking of clicks
- High availability and uptime
Design a file-storing and sharing service
Design a file hosting service that enables users to upload, store, edit, download, share, and delete files. The service should provide synchronization across various devices. Examples of this service include Dropbox and Google Drive.
Components to consider:
- File management functionality (upload, view, download)
- Automatic synchronization between devices
- ACID properties on database transactions
- File sharing and permission tracking
- Search functionality to locate files
- Storage of large files
Language-Specific Programming Questions
Most coding questions aren’t specific to a particular programming language, allowing a programmer to write code in their language of choice. However, some coding interviews will have questions that test a specific language required by the role.
C
Write a function int max_of_four(int a, int b, int c, int d) which reads four arguments and returns the greatest of them. There is not a built-in max function in C. Code that will be reused is often put in a separate function, e.g. int max(x, y) that returns the greater of the two values. Input will contain four integers – a, b, c, d – one on each line. Note: I/O will be automatically handled.
Java
Given an integer, n, perform the following conditional actions:
If n is odd, print Weird
If n is even and in the inclusive range of 2 to 5, print Not Weird
If n is even and in the inclusive range of 6 to 20, print Weird
If n is even and greater than 20, print Not Weird
Input format: a single line containing a positive integer n. Constraints: 1 <= n <= 100.
Ruby
A hacker practices on HackerRank until getting to a rating of O(1) read as (Oh-one). Call the method coder.practice until coder.oh_one? becomes true. Use the until control structure. until is the logical equivalent of while not. This challenge has a one-line answer.
Database Management Questions
Below are examples of the kinds of database problems a software engineer might face during a technical interview. These questions all test SQL and relational database skills.
Print Prime Numbers
Write a query to print all prime numbers less than or equal to 1000. Print your result on a single line, and use the ampersand (&) character as your separator (instead of a space).
For example, the output for all prime numbers <= 10 would be:
2&3&5&7
New Companies
Amber’s conglomerate corporation just acquired some new companies. Each of the companies follows this hierarchy: Founder → Lead Manager → Senior Manager → Manager → Employee
Given the table schemas below, write a query to print the company_code, founder name, total number of lead managers, total number of senior managers, total number of managers, and total number of employees. Order your output by ascending company_code.
The tables may contain duplicate records. The company_code is string, so the sorting should not be numeric. For example, if the company_codes are C_1, C_2, and C_10, then the ascending company_codes will be C_1, C_10, and C_2.
Weather Observation Station
Consider P1(a,b) and P2(c,d) to be two points on a 2D plane.
- a happens to equal the minimum value in Northern Latitude (LAT_N in STATION).
- b happens to equal the minimum value in Western Longitude (LONG_W in STATION).
- c happens to equal the maximum value in Northern Latitude (LAT_N in STATION).
- d happens to equal the maximum value in Western Longitude (LONG_W in STATION).
Query the Manhattan Distance between points P1 and P2 and round it to a scale of 4 decimal places.
The STATION table is described as follows:
where LAT_N is the northern latitude and LONG_W is the western longitude.
Non-Technical Problem-Solving Interview Questions
Technical skills aren’t the only competency required for engineering. Software engineers solve complex challenges, collaborate with other engineers, and communicate with non-technical stakeholders. To succeed in an engineering role, new hires need to have strong problem solving skills that go beyond the technical realm. Teams looking to hire well-rounded engineers should ask questions that test non-technical problem solving skills, including brainstorming, resource planning, and conflict resolution.
Given the problem of selecting a new tool to invest in, where and how would you begin this task?
Key Insight: This question offers insight into the candidate’s research skills. Ideally, they would begin by identifying the problem, interviewing stakeholders, gathering insights from the team, and researching what tools exist to best solve for the team’s challenges and goals.
Have you ever recognized a potential problem and addressed it before it occurred?
Key Insight: Prevention is often better than cure. The ability to recognize a problem before it occurs takes intuition and an understanding of business needs.
Tell me about a time you used a unique problem-solving approach.
Key Insight: Creativity can manifest in many ways, including original or novel ways to tackle a problem. Methods like the 10X approach and reverse brainstorming are a couple of unique approaches to problem solving.