Tool Design Engineer Interview Questions
How should you conduct a senior software engineer interview? This post will provide you a list of essential questions to ask during the interview. 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.
What we'll cover
- The typical interview process
- Tips on conducting a good interview
- Interview questions: pre-screening questions, software design & architecture questions, database questions, and behavioral questions
Typical Software Engineer Interview Process
Before we jump into things, you should already be familiar with what the interviewing process should look like,
If not, we've previously covered this topic in detail before. For both junior and senior software engineers, the interview process is pretty much the same. If you need a refresher, you can refer to the following:
- Preparing for the Interview
- Software Engineer Hiring Process
- Wrapping up the Software Engineer Interview
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 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, and can be a good segue into one of the questions in the following list of senior software engineer interview questions.
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 interview questions for a senior software engineer.
Interview Questions to Ask Senior Engineers
Pre-Screening Software Engineer Interview Questions
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.
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.
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 state and relies on immutable objects. Object-oriented relies on mutable state 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).
You can refer to our other posts for a list of PHP, Python, Android, iOS, and Java interview questions.
Software Design and Architecture Interview Questions
How would you refactor this class for easier unit testing? For parallel and concurrent processing?
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.
The second question, of refactoring the class for parallel and concurrent processing, shows whether the senior software engineer candidate has a good grasp on 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.
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 scale, you can change the question to account for some other criteria, such as legal compliance or for 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.
What kind of graphs and instrumentation would you need to ensure high performance of the given architecture?
Senior software engineers need to know how their code will perform, and 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 the health of them 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.
Database Interview Questions
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 table for batches of an item (known as lots) which 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.
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.
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
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?
What was the last team project you worked on? What did you work on? In hindsight, how would you prioritize the tasks for better collaboration?
With this set of 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 ideas on the soft skills to look for, especially for remote developers, you can 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!
Cut down on the time needed to find and interview developers for your team. Hire top, vetted remote developers on CodementorX — learn more about how we can match you with the right developer in 72 hours or less.
Tool Design Engineer Interview Questions
Source: https://www.codementor.io/blog/senior-developer-interview-questions-6on7cl3reg
Posted by: cortezsedged.blogspot.com
0 Response to "Tool Design Engineer Interview Questions"
Post a Comment