DevOps Interview Questions

DevOps Interview Questions


Question
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:
https://aws.amazon.com/devops/what-is-devops
                    


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

Collaboration
Improved delivery
Security
Speed
Scale
Reliability

But be able to explain each of them.
                    


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


Question
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.
  


Question
What is Continuous Deployment?
                    

Question
What is Continuous Delivery?
                    

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

Question
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
                    

Question
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.
                    

Question
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.
  

Question
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.
                    

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

Question
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.
                    

Question
What is HTTP and how it works?
                    

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

   

Question
Explain "Open Source"
                    

SRE

Question
Compare SRE to DevOps
                    

Question
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

   

Question
What is an error budget?
                    

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

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

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

Advanced

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

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

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

Question
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.
                    

Question
How to deal with a configuration drift?
                    

Question
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.
                    

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


Question
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?