Here is a list of handpicked technical interview questions with progressive difficulty, for screening DevOps candidates. They cover all fundamental skills of a DevOps Engineer. Each question is annotated with the difficulty level, its purpose and the expectations for the answer.
I have used the questions in the past interviews with considerable success. Feel free to use my collection to build your own custom list of interview questions, by following this guide. Do adjust the number of questions for each category. E.g. if your organization is looking for someone to perform Linux system administration regularly, be sure to find more Linux questions.
- When Bob runs a command, it says “command not found”. However the command has been installed properly on the system. How do you resolve the error?
- (continuation) Which configuration file will you make the change in and why?
- This progressive question is about Linux shell and PATH environment variable.
- 1st Q: expect the candidate to explain the function of PATH environment variable and how to append a new path to it.
- 2nd Q: Expect the candidate to explain the differences among the different configuration files: ~/.bashrc, ~/.profile, ~/.bash_profile.
- What is the difference between “foo” and “foo &” when typed in an interactive shell?
- And the difference with: “foo &” followed by “disown”?
- What about: “nohup foo”?
- This progressive question touches a number of Linux concepts such as shell, terminal, foreground vs background process and signals.
- If the candidate can clearly explain the concepts and the differences among the commands, he/she ranks high on Linux expertise.
- Name and describe a Linux command with 2 letters. How many more can you name?
- This question tests the candidate’s familiarity with Linux administration commands.
- An entry-level DevOps engineer can name 3~5, an intermediate level engineer can name 6~10, an expert engineer can name more than 10.
- Do not take this question too far, or post the question for each alphabet. This is because an engineer who is good at commandline usually remembers the commands through muscle memory, and hence may not be able to recall them verbally when questioned.
- If Commandline-fu or shell scripting skill is an important criterion for hire, I recommend conducting a coding test on it.
- I suggest showing the candidate a cloud architecture diagram of your tech stack, and ask him/her to identify and describe the functionality of each component.
- Modern cloud platforms such as AWS provides a broad set of infrastructure services as building blocks for companies to build their applications. This question tests the candidate of his/her knowledge on the building blocks that constitute your tech stack.
- Expect the candidate to know at least the common building blocks, how to provision them and a rough idea of the cost for each.
- Bonus: if the candidate can understand where the scalability and reliability of your tech stack come from.
- Describe a DevOps automation tool that you have used before and the best practices you know.
- DevOps automation tools such as Terraform (orchestration tool), Ansible, Chef and Puppet (configuration management tool) are easy to pick up and use. I have seen competent system admins learned these tools on the job effortlessly. Therefore, there isn’t really a need to check the knowledge of the candidate on any of these tools, unless it is a crucial part of your tech stack, in which case a coding test is a better screening method.
- Expect an experienced DevOps engineer to have exposure to at least one orchestration / configuration management tool.
Continuous Integration / Continuous Delivery
- How do you construct a deployment/delivery pipeline?
- What are the important aspects of a system of continuous integration and deployment?
- CI / CD is an important software engineering practice that increases the productivity of the tech team. A DevOps engineer is usually the permanent care-taker of the pipeline, although this is usually the less important responsibility of his/hers. It is common that a CI / CD pipeline is already in-place and the new hire is to take over it.
- Every tech company’s pipeline is unique, so there is little chance the candidate will understand the intricacies of your pipeline. As such, it is better to set a general know-how question for this.
Monitoring and Alerting
- Describe a monitoring tool, e.g. Nagios, New Relic that you have used before and the best practices to follow.
- Same reasoning as in Automation case above.
- How is Container/Docker different from a normal virtual machine?
- If your tech team deploys containers, your DevOps engineer must understand container fundamentals, and the differences with VMs.
- Expect the candidate to explain the differences along the lines of performance, isolation level and resource sharing, between containers and VMs.
- You can also ask further questions about the suitable use-cases for each technology.
- How would you dockerize a todo app hosted behind Nginx? The app uses an SQL database for data persistence.
- An intermediate-level question that checks whether the candidate has any experience using Docker in production.
- Expect the candidate to list the containers and data volume required, and to explain how all these are linked together.
- Give the candidate a white-board to draw diagrams.
- How does Docker improve build time and ship time, when used in continuous integration / delivery during software development?
- This is an advanced question about how Docker images are created.
- Expect the candidate to explain the layering feature of Docker images, its application to CI, and how caching saves time when rebuilding the project.
- Tell me your experience in setting up and managing a computing cluster?
- What are (the concepts in respective cluster orchestration technology, e.g. pod, service, scheduler, etc )?
- Cluster DevOps is still in its nascent stage, with competing technologies like Kubernetes, Mesos, Docker Swarm in the market. Each has its own ecosystem. They all try to solve a same problem but with different approaches. Developers try to make the technologies compatible with each other, however the community is still a little fragmented. Therefore it would be wise to ask the candidate to share his experience about a certain technology he has used, and his understanding of that technology.
- Unix & Linux Stack Exchange.
- chassing, Github, Linux System Administrator/DevOps Interview Questions.
- kamranahmedse, Github, DevOps Roadmap.