10+ Senior Software Engineer Interview Questions to Ask Your Candidates
Here are essential interview questions to ask senior software engineer job candidates to figure out if they are a good fit for your dev team.
How should you conduct a senior software engineer interview?
This post will provide you with a list of essential interview questions to ask during your meeting with prospective senior engineers and dev team leads. We’ll also cover why you should ask these questions, and how you can expand them further to help you find just the right senior software engineer for your position.
Skip the early stages of the hiring process by accessing Arc’s talent-verified, ready-to-start remote developers:
✔️ Review available developers’ profiles
✔️ Send interview invitations to speak to them
✔️ Only pay when you make a hire
✔️ Get expert guidance from talent experts throughout the process
Leave the fight for tech talent to other companies, and get access to developers today. Sign up to Arc and hire developers now →
Mục lục bài viết
How to Conduct a Good Interview with a Senior Engineer
Before the Interview
Before the interview, let the candidate the format that the interview will take. For example, it can be very surprising for a candidate when they are faced with a panel of interviewers when they were under the impression that it would be a one-on-one interview, which can skew how that candidate will fare.
Inform the candidate who they will be interviewed by, or at least their job titles. This is especially important for a startup or a medium-sized business, where it is still possible that the CEO or other executives to conduct interviews (or reviews of candidate interviews) at the senior software engineer level.
This should be a given, but be sure to prepare the questions you will ask the candidate. For each question, consider what abilities or skills you are gauging and testing. Consider how each question mirrors a workplace situation or project that your team or company is working on. Think of levels of answers that are expected from candidates. For instance, level 3 (great) candidates will answer the question in a certain way, while level 1 (adequate) candidates will answer the question in another way. Most importantly, practice asking the questions.
To prepare for the interview, take notes on the candidate’s resume and highlight projects or specific achievements that you can ask questions about. This will give you a better idea of a candidate’s skill set, and it can be a good segue into the upcoming list of senior software engineer interview questions.
Read More: How to Get Developers Interested in Your Project and to Join Your Team
During and After the Interview
During the interview, take notes on how the candidate responds to the questions. What impression of the candidate do you have during the interview?
After the interview, do not forget to let the candidate know they will be contacted for further interviews or with whatever the next steps are in your company’s hiring process. Also, it is good to review and compare notes as soon as possible with other interviewers or hiring managers as the interview will be fresh in your mind.
Now, let us get to the important interview questions to ask a senior software engineer candidate.
Pre-Screening Interview Questions to Ask Senior Software Engineers
1. The Fizz-Buzz Test
The Fizz-Buzz test is a way to filter out candidates that do not have basic programming knowledge. If you are a hiring manager at a popular company or in a popular area, you may receive many applications for your senior software engineer position, and you will need a quick way to determine whether or not the candidate can program.
Here’s an example of how the Fizz-Buzz test interview question might look:
Write a program that prints the letters from A to Z. But, for every third letter, print “Fizz” instead. And, for every fifth letter, print “Buzz” instead. For letters which are both a third and a fifth letter, print “FizzBuzz.”
In the pre-screen, you can use an online code editor such as Etherpad or just Google Docs to see the candidate code a solution to Fizz Buzz. You can determine whether the candidate can code or not because there are only so many varieties of solutions.
If they get stuck or if they write up a solution that has bugs and does not work, they clearly are not senior software engineer material. If they write up a solution to Fizz Buzz very quickly and it works, they have passed this particular pre-screen question.
However, if you still have doubts about a candidate’s coding abilities for a senior software engineer position, you can assign a slightly more substantial “assignment” that they can complete at home in an hour or less of work.
Read More: Is Your Developer Ready for Remote Work? 14 Key Interview Questions
2. What are the differences between functional and object-oriented programming?
This question is asked in a pre-screen because it shows knowledge of the two main paradigms in software development and can help you figure out which style the candidate prefers. If they come from a functional background, they may be more comfortable with programming languages such as Clojure, F#, Erlang, Haskell, or Common Lisp. Object-oriented developers will be more comfortable with Java, C#, C++, or Smalltalk.
Some of the differences between functional and object-oriented programming are:
- Functional programming avoids mutable states and relies on immutable objects. Object-oriented programming relies on mutable states and in-place modification of objects.
- The main concept in functional programming is the function, where inputs are used in a computation that results in an output. In object-oriented programming, the main concept is the class, which contains instance or class variables that can be manipulated by methods and can be extended or inherited from.
From here you can ask further questions, specific to the tech stack your company uses.
For example, if your company is using Clojure, it is imperative to know whether the senior software engineer will be comfortable with the language (they may need training if they have a Java background or may need very little training if their background is in Common Lisp).
Design & Architecture Interview Questions for Senior Engineers
3. How would you refactor this class for easier unit testing?
For this question, you ask a candidate to refactor a class into smaller ones. The idea here is to see how they deconstruct the class into different responsibilities and groupings of methods.
What I like about this question is that there are many times in-production projects where an architectural decision early on to combine a lot of functionality into one class acts as a barrier to implementing new features. Being able to break down a class that is too large into smaller, sensible classes, is a valuable skill to reduce the technical debt a team will have to handle in the future.
Read More: How to Conduct a Remote Technical Interview Successfully
4. How would you refactor this class for parallel and concurrent processing?
The follow-up question to the previous one, of refactoring the class for parallel and concurrent processing, shows whether the senior software engineer candidate has a good grasp of handling non-deterministic programming and whether they know how to utilize threads, sub-processes, or background jobs (through cron, Resque for Ruby, Celery for Python, RabbitMQ, or some other message queue).
Larger projects always have background processing tasks that need to be accomplished, and a candidate will be required to write asynchronous processes and handle the side effects of that.
5. How would you design this system for scale?
This is a higher-level question, where you ask the candidate how they would design the system for scale.
Should the system be a monolithic service or a combination of microservices? How many databases, caching layers, or message queues are required?
You can ask whether they would use Google Cloud Platform, Amazon Web Services, or Microsoft Azure, and ask about the trade-offs and how that would impact the system. How would the candidate deal with scaling a monolithic web service such as a Django or Ruby on Rails app? Would they even bother with caching layers?
There is a whole host of discussion and questions that are opened up by this broad question, and they shed a lot of light on how a senior software engineer thinks, and how well they can design a system.
Even if your company is not strictly focused on scaling, it can be illuminating to see how a candidate would scale the current architecture or redesign it. If the goal is not to scale, you can change the question to account for some other criteria, such as legal compliance or robustness.
Another example is legal compliance because it can include how to design a system to deal with multiple taxes across countries or how to maintain the privacy of user data in compliance with GDPR. If you are hiring in Europe, this is an excellent twist to this question, as privacy is at the forefront of concerns for companies who must comply with European Union regulations.
Read More: Toptal vs Upwork, Fiverr, Arc: Where to Find Great Freelance Developers?
6. What kind of graphs and instrumentation would you need to ensure the high performance of the given architecture?
Senior software engineers need to know how their code will perform, and they need to know which graphs to monitor for the overall health of the system. Good candidates will acknowledge that graphs will need to be created, or performance and/or debugging instrumentation will need to be added to the code. Not-so-good candidates will leave that for later, or neglect it completely. Strong candidates will immediately ask what current system monitoring and instrumentation tools are being used.
More specifically, you can ask which graphs would be useful to see if background jobs are running out of control, and the system is responding slowly. Great senior software engineer candidates will ask for graphs showing how many background job servers are running, and what their health is (in terms of disk space usage, CPU load, and RAM/memory usage).
By asking this question, you can see how a candidate investigates problems and how they would be proactive to be able to monitor and detect problems before they occur.
Senior Engineer Interview Questions on Databases & Data Management
7. What data tables are needed for an inventory management system?
This is a good question because it starts generally. From here, you should expect the candidate to ask what kind of items are stored in the inventory system, whether orders are put into the system to add or remove inventory, and how orders will be tracked. This lets the candidate design at least a few data tables with different data field types.
For instance, for a pharmacy inventory management system, you would have a database table for each item and a table for batches of an item (known as lots) that contain expiration information. You will also have a table of pharmacy customers, a table of orders for customers, and a table of orders for refills.
As you can see from this example, there are many data tables involved. At each step of designing this system, you can observe how a senior software engineer candidate approaches the design of the system. You can also observe how they gather requirements.
Gathering requirements and asking questions in order to do so is a crucial skill for senior software engineers. They are expected to be able to define their own work to a larger extent than junior or mid-level software engineers.
Read More: Good Developers Don’t Always Make Good *Freelance* Developers
8. What are some sharding strategies for Postgres or MariaDB/MySQL time series? For geographical databases?
With this question, you can dive into more technical details. Sharding is a very important component for larger web services. Asking about how the candidate would design a SQL database for sharding with time series and geographical data can give you insight into how analytical the candidate is and how they approach problem-solving.
9. When would you use a NoSQL solution instead of SQL?
The default database for small projects and startups in the last 5 years was to start with a NoSQL solution such as MongoDB or Couchbase. After some years of use, the industry is much more aware of both the advantages and limitations of NoSQL solutions.
This question lets you know if the senior software engineer candidate is aware of those advantages and drawbacks. It can tell you how much the candidate knows about when to select a particular database design, and which database to select for a particular scenario. It also gives you another chance to see how they present their ideas and take into account the risks and persuasiveness of the solution.
Behavioral Interview Questions to Ask Senior Software Developers
10. Your manager wants you to select between two technologies. How would you do this?
With this question, you are testing the communication and persuasive ability of the candidate. This situation frequently comes up in software development, whether it is choosing between Angular and React or PHP and Ruby on Rails.
Another scenario is selecting one algorithm, architecture, or system design over another.
You can test how well a candidate presents a business case to use one technology, and what risks and values they consider when making the decision. This is also a good question for culture fit, because you may want to hire a senior software engineer who collaborates in a particular way to fill in gaps on your team.
Here are some examples of specific versions of this question to ask:
- You (the candidate) are using AngularJS in our environment, but you notice that React is gaining popularity and Angular 2+ has come out. How would you make the case for switching to React? How would you make the case for upgrading to Angular 2+ from AngularJS?
- Our company is currently using a VPS Linux instance on Digital Ocean, but we are close to reaching the limits. How would you (the candidate) lay out the case for us to switch to Amazon Web Services? If asked to present this case to the executive level, what information would you highlight?
- You are writing a prototype of a new tool in Scala, but the core application is built using Python. How would you make the case for switching to Scala? How would you make the case to rewrite the prototype in Scala?
Read More: How to Find Developers: 18+ Expert Tips & Essential Strategies for 2022
11. What was the last team project you worked on? In hindsight, how would you prioritize the tasks for better collaboration?
With these behavioral interview questions, you are finding out whether or not the candidate was a team player and collaborated well with others. You will also find out how they prioritize tasks, and how they explain what they would do differently. This set of questions also draws out how a candidate felt about the project, and whether they express some passion or excitement about it.
This set of questions can be informed by what is in a candidate’s resume. For more soft skills to look for, refer to this post.
Conducting Your Next Senior Software Engineer Interview
We covered interview questions to ask, from databases, system architecture, and software design, to questions to pre-screen candidates for a senior software engineer role. Remember that for each question you can expand it or narrow it to find out whether a candidate is a good fit for the position.
Now, you’re ready with great questions to ask when you conduct your next senior software engineer interview. Good luck!
Read More: Andela vs Toptal vs Turing vs Arc: Which is the Best Andela Alternative?
Skip the early stages of the hiring process by accessing Arc’s talent-verified, ready-to-start remote developers. Leave the fight for tech talent to other companies, and get access to developers today. Sign up to Arc and hire developers now →