DevOps Interview Questions

DevOps Interview Questions

What is DevOps?
There are many good answers to this question.
Let's see a couple of examples:

According to Amazon:

"DevOps is the combination of cultural philosophies,
practices, and tools that increases an organization’s
ability to deliver applications and services at high
velocity: evolving and improving products at a faster
pace than organizations using traditional software
development and infrastructure management processes.
This speed enables organizations to better serve their
customers and compete more effectively in the market."

You can find more details here:

What are the benefits of DevOps? What it can help us to achieve?
You should mention some or all of the following:

Improved delivery

But be able to explain each of them.

What are anti-patterns of DevOps?
* Avoding collaboration
* Creating new manual processes
* Not examining the quality of existing processes
  and avoiding creating metrics

What is Continuous Integration?

A development practice where developers integrate code
into a shared repository frequently. It can range from
a couple of changes every day or a week to a couple of 
changes in one hour in larger scales.

Each piece of code (change/patch) is verified, to make 
the change is safe to merge. Today, it's a common practice
to test the change using an automated build that makes sure 
the code can integrated.

It can be one build which runs several tests in different
levels (unit, functional, etc.) or several separate builds
that all or some has to pass in order for the change to
be merged into the repository.

What is Continuous Deployment?

What is Continuous Delivery?

What CI/CD best practices are you familiar with? Or what do you consider as CI/CD best practice?

What systems and/or tools are you using for the following?: * CI/CD * Provisioning infrastructure * Configuration Management * Monitoring & alerting - Prometheus, DataDog, Sensu, Grafana * Logging - ELK (Elastic Search, Logstash, Kibana), EFK (Elastic Search, Fluentd, Kibana) * Code review * Code coverage * Tests
  * CI/CD - Jenkins, Circle CI, Travis
  * Provisioning infrastructure - Terraform, CloudFormation
  * Configuration Management - Ansible, Puppet, Chef
  * Monitoring & alerting - Prometheus, Nagios
  * Logging - Logstash, Graylog, Fluentd
  * Code review - Gerrit, Review Board
  * Code coverage - Cobertura, Clover, JaCoCo
  * Tests - Robot, Serenity, Gauge

What are you taking into consideration when choosing a tool/technology?
In your answer you can mention one or more of the following:
  * mature vs. cutting edge
  * community size
  * architecture aspects - agent vs. agentless, master vs. masterless, etc.

Explain mutable vs. immutable infrastructure

In mutable infrastructure paradigm, changes are applied on top of the existing infrastructure and over time
the infrastructure builds up a history of changes. Ansible, Puppet and Chef are examples to tools which
follow mutable infrastructure paradigm.

In immutable infrastructure paradigm, every change is actually new infrastructure. So a change
to a server will result in a new server instead of updating it. Terraform is an example of technology
which follows the immutable infrastructure paradigm.

What ways are you familiar with to deliver a software? What are the advantages and disadvantages of each method?
  * Archive - collect all your app files into one archive (e.g. tar) and deliver it to the user.
  * Package - depends on the OS, you can use your OS package format (e.g. in RHEL/Fefodra it's RPM) to deliver your software with a way to install, uninstall and update it using the standard packager commands
  * Images - Either VM or container images where your package is included with everything it needs in order to run successfully.

What is caching? How it works? Why is it important?

Explain stateless vs. stateful
Stateless applications don't store any data in the host which makes it ideal for horizontal scaling and microservices.
Stateful applications depend on the storage to save state and data, typically databases are stateful applications.

What is HTTP and how it works?

Describe the workflow of setting up some type of web server (Apache, IIS, Tomact, ...)


Explain "Open Source"


Compare SRE to DevOps

What SRE team is responsible for?

One can argue whether it's per company definition or a global one but at least according to a large companies, like Google for example, the SRE team is responsible for availability, latency, performance, efficiency, change management, monitoring, emergency response, and capacity planning of their services


What is an error budget?

What are MTTF (mean time to failure) and MTTR (mean time to repair)? What these metrics help us to evaluate?

What is a post-mortem meeting? Why is it important?

What is "infrastructure as code"? What implementation of IAC are you familiar with?


Tell me how you perform plan capacity for your CI/CD resources (e.g. servers, storage, etc.)

How would you structure/implement CD for an application which depends on several other applications?

How do you measure your CI/CD quality? Are there any metrics you are using for measuring the quality?

What is a configuration drift? What problems is it causing?
Configuration drift happens when in an environment of servers with the exact same configuration and software, a certain server
or servers are being applied with updates or configuration which other servers don't get and over time these servers become
slightly different than all others.

This situation might lead to bugs which hard to identify and reproduce.

How to deal with a configuration drift?

Do you have experience with testing cross-projects changes? (aka cross-dependency)
Note: cross-dependency is when you have two or more changes to separate projects and you would like to test them in mutual build instead of testing each change separately.

Have you contributed to an open source project? Tell me about this experience

When you publish a project, you usually publish it with a license. What types of licenses are you familiar with and which one do you prefer to use?