Top 100
Top 100
Your answer must be simple and straightforward. Begin by explaining the growing
importance of DevOps in the IT industry. Discuss how such an approach aims to
synergize the efforts of the development and operations teams to accelerate the
delivery of software products, with a minimal failure rate. Include how DevOps is a
value-added practice, where development and operations engineers join hands
throughout the product or service lifecycle, right from the design stage to the point of
deployment.
DevOps is a culture that allows the development and the operations team to work
together. This results in continuous development, testing, integration, deployment, and
monitoring of the software throughout the lifecycle.
Agile is a software development methodology that focuses on iterative, incremental,
small, and rapid releases of software, along with customer feedback. It addresses gaps
and conflicts between the customer and developers.
DevOps addresses gaps and conflicts between the Developers and IT Operations.
1. Selenium
2. Puppet
3. Chef
4. Git
5. Jenkins
6. Ansible
7. Docker
4. What are the different phases in DevOps?
Plan - Initially, there should be a plan for the type of application that needs to be
developed. Getting a rough picture of the development process is always a good
idea.
Build - Build the application by integrating various codes formed in the previous
steps.
Test - This is the most crucial step of the application development. Test the
application and rebuild, if necessary.
Integrate - Multiple codes from different programmers are integrated into one.
Deploy - Code is deployed into a cloud environment for further usage. It is ensured
that any new changes do not affect the functioning of a high traffic website.
Monitor - Application performance is monitored. Changes are made to meet the end-
user requirements.
Business benefits
Stage 1
An assessment of the existing process and implementation for about two to three weeks
to identify areas of improvement so that the team can create a road map for the
implementation.
Stage 2
Create a proof of concept (PoC). Once it is accepted and approved, the team can start
on the actual implementation and roll-out of the project plan.
Stage 3
By following the proper steps for version control, integration, testing, deployment,
delivery, and monitoring, the project is now ready for DevOps implementation.
7. What is the difference between continuous delivery and continuous
deployment?
9. How does continuous monitoring help you maintain the entire architecture
of the system?
Ensures that all services, applications, and resources are running on the servers
properly.
Monitors the status of servers and determines if applications are working correctly or
not.
Flexible services - Provides ready-to-use, flexible services without the need to install
or set up the software.
Built for scale - You can manage a single instance or scale to thousands using AWS
services.
Automation - AWS lets you automate tasks and processes, giving you more time to
innovate
Secure - Using AWS Identity and Access Management (IAM), you can set user
permissions and policies.
Meantime to failure recovery - This is the average time taken to recover from a
failure.
Managing data centers with machine-readable definition files, rather than physical
hardware configuration.
Ensuring all your servers and other infrastructure components are provisioned
consistently and effortlessly.
Start by talking about the age-old mechanisms of writing commands onto script files and
testing them in a separate environment before deployment and how this approach is
being replaced by IaC. Similar to the codes written for other services, with the help of
AWS, IaC allows developers to write, test, and maintain infrastructure entities in a
descriptive manner, using formats such as JSON or YAML. This enables easier
development and faster deployment of infrastructure changes.
14. Why Has DevOps Gained Prominence over the Last Few Years?
Before talking about the growing popularity of DevOps, discuss the current industry
scenario. Begin with some examples of how big players such as Netflix and
Facebook are investing in DevOps to automate and accelerate application deployment
and how this has helped them grow their business. Using Facebook as an example, you
would point to Facebook’s continuous deployment and code ownership models and how
these have helped it scale up but ensure the quality of experience at the same time.
Hundreds of lines of code are implemented without affecting quality, stability, and
security.
Your next use case should be Netflix. This streaming and on-demand video company
follow similar practices with fully automated processes and systems. Mention the user
base of these two organizations: Facebook has 2 billion users while Netflix streams
online content to more than 100 million users worldwide.
These are great examples of how DevOps can help organizations to ensure higher
success rates for releases, reduce the lead time between bug fixes, streamline and
continuous delivery through automation, and an overall reduction in manpower costs.
We will now look into the next set of DevOps Interview Questions that includes - Git,
Selenium, Jenkins.
15. What are the fundamental differences between DevOps & Agile?
The main differences between Agile and DevOps are summarized below:
Development
Release cycles are smaller, along
Sprints or Release Release cycles are usually smaller.
with immediate feedback.
cycles
Patterns are common practices that are usually followed by organizations. An anti-
pattern is formed when an organization continues to blindly follow a pattern adopted by
others but does not work for them. Some of the myths about DevOps include:
Cannot perform DevOps → Have the wrong people
DevOps == Process
DevOps == Agile
All team members are free to work on any file at any time with the Version Control
System (VCS). Later on, VCS will allow the team to integrate all of the modifications
into a single version.
The VCS asks to provide a brief summary of what was changed every time we save
a new version of the project. We also get to examine exactly what was modified in
the content of the file. As a result, we will be able to see who made what changes to
the project.
Inside the VCS, all the previous variants and versions are properly stored. We will be
able to request any version at any moment, and we will be able to retrieve a
snapshot of the entire project at our fingertips.
A VCS that is distributed, such as Git, lets all the team members retrieve a complete
history of the project. This allows developers or other stakeholders to use the local
Git repositories of any of the teammates even if the main server goes down at any
point in time.
To test our knowledge of the purpose of branching and our experience of branching at a
past job, this question is usually asked.
Release branching - We can clone the develop branch to create a Release branch
once it has enough functionality for a release. This branch kicks off the next release
cycle, thus no new features can be contributed beyond this point. The things that can
be contributed are documentation generation, bug fixing, and other release-related
tasks. The release is merged into master and given a version number once it is ready
to ship. It should also be merged back into the development branch, which may have
evolved since the initial release.
Feature branching - This branching model maintains all modifications for a specific
feature contained within a branch. The branch gets merged into master once the
feature has been completely tested and approved by using tests that are automated.
Task branching - In this branching model, every task is implemented in its respective
branch. The task key is mentioned in the branch name. We need to simply look at the
task key in the branch name to discover which code implements which task.
19. Can you explain the “Shift left to reduce failure” concept in DevOps?
Shift left is a DevOps idea for improving security, performance, and other factors. Let us
take an example: if we look at all of the processes in DevOps, we can state that security
is tested prior to the deployment step. We can add security in the development phase,
which is on the left, by employing the left shift method. [will be depicted in a diagram]
We can integrate with all phases, including before development and during testing, not
just development. This most likely raises the security level by detecting faults at an early
stage.
The new version exists in a green environment and the old version exists in a blue
environment. After making changes to the previous version, we need a new instance
from the old one to execute a newer version of the instance.
Continuous Testing constitutes the running of automated tests as part of the software
delivery pipeline to provide instant feedback on the business risks present in the most
recent release. In order to prevent problems in step-switching in the Software delivery
life-cycle and to allow Development teams to receive immediate feedback, every build is
continually tested in this manner. This results in significant increase in speed in a
developer's productivity as it eliminates the requirement for re-running all the tests after
each update and project re-building.
22. What is Automation Testing?
Developers are obliged to commit all source code changes to a shared DevOps
repository.
Every time a change is made in the code, Jenkins-like Continuous Integration tools will
grab it from this common repository and deploy it for Continuous Testing, which is done
by tools like Selenium.
Any modification to the code may be tested immediately with Continuous Testing. This
prevents concerns like quality issues and release delays that might occur whenever big-
bang testing is delayed until the end of the cycle. In this way, Continuous Testing allows
for high-quality and more frequent releases.
Advanced Analysis - In order to avoid problems from occurring in the first place and
to achieve more within each iteration, it employs automation in areas like scope
assessment/prioritization, changes effect analysis, and static code analysis.
Policy Analysis - It guarantees that all processes are in line with the organization's
changing business needs and that all compliance requirements are met.
Risk Assessment - Test coverage optimization, technical debt, risk mitigation duties,
and quality evaluation are all covered to guarantee the build is ready to move on to
the next stage.
If the central server crashes, all data from the project will be lost
Distributed Control System
Every developer has a copy of all versions of the code on their systems
Enables team members to work offline and does not rely on a single location for
backups
28. What is the git command that downloads any repository from GitHub to
your computer?
The git command that downloads any repository from GitHub to your computer is git
clone.
29. How do you push a file from your local system to the GitHub repository
using Git?
git init
It does not contain any working or checked out a copy of source files
Bare repositories store git revision history in the root folder of your repository, instead
of the .git subfolder
31. Which of the following CLI commands can be used to rename files?
1. git rm
2. git mv
3. git rm -r
32. What is the process for reverting a commit that has already been pushed
and made public?
1. Remove or fix the bad file in a new commit and push it to the remote repository. Then
commit it to the remote repository using:
33. Explain the difference between git fetch and git pull.
Users can run a Git fetch at any time to update the remote- Tries to merge remote changes with
tracking branches your local ones
A developer working with a current branch wants to switch to another branch to work on
something else, but the developer doesn't want to commit changes to your unfinished
work. The solution to this issue is Git stash. Git stash takes your modified tracked files
and saves them on a stack of unfinished changes that you can reapply at any time.
35. Explain the concept of branching in Git.
Suppose you are working on an application, and you want to add a new feature to the
app. You can create a new branch and build the new feature on that branch.
The circles on the branch represent various commits made on the branch
After you are done with all the changes, you can merge it with the master branch
36. What is the difference between Git Merge and Git Rebase?
Suppose you are working on a new feature in a dedicated branch, and another team
member updates the master branch with new commits. You can use these two
functions:
Git Merge
To incorporate the new commits into your feature branch, use Git merge.
Creates an extra merge commit every time you need to incorporate changes
Git Rebase
It creates new commits for every commit in the original branch and rewrites project
history
37. How do you find a list of files that have been changed in a particular
commit?
The command to get a list of files that have been changed in a particular commit is:
commit hash will list all the files that were changed or added in that commit
A Git merge conflict happens when you have merge branches with competing for
commits, and Git needs your help to decide which changes to incorporate in the final
merge.
Manually edit the conflicted file to select the changes that you want to keep in the final
merge.
This is done when a merge conflict is caused after competing for line changes. For
example, this may occur when people make different changes to the same line of the
same file on different branches in your Git repository.
Decide if you only want to keep your branch's changes, the other branch's changes,
or make a brand new change, which may incorporate changes from both branches.
Delete the conflict markers <<<<<<<, =======, >>>>>>> and make changes you
want in the final merge.
If you have more than one merge conflict in your file, scroll down to the next set of
conflict markers and repeat steps four and five to resolve your merge conflict.
Once you have resolved all the conflicts in the file, click Mark as resolved.
If you have more than one file with a conflict, select the next file you want to edit on
the left side of the page under "conflicting files" and repeat steps four to seven until
you've resolved all of your pull request's merge conflicts.
Once you've resolved your merge conflicts, click Commit merge. This merges the
entire base branch into your head branch.
Navigate into the local Git repository that contains the merge conflict.
Generate a list of the files that the merge conflict affects. In this example, the file
styleguide.md has a merge conflict.
Open any text editor, such as Sublime Text or Atom, and navigate to the file that has
merge conflicts.
To see the beginning of the merge conflict in your file, search the file for the conflict
marker "<<<<<<<. " Open it, and you'll see the changes from the base branch after
the line "<<<<<<< HEAD."
Next, you'll see "=======", which divides your changes from the changes in the
other branch, followed by ">>>>>>> BRANCH-NAME".
Decide if you only want to keep your branch's changes, the other branch's changes,
or make a brand new change, which may incorporate changes from both branches.
Delete the conflict markers "<<<<<<<", "=======", ">>>>>>>" and make the
changes you want in the final merge.
In this example, both the changes are incorporated into the final merge:
Now you can merge the branches on the command line, or push your changes to your
remote repository on GitHub and merge your changes in a pull request.
39. What is Git bisect? How can you use it to determine the source of a
(regression) bug?
Git bisect is a tool that uses binary search to locate the commit that triggered a bug.
The git bisect command is used in finding the bug performing commit in the project by
using a binary search algorithm.
The bug occurring commit is called the “bad” commit, and the commit before the bug
occurring one is called the “good” commit. We convey the same to the git bisect tool,
and it picks a random commit between the two endpoints and prompts whether that one
is the “good” or “bad” one. The process continues uptil the range is narrowed down and
the exact commit that introduced the exact change is discovered.
Some of the Basic Git Commands are summarized in the below table -
Command Purpose
git config -
This helps to set the username and
email to whom the commits belong
git config –global user.name “[name]”
to.
git config –global user.email “[email address]”
git add -
Used to add one or more files to the
git add <file names separated by commas> staging area.
git add .
git commit -
Creates a snapshot or records of the
git commit -a file(s) that are in the staging area.
git branch -d [branch name] The last one lists out all the
git branch branches available and also
highlights the branch we are in
currently.
Jenkins master pulls the code from the remote GitHub repository every time there is
a code commit.
Jenkinsfile contains the definition of a Jenkins pipeline and is checked into the source
control repository. It is a text file.
There is a single source of truth for the pipeline, which can be viewed and edited.
43. Which of the following commands runs Jenkins from the command line?
Pipeline: User-defined model of a CD pipeline. The pipeline's code defines the entire
build process, which includes building, testing and delivering an application
Node: A machine that is part of the Jenkins environment and capable of executing a
pipeline
Step: A single task that tells Jenkins what to do at a particular point in time
Stage: Defines a conceptually distinct subset of tasks performed through the entire
pipeline (build, test, deploy stages)
1. build.xml
2. pom.xml
3. dependency.xml
4. Version.xml
46. Explain the two types of pipeline in Jenkins, along with their syntax.
Jenkins provides two ways of developing a pipeline code: Scripted and Declarative.
Syntax:
Syntax:
48. How can you copy Jenkins from one server to another?
Move the job from one Jenkins installation to another by copying the corresponding
job directory.
Create a copy of an existing job by making a clone of a job directory with a different
name.
Jenkins can use the Lightweight Directory Access Protocol (LDAP) server to
authenticate users.
51. How can you temporarily turn off Jenkins security if the administrative
users have locked themselves out of the admin console?
By changing this setting to false, security will be disabled the next time Jenkins is
restarted.
52. What are the ways in which a build can be scheduled/run in Jenkins?
53. What are the commands that you can use to restart Jenkins manually?
To create a Jenkins Job, we go to the top page of Jenkins, choose the New Job option
and then select Build a free-style software project.
Optional steps for gathering data from the build, like collecting javadoc, testing
results and/or archiving artifacts.
A build script (ant, maven, shell script, batch file, etc.) that actually does the work.
Testing framework for a developer to write code in any programming language (Java,
PHP, Perl, C#, etc.).
Selenium WebDriver
Selenium Grid
Works with Selenium RC and runs tests on different nodes using browsers.
Exceptions are events that occur during the execution of a program and disrupt the
normal flow of a program's instructions. Selenium has the following exceptions:
Functional - This is a type of black-box testing in which the test cases are based on the
software specification.
Regression - This testing helps to find new errors, regressions, etc. in different
functional and non-functional areas of code after the alteration.
Load Testing - This testing seeks to monitor the response of a device after putting a
load on it. It is carried out to study the behavior of the system under certain conditions.
Get command is used to retrieve the text of a specified web element. The command
does not return any parameter but returns a string value.
Used for:
Verification of messages
Labels
Syntax:
String Text=driver.findElement(By.id(“text”)).getText();
60. How can you handle keyboard and mouse actions using Selenium?
You can handle keyboard and mouse events with the advanced user interaction API.
The advanced user interactions API contains actions and action classes.
Method Description
1. getText()
2. size()
3. getTagName()
4. sendKeys()
A. findElement()
It finds the first element in the current web page that matches the specified locator
value.
Syntax:
WebElement element=driver.findElements(By.xpath(“//div[@id=‘example’]//ul//li”));
B. findElements()
It finds all the elements in the current web page that matches the specified locator
value.
Syntax:
List elementList=driver.findElements(By.xpath(“//div[@id=‘example’]//ul//li”));
These are two different methods used to close the browser session in Selenium
WebDriver:
driver.close() - This is used to close the current browser window on which the focus
is set. In this case, there is only one browser open.
driver.quit() - It closes all the browser windows and ends the WebDriver session
using the driver.dispose method.
The following lines of code will let you submit a form using Selenium:
WebElement el = driver.findElement(By.id(“ElementID”));
el.submit();
There are two types of testing that are primarily supported by Selenium:
Functional Testing - Individual testing of software functional points or features.
Regression Testing - Wherever a bug is fixed, a product is retested and this is called
Regression Testing.
Selenium IDE is the best environment for building Selenium tests, regardless of the
style of testing we prefer, thanks to the ability to move instructions around rapidly and
the autocomplete support.
66. What is the difference between Assert and Verify commands in Selenium?
The verify commands determine whether or not the provided condition is true. The
program execution does not halt regardless of whether the condition is true or not,
i.e., all test steps will be completed, and verification failure will not stop the execution.
SSL certificates are used between the Chef server and the client to ensure that each
node has access to the right data.
Every node has a private and public key pair. The public key is stored at the Chef
server.
When an SSL certificate is sent to the server, it will contain the private key of the
node.
The server compares this against the public key in order to identify the node and give
the node access to the required data.
70. Which of the following commands would you use to stop or disable the
'httpd' service when the system boots?
Test Kitchen is a command-line tool in Chef that spins up an instance and tests the
cookbook on it before deploying it on the actual nodes.
chef-apply applies the recipe mentioned in the command on the client system.
$ chef-apply recipe_name.rb
chef-client applies all the cookbooks in your server's run list to the client system.
$ knife chef-client
Example:
Example:
Example:
Example:
74. Which open source or community tools do you use to make Puppet more
powerful?
Changes in the configuration are tracked using Jira, and further maintenance is done
through internal procedures.
Version control takes the support of Git and Puppet's code manager app.
The changes are also passed through Jenkin's continuous integration pipeline.
These are the features of a node, like their software packages or services.
A resource declaration, written in a catalog, describes the action to be performed on
or with the resource.
When the catalog is executed, it sets the node to the desired state.
Classes are named blocks in your manifest that configure various functionalities of the
node, such as services, files, and packages.
The classes are added to a node's catalog and are executed only when explicitly
invoked.
package{
Always use {{}} for variables, unless you have a conditional statement, such as "when:
…". This is because conditional statements are run through Jinja, which resolves the
expressions.
For example:
Using brackets makes it simpler to distinguish between strings and undefined variables.
This also ensures that Ansible doesn't recognize the line as a dictionary declaration.
Roles are used to managing tasks in a playbook. They can be easily shared via
Ansible Galaxy.
Ansible Puppet
Docker Client is a service that runs a command. The command is translated using
the REST API and is sent to the Docker Daemon (server).
Docker Daemon accepts the request and interacts with the operating system to build
Docker images and run Docker containers.
Docker registry is a service to host and distribute Docker images among users.
82. What are the advantages of Docker over virtual machines?
Memory
Occupies a lot of memory space Docker containers occupy less space
space
Docker Swarm is a tool that allows IT administrators and developers to create and
manage a cluster of swarm nodes within the Docker platform.
A swarm consists of two types of nodes: a manager node and a worker node.
Once you've created a swarm on your manager node, you can add worker nodes to
your swarm.
Here, each container runs in isolation but can interact with each other.
A Dockerfile is used for creating Docker images using the build command.
With a Docker image, any user can run the code to create Docker containers.
87. Explain the differences between Docker images and Docker containers.
88. Instead of YAML, what can you use as an alternate file for building Docker
compose?
To build a Docker compose, a user can use a JSON file instead of YAML. In case a
user wants to use a JSON file, he/she should specify the filename as given:
Docker-compose -f Docker-compose.json up
A user can either build a Docker image or pull an existing Docker image (like MySQL)
from Docker Hub.
Now, Docker creates a new container MySQL from the existing Docker image.
Simultaneously, the container layer of the read-write filesystem is also created on top of
the image layer.
Registry Repository
The following are the cloud platforms that Docker runs on:
Rackspace
92. What is the purpose of the expose and publish commands in Docker?
Expose
Publish
Now, let's have a look at the DevOps interview questions for continuous monitoring.
DevOps Interview Questions for Continuous Monitoring
Nagios enables server monitoring and the ability to check if they are sufficiently utilized
or if any task failures need to be addressed.
Checks if applications are working correctly and web servers are reachable
95. What do you mean by Nagios Remote Plugin Executor (NPRE) of Nagios?
Nagios Remote Plugin Executor (NPRE) enables you to execute Nagios plugins on
Linux/Unix machines. You can monitor remote machine metrics (disk usage, CPU load,
etc.)
Actively
Passively
Active Checks:
Nagios will execute a plugin and pass the information on what needs to be checked.
The plugin will then check the operational state of the host or service, and report
results back to the Nagios daemon.
It will process the results of the host or service check and send notifications.
Passive Checks:
Nagios reads the external command file and places the results of all passive checks
into a queue for later processing.
Nagios may send out notifications, log alerts, etc. depending on the check result
information.
Are you skilled enough for your next role as a DevOps Engineer? Well try answering
these DevOps Practice Test Questions and find out yourself.
99. Explain the main configuration file and its location in Nagios.
The main configuration file consists of several directives that affect how Nagios
operates. The Nagios process and the CGIs read the config file.
A sample main configuration file will be placed into your settings directory:
/usr/local/Nagios/etc/resource.cfg
It provides an in-depth look at all network traffic sources and security threats.
It allows system admins to gather high-level information on the health of the network.
101. What are the benefits of HTTP and SSL certificate monitoring with
Nagios?
Nagios can run on different virtualization platforms, like VMware, Microsoft Visual PC,
Xen, Amazon EC2, etc.
CPU Usage
Memory
Networking
VM status
103. Name the three variables that affect recursion and inheritance in Nagios.
name - Template name that can be referenced in other object definitions so it can inherit
the object's properties/variables.
use - Here, you specify the name of the template object that you
want to inherit properties/variables from.
define someobjecttype{
object-specific variables ….
name template_name
use name_of_template
register [0/1]
Using the object configuration format, you can create object definitions that inherit
properties from other object definitions. Hence, Nagios is known as object-oriented.
Types of Objects:
Services
Hosts
Commands
Time Periods
When stalking is enabled for a particular host or service, Nagios will watch that host
or service very carefully.
Next Steps
There you go, these are some of the most common DevOps interview questions that
you might come across while attending an interview. As a DevOps Engineer, in-depth
knowledge of processes, tools, and relevant technology is essential and these DevOps
interview questions and answers will help you get some knowledge about some of these
aspects. In addition, you must also have a holistic understanding of the products,
services, and systems in place.
As you can see, there is a lot to learn to be able to land a rewarding job in the field of
DevOps—Git, Jenkins, Selenium, Chef, Puppet, Ansible, Docker, Nagios, and more.
While this comprehensive DevOps interview question guide is designed to help you ace
your next interview, you would undoubtedly perform better if you enroll in our
comprehensive DevOps Engineer Training Course today. You can even check out
our Post Graduate Program in DevOps designed in collaboration with Caltech CTME
that enables you to prepare for a DevOps career.