DevOps interview questions: How to preparePosted Feb 22, 2019 | 11 min. (2227 words)
On LinkedIn, there are more than thirty thousand U.S.-based DevOps positions. That number may not be as high as it is for software developers, but it’s still higher than sysadmins or systems engineers.
Maybe this demand has you interested in switching career paths, or maybe you want to change jobs. If that’s the case, you’re in luck. Today’s post will present some common interview questions that you’ll probably get when interviewing for a DevOps position. I’ll also include some guidance on how to prepare in advance and plenty of links so you can do your research.
If you’re interviewing for a DevOps job, it’s vital that you realize that the industry has changed, and it’s crucial that you can adapt to the new way of delivering software. So let’s start with the first category of questions you may be asked.
Interview questions about DevOps general concepts
It’s a DevOps interview, so be prepared to answer a set of questions to prove that you understand the concept. Most importantly, make sure it’s clear to your interviewers that you’re not there to add another silo but rather to help break barriers to shipping software. These are the typical questions you’ll get and my advice on how to prepare for some of them:
Question: What is DevOps? Why DevOps?
Question: What is continuous integration?
Preparation: You can take a look at Jez Humble’s talk.
Question: What is continuous delivery?
Question: What is continuous deployment? how is it different from continuous delivery?
Preparation: Check out Agile Alliance’s description of continuous deployment and Puppet’s description of why continuous delivery is different.
Question: What’s the difference between DevOps and agile?
Preparation: the Agile Admin article I linked earlier has a good breakdown of how Agile and DevOps are related—and where they part ways.
Question: What’s the definition of done?
Preparation: Again, Agile Alliance can help you out; it’s in their glossary.
A lot of questions could be derived just from the above list, but these are the basic ones, so you’ll be good if you’ve prepared well for these. I also have one last recommendation for preparing for general DevOps questions, and it’s that you consult some of the best sources of knowledge about DevOps—these books:
- The DevOps Handbook (if you read only one book, read this)
- The Phoenix Project (it’s an IT novel; after reading, you’ll be able to articulate what problem DevOps solves)
- Accelerate (I haven’t read it, but I’ve heard pretty good things)
Interview questions about production support
In a good DevOps implementation, you’ll be on the operations side dealing with infrastructure and deployments, not in another silo. So there are going to be times when deployments and releases don’t go as expected. You’ll need to have both good troubleshooting skills and a handy set of tools. For that reason, you can expect interview questions about how to maintain and operate an application. Here are a few examples of what these questions might look like:
Question: What is application performance monitoring, or APM?
Preparation: You’ll need to explain the value of using APM and how to use it, so consult Raygun’s article on the subject that answers the questions you might have, including the basic “what is APM?”
Question: What’s the difference between observability and monitoring?
Preparation: Here’s a good post about the topic from Cindy Sridharan on medium.
Question: What tools have you used when troubleshooting issues?
Preparation: It will always serve you well to have a good working knowledge of what tools exist. If you already have experience with some of them, great. If not, then choose one that’s grabbed your attention and give it a try in your current company or personal project. These types of tools generally have a free period, and if a salesperson contacts you, even better—you can schedule a demo and ask questions.
Question: What are the best practices for monitoring?
Preparation: Check out Raygun’s article on this very subject, and make sure you can articulate something from your previous experiences.
Question: Which disaster recovery strategies would you recommend? And when would you recommend implementing them?
Preparation: I suggest reading up on strategies like pilot light or multi-site, and AWS has a white paper where they explain each approach and how to implement it.
Question: What’s an SLA, SLI, RTO, and RPO?
Preparation: There’s a good video from Google about the topic.
General advice about production support
As long as you can provide solid answers that support your knowledge and prove your experience giving production support to systems, you’ll be okay. Having good feedback at the right time will be critical in your new role as a person who solves problems in a production environment.
Interview questions about deployments
Deployments are one of the essential parts of a DevOps operation. DevOps leans heavily on automation—to the point that some folks think that by just automating the deployments, they’ll be able to release more frequently. But there are many things yet to be done after a developer pushes a code change. So even though automation is critical, it’s not enough. That’s why you might get the following type of questions:
Question: What deployment strategies do you know and have used before? How can a company deploy with no downtime?
Question: What are some deployment antipatterns?
Preparation: You can explain concepts like not working with production-like environments, accumulating several changes or deploying big changes at once, waiting for the weekend or low-traffic hours, and lack of feedback.
Question: What’s a deployment pipeline? What happens after a developer pushes code?
Preparation: Continuous Delivery has an article on this. You’ll need to explain each phase that a code change needs to go through before a customer can use it. Each stage shouldn’t be coupled with an environment, meaning that you won’t create a different pipeline for each environment. And that’s especially true of production.
Question: What’s the difference between a deployment and a release?
Preparation: A good post explaining this is the one from Turbine Labs.
Question: How frequently would you suggest deployments need to happen?
Preparation: There’s a right answer to this question—deployments need to occur in small batches, and frequently.
Question: What is infrastructure as code? And how does it improve the deployment pipeline?
Preparation: Something as simple as a quick brush-up on Wikipedia will help you here. Infrastructure as code will let you and your team provision infrastructure on demand. And if there’s something wrong, instead of manually fixing things, you just delete it and create it again.
General advice about deployment questions
Here’s a general tip—your interview could take longer (a good thing!) if you share real stories about how you’ve been able to improve a deployment pipeline at other companies.
Lastly, here are some book recommendations I have, in case you want to do a deep dive into the subject of deployments:
- Continuous Delivery by Jez Humble and David Farley (old, but still current)
- Effective DevOps (chapters four and five)
Interview questions about configuration management
Configuration management is also a key topic in DevOps. Environments and applications tend to get complex as time goes by. And for that reason, it becomes challenging to know the current status of the environment. Which application version is installed? Which database version is being used? Is the application using the proper environment configuration? For example, is the application running in a prod environment pointing to dev resources or vice-versa? So you’ll also get some questions in the interview like the following:
Question: What is configuration management? Why is it needed?
Preparation: I’d take a look at Continuous Delivery’s post on the subject.
Question: What are the tools you could use for configuration management?
Preparation: It’s vital that you know which tools are better for these type of jobs. Just because you can use bash scripting doesn’t mean that it’s the best option. You’ll need to explain tools like Chef, Ansible, and Puppet. It’s even better if you have real experience with at least one of these three tools. Depending on the company, they might also ask specific questions about Ansible or Chef.
Question: Where does configuration management fit into the deployment pipeline?
Preparation: You’ll need to explain where you’ll use it. It’s simple: you’ll use configuration management after you’ve deployed the artifacts to an environment. Artifacts should come with placeholders, and you just need to replace them with the corresponding configuration values.
Question: How does configuration management differ from provisioning infrastructure?
Preparation: There’s a good post from ThoughtWorks on this.
General advice about configuration management questions
If you want to prepare further, there’s a fun talk from Jez Humble about lean configuration management that’s worth watching to get a better perspective.
Interview questions about software development
Even though in a DevOps role you won’t be programming in the same way developers do, you still need to have some development in your background. Why? First, the intention is that you understand how developers work so you can make their lives easier when they request something of the operations folks. Second, you’ll be automating a lot of things, and it’s a good idea to implement some of the practices from software development. So you’ll get these type of questions:
Question: Why is version control so crucial in a DevOps environment?
Preparation: Know that source control will become the only source of truth for everything.
Question: What is trunk-based development? And why is it a recommended practice for continuous integration?
Preparation: You can do a deep dive into this by visiting the site dedicated to the topic.
Question: What are feature flags? What do feature flags enable you to do?
Preparation: Remember that, by using feature flags, you’ll be able to ship uncompleted code and avoid blocking the path for any upcoming working feature or bug fix. Feature flags are why a company can do several deployments per day.
Question: What is your experience in programming languages like Python, Go, or Ruby?
Preparation: Know that most scripts are developed in one of those languages. For example, if you want to extend the use of Chef, it’s easier if you know Ruby.
Question: What is continuous testing? How much effort should the team invest in testing?
Preparation: The answer is “a lot.” It’s critical to depend on a reliable test’s battery. You can read more on it at Continuous Delivery.
Question: What is a container? What is an orchestrator?
Preparation: Even if the company is not using containers yet, it’s vital that you know the concepts. Talk about Docker and Kubernetes, and state the difference between these two.
Knowing what’s involved in creating a modern application will help, and I’d recommend you read the twelve-factor app site.
Interview questions about cloud
Cloud adoption is increasing every year. That’s especially true now that public cloud providers are more enterprise-friendly, letting customers have hybrid environments with on-premise infrastructure. I’ve seen that many companies are looking for people to have working experience with AWS, Azure, or Google. AWS is the most common one, but it also depends on the company you’re applying. These are the types of questions you might get about the cloud:
Question: What is chaos engineering?
Preparation: Not many companies are using it, but it’s useful if you have at least an idea about the topic.
Question: What is immutable infrastructure?
Preparation: You’ll need to explain why it’s better to recreate environments than to fix them. Read more about immutable infrastructure here.
Question: How would you create a cloud-native application?
Preparation: There’s a book dedicated to this topic that you might want to read.
Some companies will ask more complicated questions for a specific cloud provider. You have two options. First, you can pick which cloud provider you know the best and only apply for related positions. Second, you can learn and gain experience in areas you’re new to. You’ll also need to adapt if you see that the market is switching to a cloud provider different than the one you have experience with.
Not all interviews are the same
Of course, there are other topics and questions you might encounter, but these are the most common ones. Interview questions will vary depending on the company to which you’re applying. Consider the size of the company, the technology stack, the culture, and the industry. You’ll always have a chance to find out about these things before the technical interview, so do your homework and be prepared. And remember, not all interviews are the same for everyone—even for the same position in the same company.
As long as you have the DevOps mindset to create a collaborative environment by getting rid of silos or barriers, you’ll be OK. But you need to prove you have that mindset, and prove it technically. Technology will always change, and knowledge becomes obsolete, but you need to show that you learn fast and keep current.
Raygun is hiring. Check out our careers page to see the current vacancies.
I wish you success!