1. What is the need for DevOps?
According to me, this answer should start by explaining the general market trend. Instead of releasing big sets of features, companies are trying to see if small features can be transported to their customers through a series of release trains. This has many advantages like quick feedback from customers, better quality of software etc. which in turn leads to high customer satisfaction. To achieve this, companies are required to:
According to me, this answer should start by explaining the general market trend. Instead of releasing big sets of features, companies are trying to see if small features can be transported to their customers through a series of release trains. This has many advantages like quick feedback from customers, better quality of software etc. which in turn leads to high customer satisfaction. To achieve this, companies are required to:
- Increase deployment frequency
- Lower failure rate of new
releases
- Shortened lead time between
fixes
- Faster mean time to recovery in the event of new
release crashing
DevOps fulfills all these requirements and
helps in achieving seamless software delivery. You can give examples of
companies like Etsy, Google and Amazon which have adopted DevOps to achieve
levels of performance that were unthinkable even five years ago. They are doing
tens, hundreds or even thousands of code deployments per day while delivering
world class stability, reliability and security.
If I have to test your knowledge on DevOps,
you should know the difference between Agile and DevOps. The next question is
directed towards that.
Q2. How is DevOps different from Agile / SDLC?
I would advise you to go with the below
explanation:
Agile is a set of values and principles about
how to produce i.e. develop software. Example: if you have some ideas and you want
to turn those ideas into working software, you can use the Agile values and
principles as a way to do that. But, that software might only be working on a
developer’s laptop or in a test environment. You want a way to quickly, easily
and repeatably move that software into production infrastructure, in a safe and
simple way. To do that you need DevOps tools and techniques.
You can summarize by saying Agile software
development methodology focuses on the development of software but DevOps on
the other hand is responsible for development as well as deployment of the
software in the safest and most reliable way possible. Here’s a blog that will
give you more information on the evolution of DevOps.
Now remember, you have included DevOps tools
in your previous answer so be prepared to answer some questions related to
that.
Q3. Which are the top DevOps tools? Which
tools have you worked on?
The most popular DevOps tools are mentioned
below:
- Git : Version Control System
tool
- Jenkins : Continuous
Integration tool
- Selenium : Continuous Testing
tool
- Puppet, Chef, Ansible :
Configuration Management and Deployment tools
- Nagios : Continuous Monitoring
tool
- Docker : Containerization tool
You can also mention any other tool if you
want, but make sure you include the above tools in your answer.
The second part of the answer has two
possibilities:
- If you have experience with all
the above tools then you can say that I have worked on all these tools for
developing good quality software and deploying those softwares easily,
frequently, and reliably.
- If you have experience only with some of the above tools
then mention those tools and say that I have specialization in these tools
and have an overview about the rest of the tools.
4. What are the advantages of DevOps?
For this answer, you can use your past
experience and explain how DevOps helped you in your previous job. If you don’t
have any such experience, then you can mention the below advantages.
Technical benefits:
- Continuous software delivery
- Less complex problems to fix
- Faster resolution of problems
Business benefits:
- Faster delivery of features
- More stable operating
environments
- More time available to add value (rather than
fix/maintain)
5. What is the most important thing DevOps
helps us achieve?
According to me, the most important thing that
DevOps helps us achieve is to get the changes into production as quickly as
possible while minimizing risks in software quality assurance and compliance.
This is the primary objective of DevOps. Learn more in this DevOps tutorial blog.
However, you can add many other positive
effects of DevOps. For example, clearer communication and better working
relationships between teams i.e. both the Ops team and Dev team collaborate
together to deliver good quality software which in turn leads to higher
customer satisfaction.
6. Explain with a use case where DevOps can
be used in industry/ real-life.
There are many industries that are using
DevOps so you can mention any of those use cases, you can also refer the below
example:
Etsy is a peer-to-peer e-commerce website
focused on handmade or vintage items and supplies, as well as unique
factory-manufactured items. Etsy struggled with slow, painful site updates that
frequently caused the site to go down. It affected sales for millions of Etsy’s
users who sold goods through online market place and risked driving them to the
competitor.
With the help of a new technical management
team, Etsy transitioned from its waterfall model, which produced four-hour
full-site deployments twice weekly, to a more agile approach. Today, it has a
fully automated deployment pipeline, and its continuous delivery practices have
reportedly resulted in more than 50 deployments a day with fewer disruptions.
7. Explain your understanding and expertise
on both the software development side and the technical operations side of an
organization you have worked with in the past.
For this answer, share your past experience
and try to explain how flexible you were in your previous job. You can refer
the below example:
DevOps engineers almost always work in a 24/7
business-critical online environment. I was adaptable to on-call duties and was
available to take up real-time, live-system responsibility. I successfully
automated processes to support continuous software deployments. I have
experience with public/private clouds, tools like Chef or Puppet, scripting and
automation with tools like Python and PHP, and a background in Agile.
8. What are the anti-patterns of DevOps?
A pattern is common usage usually followed. If
a pattern commonly adopted by others does not work for your organization and
you continue to blindly follow it, you are essentially adopting an
anti-pattern. There are myths about DevOps. Some of them include:
- DevOps is a process
- Agile equals DevOps?
- We need a separate DevOps group
- Devops will solve all our
problems
- DevOps means Developers
Managing Production
- DevOps is Development-driven
release management
- DevOps is not development
driven.
- DevOps is not IT Operations
driven.
- We can’t do DevOps – We’re Unique
- We can’t do DevOps – We’ve got the wrong people
9. What is Version control?
This is probably the easiest question you will
face in the interview. My suggestion is to first give a definition of Version
control. It is a system that records changes to a file or set of files over
time so that you can recall specific versions later. Version control systems
consist of a central shared repository where teammates can commit changes to a
file or set of file. Then you can mention the uses of version control.
Version control allows you to:
- Revert files back to a previous
state.
- Revert the entire project back
to a previous state.
- Compare changes over time.
- See who last modified something
that might be causing a problem.
- Who introduced an issue and when.
10. What are the
benefits of using version control?
I will suggest you to include the following
advantages of version control:
- With Version Control System
(VCS), all the team members are allowed to work freely on any file at any
time. VCS will later allow you to merge all the changes into a common
version.
- All the past versions and variants
are neatly packed up inside the VCS. When you need it, you can request any
version at any time and you’ll have a snapshot of the complete project
right at hand.
- Every time you save a new
version of your project, your VCS requires you to provide a short
description of what was changed. Additionally, you can see what exactly
was changed in the file’s content. This allows you to know who has made
what change in the project.
- A distributed VCS like Git allows all the team members
to have complete history of the project so if there is a breakdown in the
central server you can use any of your teammate’s local Git repository.
11. Describe branching strategies you have
used.
This question is asked to test your branching
experience so tell them about how you have used branching in your previous job
and what purpose does it serves, you can refer the below points:
- Feature branching
- A feature branch model keeps
all of the changes for a particular feature inside of a branch. When the
feature is fully tested and validated by automated tests, the branch is
then merged into master.
- Task branching
- In this model each task is
implemented on its own branch with the task key included in the branch
name. It is easy to see which code implements which task, just look for
the task key in the branch name.
- Release branching
- Once the develop branch has acquired enough features
for a release, you can clone that branch to form a Release branch.
Creating this branch starts the next release cycle, so no new features can
be added after this point, only bug fixes, documentation generation, and
other release-oriented tasks should go in this branch. Once it is ready to
ship, the release gets merged into master and tagged with a version
number. In addition, it should be merged back into develop branch, which
may have progressed since the release was initiated.
In the end tell them that branching strategies
varies from one organization to another, so I know basic branching operations
like delete, merge, checking out a branch etc.
12. Which VCS tool you are comfortable with?
You can just mention the VCS tool that you
have worked on like this: “I have worked on Git and one major advantage it has
over other VCS tools like SVN is that it is a distributed version control
system.”
Distributed VCS tools do not necessarily rely
on a central server to store all the versions of a project’s files. Instead,
every developer “clones” a copy of a repository and has the full history of the
project on their own hard drive.
13. In Git how do you revert a commit that has
already been pushed and made public?
There can be two answers to this question so
make sure that you include both because any of the below options can be used
depending on the situation:
- Remove or fix the bad file in a
new commit and push it to the remote repository. This is the most natural
way to fix an error. Once you have made necessary changes to the file,
commit it to the remote repository for that I will use
- git commit -m “commit message”
- Create a new commit that undoes
all changes that were made in the bad commit.to do this I will use a
command
- git revert <name of bad commit>
14. How do you squash last N commits into a
single commit?
There are two options to squash last N commits
into a single commit. Include both of the below mentioned options in your
answer:
- If you want to write the new
commit message from scratch use the following command
- git reset –soft HEAD~N
&&
- git commit
- If you want to start editing
the new commit message with a concatenation of the existing commit
messages then you need to extract those messages and pass them to Git
commit for that I will use
- git reset –soft HEAD~N
&&
- git commit –edit -m”$(git log –format=%B –reverse
.HEAD@{N})”
15. What is Git bisect? How can you use it to
determine the source of a (regression) bug?
I will suggest you to first give a small
definition of Git bisect, Git bisect is used to find the commit that introduced
a bug by using binary search. Command for Git bisect is
git bisect <subcommand> <options>
Now since you have mentioned the command
above, explain what this command will do, This command uses a binary search
algorithm to find which commit in your project’s history introduced a bug. You
use it by first telling it a “bad” commit that is known to contain the bug, and
a “good” commit that is known to be before the bug was introduced. Then Git
bisect picks a commit between those two endpoints and asks you whether the
selected commit is “good” or “bad”. It continues narrowing down the range until
it finds the exact commit that introduced the change.
Thanks a lot for sharing this blog. This interview questions are really helpful to me. I have bookmarked this page for my future reference.
ReplyDeleteBest devOps Training in Chennai | DevOps Training in Chennai | DevOps certification
The article is so informative. This is more helpful.
ReplyDeleteThanks for sharing.
DevOps Training | Certification in Chennai | DevOps Training | Certification in anna nagar | DevOps Training | Certification in omr | DevOps Training | Certification in porur | DevOps Training | Certification in tambaram | DevOps Training | Certification in velachery
game development services one stop solution for all your digital needs We understand the expectations of the businesses of today, thus providing efficient and reliable services that involve the latest trends in technology is our priority. Get Started Brands we work with Previous Next Our Expertise Website Design Your business’ website is the backbone of its internet-based presence.
ReplyDelete