The term DevOps has, without doubt, entered the buzzword phase of its life. Everyone is using it to mean something, and there is no shortage of people out there who are willing to charge you a small fortune to show you how to properly implement DevOps in your team. The catch: there is little to no agreement about what the term actually means.
There are many who will tell you that the difficulty in defining DevOps comes from the fact that DevOps isn’t a ‘thing’ as such — it’s a ‘philosophy’ or a ‘culture’ — something mystical and somewhat elusive. Which is strange, because most people would agree that DevOps is ultimately about being practical.
For the purposes of this article, we’ll take a very simple and broad definition: a DevOps engineer is someone who has both coding and software development expertise (‘dev’) as well as operations and infrastructure expertise (‘ops’). On top of this, they are slightly obsessive about efficiency and tooling. They are people who can analyse complex systems and then identify and remove bottlenecks, often using specialised tools to do so.
You probably want to work with people like this, because the combination of these skills is rare and can provide value in nearly all teams, from small startups to large corporations.
It is challenging to hire DevOps people partly because of this lack of an agreed-upon definition about what they are. However, it is also difficult to use a traditional interview (consisting of a mixture of theoretical interview questions and practical coding tasks) to assess the breadth of skills that DevOps engineers require.
If you’re looking to hire someone to help you with DevOps and you are not sure how to assess them, read on for some questions and answers to prove that they have a good grounding in the skills that you need.
Whether it’s DevOps coding interview questions, or general warm-up questions you need, check out our list of DevOps engineer interview questions below!
Looking to hire the best remote developers? Arc can help you:
⚡️ Get instant candidate matches without searching
⚡️ Identify top applicants from our network of 350,000+
⚡️ Hire 4x faster with vetted candidates (qualified and interview-ready)
Try Arc to hire top developers now →
Considering the Type of DevOps Engineer
You are going to be sitting across the table from someone who claims to have substantial DevOps knowledge, and you need to verify that this is true. You are going to only have a short time to assess this person in three specialized areas: software development, operations, and specialized tooling.
Below are some example questions that you can use to probe the candidate’s expertise in all three areas. Depending on the exact nature of the role you are hiring for, you are likely to value one or two of the three areas more:
- In a smaller company, you are likely going to need your DevOps engineer to be hands-on in terms of writing code and bringing software engineering knowledge to the table.
- In a larger team, coding knowledge is still an important skill to allow the person to work well with your existing software engineering team, but it becomes less important than their ability to understand complicated systems made up of people and software — and to find and eliminate bottlenecks.
DevOps Questions to Ask: Warm-Up
Before you get into probing too deeply into specific competencies, you will want your candidate to have some time to warm up to the interview. One of the most important things to keep in mind while interviewing is that everyone has a character flaw or two. The point of the interview isn’t to catch the candidate out and expose their weaknesses (though it is helpful to understand them), but rather to understand the candidate’s strengths, and see if these overlap with what you are looking for.
A good way to understand someone’s strengths is to ask them what they’re good at. However, especially in an interview environment, this often can lead to very general and vague answers, like “I’m good at problem-solving” or “I’m good at learning new skills.” To get more specific, a great starting DevOps interview question is:
Tell me about the hardest problem you’ve ever solved
And/or: “Tell me what achievement you are proudest of.”
The DevOps engineer interview candidate will probably be able to answer this question quite easily (everyone is happy to talk about highlights from their history), so it is a good icebreaker question.
But instead of just being a way of introduction, it also can give you a quick starting point to find concrete details for the rest of the interview. After the broad introduction, you can ask detailed questions about specific parts of the problem or the achievement related to the skills you are looking to hire.
For example, if the candidate talks about scaling a web app to tens of thousands of users, and you are looking for a ‘tool-focused’ DevOps engineer, you can ask what tools they used to achieve this, why they selected those tools, how they learned to use them, and so on. In the context of scaling and tool selection, exploring Managed DevOps Solutions can provide a comprehensive approach to optimizing these processes.
If you are looking for an ‘operations-focused’ DevOps engineer, you can ask what infrastructure they used, which services or hardware, how they dealt with hardware failures, and explore the achievement from an angle relevant to your company.
Depending on how much time you have for the DevOps interview, you can learn a lot by spending 10-20 minutes asking more and more detailed questions about the candidate’s project.
Depending on the seniority level that you are hiring for, it is likely that the candidate will pick something specialized and beyond your own knowledge, so this is also a good opportunity to assess their communication ability, and specifically their ability to explain something complicated at an appropriate level (i.e. to someone who has general expertise, but not the topic-specific experience that they do).
This is why the question “Tell me, in three minutes, about the hardest problem you’ve solved” or “Tell me, in three minutes, what achievement you are most proud of” is always a great place to start.
Software Development: Theoretical DevOps Interview Questions
You will want your DevOps engineer candidate to have solid knowledge of software development, even if you do not expect them to write much code in their role. This means they should understand both programming fundamentals, such as basic algorithms and data structures, but also software engineering fundamentals, such as how (and why!) to use version control.
A great DevOps interview question to test how much knowledge someone has about programming is to ask about a specific data structure, such as a hashtable. Most people prepare in some way for technical interviews, so although it’s good to start with a basic question like:
What is a hashtable? What are its most important properties?
When asking the question “What is a hashtable and what are its most important properties?”, bear in mind that this is only a starting point to check that the candidate can give you something like a hashtable is a key-value mapping with O(1) lookup in response. However, that answer is not enough to prove more than rote knowledge. To prove a deeper understanding, you should ask some follow-up questions, such as:
Can you give me an example of an appropriate scenario to use a hashtable?
And/or: “What about an inappropriate scenario for using hashtables?”
The key understanding that you are looking for here is that a hashtable provides efficient lookup of arbitrary keys, but it is not ordered. A classic example of an appropriate scenario for hashtables would be a digital telephone book where a user inputs a person’s name and gets a phone number returned.
It’s possible that the candidate might struggle more to think of an inappropriate scenario, so be prepared to give some hints. One example would be to store a list of countries that need to be displayed to the user alphabetically — you do not want to have to re-sort the countries each time!
If you want to probe theoretical software knowledge more deeply, this is one of the easiest areas to test knowledge, as there are almost limitless questions to ask. For example, you could ask:
What is a scenario where a Trie data structure would be appropriate to use?
Where you are looking to see that the candidate understands the Trie data structure and how it can efficiently to sort words by prefix, for example, to build an autocomplete tool. Or you could ask:
What is a Bloom filter, and when might you use one?
Asking a Bloom filter use question like this will let you see if they understand how to trade off memory and correctness using this data structure.
An example of when to use a Bloom filter would be in a web proxy cache. As the Bloom filter can quickly tell you if something is definitely not in a set very quickly, you can quickly choose to bypass the cache and fetch the fresh page when necessary.
Struggling with interview prep? Meet senior developers from Amazon, Microsoft, and Google now on Codementor. They’ll help you tackle coding challenges, practice interviews, and sharpen your skills in live 1:1 sessions.
Book a session with our interview prep tutors today! Your first 15 minutes are free.
Explore our other software development interview questions and answers to prep for your next remote job.
Software Development: Practical DevOps Interview Questions
It’s great if your DevOps candidate has ‘book smarts’, and knows about hash tables. But you’ll want to check that they can actually write some basic code too! A now-famous study showed that many people employed as professional coders bluffed their way into jobs that they are not qualified for and, in fact, cannot even write “FizzBuzz” without help.
(“FizzBuzz” is a basic programming task where the candidate is asked to write a program that prints out all the numbers between 1 and 100 but replaces each number that is perfectly divisible by 3 with “Fizz”, each number that is perfectly divisible by 5 with “Buzz” and each number that is divisible by 3 and 5 with “FizzBuzz”.)
This problem is now famous enough that people are likely to memorize a solution if they aren’t confident about being able to write it out on-demand, so you’ll probably want to change it up a little bit. For example, you could ask the candidate:
Please answer the following:
For a given integer i, we are interested in what happens if we sum the digits that make up the square of that integer, which we call r
. For example, for i
=11, the square is 121 and the sum of the digits 1,2,1 is 4, so r
=4. Find the i
in the range [0,100] that gives the largest value of r
. What is i
and what is r
?
When interviewing for a DevOps role, you probably do not care too much about the language with which the candidate chooses to solve this problem, but if there is a hard requirement, this is also a good time to check if the candidate knows the basic syntax of the language you need expertise in. You should check that the candidate can produce something like the following code:
largest_value = 0
largest_index = -1
for i in range(100):
x = str(i**2)
s = sum([int(j) for j in x])
if s > largest_value:
largest_value = s
largest_index = i
print(largest_index, largest_value)
# >> 83 31
To test the candidate’s coding knowledge more deeply, and to build on some of the theory questions we asked, you could ask:
Sketch out (using code) the design and basic implementation of a hashtable assuming you have access to other basic data structures (e.g., array).
You probably don’t want to waste time watching the candidate write out all of the code for a Hash Table, but you should check that they understand the basic principle (hash values to a predetermined range and store them by index in an array), and can write down the most important methods, such as adding new values to the table, and retrieving them again.
Now that you are confident your candidate knows some of the “Dev”, it’s time to start looking at the “Ops”.
Operations Knowledge: Theoretical DevOps Interview Questions
Once again, the questions you choose to ask in this section will highly depend on your organisation and what skills you need. If you are already depending on a specific cloud provider such as AWS, Azure, or GCE, and you want your new DevOps Engineer to be involved in configuring services there, you’ll want to check that they already have experience or will be able to pick it up quickly.
For now, we’ll assume that you want someone with technical operations knowledge — i.e. that overlaps with the skills that a traditional Systems Administrator, or sysadmin, might have. Note that it’s also fairly common to look for more of a focus on Business Operations in DevOps roles — if that is the case for you, you’ll want to switch out questions in this section with questions tailored to your field and business size.
If all of your operations run or one or two servers, cloud expertise will be less important and you’ll instead want to check the candidate’s expertise with basic server management. For example, if you are running a Linux-based web server, and you will need the DevOps Engineer to configure this, you’ll want to check that they have expertise in using Linux commands.
If you run your own hardware on-premise, you’ll want to check if the candidate has experience with procurement and cost optimization.
In many cases, you will want the candidate to have fundamental knowledge and experience in at least Computer Networking and Operating Systems, and to be able to identify or make educated guesses as to where problems lie based on obscure symptoms.
A good, if somewhat overused, question to test networking knowledge, is:
Tell me in as much detail as possible: what happens when I type google.com into my browser’s address bar and press enter?
Depending on what you think is more important, you can ask the candidate to focus on specific parts of the question, such as how the operation passes through the network stack as different kinds of machines talk to each other, or on a higher-level view to explain ports, sockets, DNS, different kinds of hardware (e.g. routers), and so on.
The above should give you a good idea of the candidate’s expertise in networking, but you will probably want your DevOps engineer to also have deep knowledge about operating systems. Even if their day-to-day tasks might not require them to use this knowledge, it will be useful in situations such as outages, scaling problems, or any scenario where something is wrong and no one knows what.
A good way to test broad operating systems knowledge is to ask the candidate about latency. A great resource for this is the well-known Numbers Every Programmer Should know post. It’s probably not important that the candidate can recite the numbers discussed there verbatim, but they should be able least discuss the relative latencies: e.g. they should be able to have a conversation about the different layers of processor caching, as well as RAM and virtual memory or page table functionality.
If they are familiar with some standard algorithms for caching such as Least Recently Used (LRU) or Least Frequently Used (LFU) then a conversation about these can also be illuminating. A question you could ask to start a discussion about all of these topics is:
Consider the following scenario:
We are choosing hardware for our new server fleet. The salesperson has given us a bunch of options with different combinations of processors and RAM and hard drive specifications. They talked about different speeds and caching a lot, but I didn’t really understand. Could you tell me more about when I would need a better processor compared to a better hard drive? What are the trade-offs between different kinds of caches?
It’s an open-ended question so it’s also interesting to see what the candidate chooses to focus on. You are looking to see that he understands how things work at a low level and would be able to take this into account when doing day-to-day tasks (which will probably involve optimizing systems and processes at a higher level).
It is hard to test practical knowledge of operating systems within an interview environment so you’ll probably want to simply skip attempting to ask any more practical questions. If you believe that it is important, you could set up a virtual machine with a web application that has “crashed” and ask the candidate to try figure out what is wrong while you watch. However, this is likely to be a time-consuming exercise that doesn’t give you much information except for how well the candidate performs under pressure.
Tooling, Optimization, and Tradeoffs
Low-level knowledge about programming and operating systems is important for the DevOps candidate to possess so they can make well-informed higher-level decisions, but in many DevOps roles, the candidate will not need to use these skills directly.
Instead, the core of many DevOps positions is to take a big-picture view of a company or system, and implement technical optimizations at the bottlenecks. But because of this focus on optimization, it’s common for DevOps engineers to want to optimize every system and process that they come into contact with.
Any improvements made anywhere besides the bottleneck are an illusion.
~The Phoenix Project
It’s important to check that your candidate isn’t obsessed with optimization to the point where they will be pushing to make optimizations in sections of systems that will not truly benefit from them. Or more generally, the candidate should be adept at making decisions involving trade-offs.
Finding inefficiencies in a large system is not difficult. Suggesting optimizations is similarly easy. Implementing the suggested optimizations is more useful, but still relatively straight forward in many scenarios.
The hard part of DevOps is often realising when some component is inefficient and yet good enough. Therefore, sometimes it’s more important (but also more difficult) to test that the candidate knows where to not optimize.
It’s difficult to find generic questions to test a candidate’s optimization expertise in an interview setting, but one question that can often start an enlightening discussion is:
How would you evaluate whether a 5-year-old system with many inefficiencies and problems should be slowly improved or trashed and rebuilt from the ground up?
It is something of a trick question because you are foremost looking to confirm that the candidate understands the dangers of throwing out a legacy system under the assumption that it can be “built property” the next time around. It is common for newcomers to quickly identify and criticise all of the broken or bad systems and processes, and you want your candidate to have the experience to recognise that it is almost never the correct decision to start over.
However, also listen out for the exceptions which the candidate will hopefully mention:
- If the original requirements were completely different,
- If more time and resources are now available, or
- If the current system or process is so bad that it is causing the business to lose large amounts of money regularly and cannot be salvaged.
Another great general question to dig into the candidate’s ability to make hard and correct tradeoffs is to ask directly:
Tell me about a time you were faced with a difficult trade-off and you made the wrong choice. What happened? What would have happened had you made the other choice?
It doesn’t matter too much what the candidate chooses to talk about, but you are listening for evidence that they have explicitly spent a lot of time thinking about tradeoffs and have reflected hard on times where they made the wrong choice with the goal of making better choices in the future. If the candidate can think of a good technical example quickly (for example, they used framework $X$ when framework $Y$ would have gotten them further), ask for a non-technical one too, such as a time when they prioritised building something that was not really needed over something that was greatly needed.
In this final phase of the interview, you should also probe familiarity with specific tools. Although DevOps Engineers should be able to learn new tooling very easily, if your company is already heavily invested in specific tools, you can use deep expertise in the same or similar tools as a ‘tie-breaker’, to choose one candidate over another if they are very similar in all other aspects.
Wrapping up
Finish the interview by asking the candidate if they have any questions about you, the company, or the hiring process. Although this is often done as a courtesy to the candidate, the evaluation shouldn’t stop at this point. A great candidate will have come with some questions in mind, and show that they already have insight into the company, how it operates, and what its problems might be in asking questions.
DevOps is one of the trickiest roles to interview for, not least because of the lack of a globally accepted definition of what the role entails, but it’s worth putting in effort because a great DevOps Engineer can add value across all the entire company. You should be able to use the specific questions above or adapt them to be more relevant to your company to assess both how good a DevOps candidate is, and how good a fit they are for your needs.
You can also explore HireAI to skip the line and:
⚡️ Get instant candidate matches without searching
⚡️ Identify top applicants from our network of 350,000+ with no manual screening
⚡️ Hire 4x faster with vetted candidates (qualified and interview-ready)