700 questions :D

This commit is contained in:
abregman 2019-12-22 23:53:52 +02:00
parent 580d5af77f
commit dc802d41b5
2 changed files with 93 additions and 38 deletions

113
README.md
View File

@ -2,7 +2,7 @@
:information_source:  This repository contains questions on various DevOps and SRE related topics :information_source:  This repository contains questions on various DevOps and SRE related topics
:bar_chart:  There are currently **690** questions :bar_chart:  There are currently **700** questions
:books:  To learn more about DevOps check the resources in [DevOpsBit.com](https://devopsbit.com) :books:  To learn more about DevOps check the resources in [DevOpsBit.com](https://devopsbit.com)
@ -24,12 +24,12 @@
<tr> <tr>
<td align="center"><a href="#devops"><img src="images/devops.png" width="70px;" height="75px;" alt="DevOps" /><br /><b>DevOps</b></a><br /><sub><a href="#devops-beginner">Beginner :baby:</a></sub><br><sub><a href="#devops-advanced">Advanced :star:</a></sub></td> <td align="center"><a href="#devops"><img src="images/devops.png" width="70px;" height="75px;" alt="DevOps" /><br /><b>DevOps</b></a><br /><sub><a href="#devops-beginner">Beginner :baby:</a></sub><br><sub><a href="#devops-advanced">Advanced :star:</a></sub></td>
<td align="center"><a href="#jenkins"><img src="images/jenkins.png" width="80px;" height="85px;" alt="Jenkins"/><br /><b>Jenkins</b></a><br /><sub><a href="#jenkins-beginner">Beginner :baby:</a></sub><br><sub><a href="#jenkins-advanced">Advanced :star:</a></sub></td> <td align="center"><a href="#jenkins"><img src="images/jenkins.png" width="80px;" height="85px;" alt="Jenkins"/><br /><b>Jenkins</b></a><br /><sub><a href="#jenkins-beginner">Beginner :baby:</a></sub><br><sub><a href="#jenkins-advanced">Advanced :star:</a></sub></td>
<td align="center"><a href="#git"><img src="images/git.png" width="110px;" height="75px;" alt="Git"/><br /><b>Git</b></a><br /><sub><a href="#git-beginner">Beginner :baby:</a></sub><br><sub><a href="#git-advanced">Advanced :star:</a></sub></td> <td align="center"><a href="#git"><img src="images/git.png" width="80px;" height="75px;" alt="Git"/><br /><b>Git</b></a><br /><sub><a href="#git-beginner">Beginner :baby:</a></sub><br><sub><a href="#git-advanced">Advanced :star:</a></sub></td>
<td align="center"><a href="#ansible"><img src="images/ansible.png" width="65px;" height="75px;" alt="Ansible"/><br /><b>Ansible</b></a><br /><sub><a href="#ansible-beginner">Beginner :baby:</a></sub><br><sub><a href="#ansible-advanced">Advanced :star:</a></sub></td> <td align="center"><a href="#ansible"><img src="images/ansible.png" width="65px;" height="75px;" alt="Ansible"/><br /><b>Ansible</b></a><br /><sub><a href="#ansible-beginner">Beginner :baby:</a></sub><br><sub><a href="#ansible-advanced">Advanced :star:</a></sub></td>
<td align="center"><a href="#Network"><img src="images/network.png" width="80x;" height="75px;" alt="Network"/><br /><b>Network</b></a><br /><sub><a href="#network-beginner">Beginner :baby:</a></sub><br><sub><a href="#network-advanced">Advanced :star:</a></sub></td> <td align="center"><a href="#Network"><img src="images/network.png" width="80x;" height="75px;" alt="Network"/><br /><b>Network</b></a><br /><sub><a href="#network-beginner">Beginner :baby:</a></sub><br><sub><a href="#network-advanced">Advanced :star:</a></sub></td>
<td align="center"><a href="#linux"><img src="images/linux.png" width="75x;" height="75px;" alt="Linux"/><br /><b>Linux</b></a><br /><sub><a href="#linux-beginner">Beginner :baby:</a></sub><br><sub><a href="#linux-advanced">Advanced :star:</a></sub></td> <td align="center"><a href="#linux"><img src="images/linux.png" width="75x;" height="75px;" alt="Linux"/><br /><b>Linux</b></a><br /><sub><a href="#linux-beginner">Beginner :baby:</a></sub><br><sub><a href="#linux-advanced">Advanced :star:</a></sub></td>
<td align="center"><a href="#terraform"><img src="images/terraform.png" width="75px;" height="75px;" alt="Terraform"/><br /><b>Terraform</b></a><br /><sub><a href="#terraform-beginner">Beginner :baby:</a></sub><br><sub><a href="#terraform-advanced">Advanced :star:</a></sub></td> <td align="center"><a href="#terraform"><img src="images/terraform.png" width="70px;" height="75px;" alt="Terraform"/><br /><b>Terraform</b></a><br /><sub><a href="#terraform-beginner">Beginner :baby:</a></sub><br><sub><a href="#terraform-advanced">Advanced :star:</a></sub></td>
<td align="center"><a href="#docker"><img src="images/docker.png" width="75px;" height="75px;" alt="Docker"/><br /><b>Docker</b></a><br /><sub><a href="#docker-beginner">Beginner :baby:</a></sub><br><sub><a href="#docker-advanced">Advanced :star:</a></sub></td> <td align="center"><a href="#docker"><img src="images/docker.png" width="70px;" height="75px;" alt="Docker"/><br /><b>Docker</b></a><br /><sub><a href="#docker-beginner">Beginner :baby:</a></sub><br><sub><a href="#docker-advanced">Advanced :star:</a></sub></td>
</tr> </tr>
<tr> <tr>
<td align="center"><a href="#coding"><img src="images/coding.png" width="75px;" height="75px;" alt="coding"/><br /><b>Coding</b></a><br /><sub><a href="#coding-beginner">Beginner :baby:</a></sub><br><sub><a href="#coding-advanced">Advanced :star:</a></sub></td> <td align="center"><a href="#coding"><img src="images/coding.png" width="75px;" height="75px;" alt="coding"/><br /><b>Coding</b></a><br /><sub><a href="#coding-beginner">Beginner :baby:</a></sub><br><sub><a href="#coding-advanced">Advanced :star:</a></sub></td>
@ -54,8 +54,8 @@
<tr> <tr>
<td align="center"><a href="#monitoring"><img src="images/monitoring.png" width="75px;" height="75px;" alt="Monitoring"/><br /><b>Monitoring</b></a><br /><sub><a href="#monitoring-beginner">Beginner :baby:</a></sub><br><sub></td> <td align="center"><a href="#monitoring"><img src="images/monitoring.png" width="75px;" height="75px;" alt="Monitoring"/><br /><b>Monitoring</b></a><br /><sub><a href="#monitoring-beginner">Beginner :baby:</a></sub><br><sub></td>
<td align="center"><a href="#elastic"><img src="images/elastic.png" width="110px;" height="75px;" alt="Elastic"/><br /><b>Elastic</b></a><br /><sub><a href="#elastic-beginner">Beginner :baby:</a></sub><br><sub></td> <td align="center"><a href="#elastic"><img src="images/elastic.png" width="110px;" height="75px;" alt="Elastic"/><br /><b>Elastic</b></a><br /><sub><a href="#elastic-beginner">Beginner :baby:</a></sub><br><sub></td>
<td align="center"><a href="#dns"><b>DNS</b></a><br /><sub><a href="#dns-beginner">Beginner :baby:</a></sub><br><sub></td>
<td align="center"><a href="#virtualization"><b>Virtualization</b></a><br /><sub><a href="#virtualization-beginner">Beginner :baby:</a></sub><br><sub></td> <td align="center"><a href="#virtualization"><b>Virtualization</b></a><br /><sub><a href="#virtualization-beginner">Beginner :baby:</a></sub><br><sub></td>
<td align="center"><a href="#dns"><b>DNS</b></a><br /><sub><a href="#dns-beginner">Beginner :baby:</a></sub><br><sub></td>
<td align="center"><a href="#operating-system"><b>Operating System</b></a><br /><sub><a href="#operating-system-beginner">Beginner :baby:</a></sub><br><sub></td> <td align="center"><a href="#operating-system"><b>Operating System</b></a><br /><sub><a href="#operating-system-beginner">Beginner :baby:</a></sub><br><sub></td>
<td align="center"><a href="#distributed"><img src="images/distributed.png" width="110px;" height="75px;" alt="Distributed"/><br /><b>Distributed</b></a></td> <td align="center"><a href="#distributed"><img src="images/distributed.png" width="110px;" height="75px;" alt="Distributed"/><br /><b>Distributed</b></a></td>
<td align="center"><a href="#general"><b>General</b></a><br /><sub><a href="#general-beginner">Beginner :baby:</a></sub><br><sub></td> <td align="center"><a href="#general"><b>General</b></a><br /><sub><a href="#general-beginner">Beginner :baby:</a></sub><br><sub></td>
@ -260,6 +260,10 @@ One can argue whether it's per company definition or a global one but at least a
<summary>What Continuous Integration solution are you using/prefer and why?</summary><br><b> <summary>What Continuous Integration solution are you using/prefer and why?</summary><br><b>
</b></details> </b></details>
<details>
<summary>What deployment strategies are you familiar with or have used?</summary><br><b>
</b></details>
<a name="devops-advanced"></a> <a name="devops-advanced"></a>
#### :star: Advanced #### :star: Advanced
@ -444,7 +448,7 @@ In On-Premise solution, it's quite the opposite. You need to take care of hardwa
<a name="aws-beginner"></a> <a name="aws-beginner"></a>
#### :baby: Beginner #### :baby: Beginner
##### Global Infrastructure #### Global Infrastructure
<details> <details>
<summary>Explain the following <summary>Explain the following
@ -469,7 +473,7 @@ Edge locations are basically content delivery network which caches data and insu
True True
</b></details> </b></details>
##### S3 #### S3
<details> <details>
<summary>Explain what is S3 and what is it used for</summary><br> <summary>Explain what is S3 and what is it used for</summary><br>
@ -510,7 +514,7 @@ True
<summary>What is a storage class? What storage classes are you familiar with?</summary><br><b> <summary>What is a storage class? What storage classes are you familiar with?</summary><br><b>
</b></details> </b></details>
##### EC2 #### EC2
<details> <details>
<summary>What is EC2? What is it used for?</summary><br><b> <summary>What is EC2? What is it used for?</summary><br><b>
@ -653,11 +657,15 @@ True
<summary>What is VPC?</summary><br><b> <summary>What is VPC?</summary><br><b>
</b></details> </b></details>
<details>
<summary>What is an Elastic IP address?</summary><br><b>
</b></details>
<details> <details>
<summary>Explain Security Groups and Network ACLs</summary><br><b> <summary>Explain Security Groups and Network ACLs</summary><br><b>
</b></details> </b></details>
#### Identify the service #### Identify the service or tool
<details> <details>
<summary>What would you use for easily creating similar AWS environments/resources for different customers?</summary><br><b> <summary>What would you use for easily creating similar AWS environments/resources for different customers?</summary><br><b>
@ -678,12 +686,18 @@ Lightsail
</b></details> </b></details>
<details> <details>
<summary>Which tool would you use for choosing between Reserved instances or On-Demand instances??</summary><br><b> <summary>Which tool would you use for choosing between Reserved instances or On-Demand instances?</summary><br><b>
Cost Explorer Cost Explorer
</b></details> </b></details>
#### Misc <details>
<summary>What would you use to check how many unassociated Elastic IP address you have?</summary><br><b>
Trusted Advisor
</b></details>
#### AWS Misc
<details> <details>
<summary>Explain what are the following services and give an use case example for each one them: <summary>Explain what are the following services and give an use case example for each one them:
@ -693,6 +707,10 @@ Cost Explorer
* CloudSearch</summary><br><b> * CloudSearch</summary><br><b>
</b></details> </b></details>
<details>
<summary>Explain what is AWS Lambda</summary><br><b>
</b></details>
## Network ## Network
<a name="network-beginner"></a> <a name="network-beginner"></a>
@ -793,6 +811,10 @@ CSMA/CD algorithm:
<summary>What is TCP? How it works? What is the 3 way handshake?</summary><br><b> <summary>What is TCP? How it works? What is the 3 way handshake?</summary><br><b>
</b></details> </b></details>
<details>
<summary>How does SSL handshake work?</summary><br><b>
</b></details>
<details> <details>
<summary>What is the difference between TCP and UDP?</summary><br><b> <summary>What is the difference between TCP and UDP?</summary><br><b>
@ -1315,13 +1337,7 @@ True
* /usr/local * /usr/local
</b></details> </b></details>
##### Processes #### Processes
<details>
<summary>Can you explain what is a process?</summary><br><b>
A process is a running program. A program is one or more instructions and the program (or process) is executed by the operating system.
</b></details>
<details> <details>
<summary>How to run a process in the background and why to do that in the first place?</summary><br><b> <summary>How to run a process in the background and why to do that in the first place?</summary><br><b>
@ -1404,6 +1420,17 @@ One way to kill zombie process is by sending SIGCHLD to the parent process telli
You can also try closing/terminating the parent process. This will make the zombie process a child of init (1) which does periodic cleanups and will at some point clean up the zombie process. You can also try closing/terminating the parent process. This will make the zombie process a child of init (1) which does periodic cleanups and will at some point clean up the zombie process.
</b></details> </b></details>
<details>
<summary>How to find all the
* Processes executed/owned by a certain user
* Process which are Java processes
* Zombie Processes
</summary><br><b>
If you mention at any point ps command with arugments, be familiar with what these arguments does exactly.
</b></details>
<details> <details>
<summary>What is the init process?</summary><br><b> <summary>What is the init process?</summary><br><b>
</b></details> </b></details>
@ -1582,6 +1609,10 @@ You can specify one or more of the following:
##### Applications and Services ##### Applications and Services
<details>
<summary>What can you find in /etc/services?</summary><br><b>
</b></details>
<details> <details>
<summary>How to make sure a Service starts automatically after a reboot or crash?</summary><br><b> <summary>How to make sure a Service starts automatically after a reboot or crash?</summary><br><b>
@ -1590,18 +1621,6 @@ Depends on the init system.
Systemd: <code> systemctl enable [service_name] </code> Systemd: <code> systemctl enable [service_name] </code>
System V: <code> update-rc.d [service_name] </code> and add this line <code> id:5678:respawn:/bin/sh /path/to/app </code> to /etc/inittab System V: <code> update-rc.d [service_name] </code> and add this line <code> id:5678:respawn:/bin/sh /path/to/app </code> to /etc/inittab
Upstart: add Upstart init script at /etc/init/service.conf Upstart: add Upstart init script at /etc/init/service.conf
</b></details>
<details>
<summary>What is a load balancer?</summary><br><b>
</b></details>
<details>
<summary>What load balancer algorithms are you familiar with?</summary><br><b>
</b></details>
<details>
<summary>What can you find in /etc/services</summary><br><b>
</b></details> </b></details>
<details> <details>
@ -1778,6 +1797,12 @@ There are many ways to answer that. For those who look for simplicity, the book
* Stop - allow to stop a running process * Stop - allow to stop a running process
</b></details> </b></details>
<details>
<summary>Can you explain what is a process?</summary><br><b>
A process is a running program. A program is one or more instructions and the program (or process) is executed by the operating system.
</b></details>
<details> <details>
<summary>How a process is created?</summary><br><b> <summary>How a process is created?</summary><br><b>
@ -2414,6 +2439,10 @@ In case we find out there was a temporary issue with the pod or the system, we c
Setting the replicas to 0 will shut down the process. Now start it with `kubectl scale deployment [name] --replicas=1` Setting the replicas to 0 will shut down the process. Now start it with `kubectl scale deployment [name] --replicas=1`
</b></details> </b></details>
<details>
<summary>Describe how roll-back works</summary><br><b>
</b></details>
## Coding ## Coding
<a name="coding-beginner"></a> <a name="coding-beginner"></a>
@ -3770,7 +3799,11 @@ as key-value pair, document-oriented, etc.
</b></details> </b></details>
<details> <details>
<summary>What is better?. Embedded documents or referenced?</summary><br><b> <summary>What is better? Embedded documents or referenced?</summary><br><b>
</b></details>
<details>
<summary>Have you performed data retrieval optimizations in Mongo? If not, can you think about ways to optimize a slow data retrieval?</summary><br><b>
</b></details> </b></details>
##### Queries ##### Queries
@ -3917,6 +3950,10 @@ Using the keyword <code>read</code> so for example <code>read x</code> will wait
<summary>Write a script to determine whether a host is up or down</summary><br><b> <summary>Write a script to determine whether a host is up or down</summary><br><b>
</b></details> </b></details>
<details>
<summary>Write a script to remove all the empty files in a given directory (also nested directories)</summary><br><b>
</b></details>
<a name="shell-scripting-advanced"></a> <a name="shell-scripting-advanced"></a>
#### Advanced #### Advanced
@ -4839,6 +4876,20 @@ TODO: explain what is actually a Cookie
<summary>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?</summary><br><b> <summary>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?</summary><br><b>
</b></details> </b></details>
#### Load Balancers
<details>
<summary>What is a load balancer?</summary><br><b>
</b></details>
<details>
<summary>What load balancer algorithms are you familiar with?</summary><br><b>
</b></details>
<details>
<summary>What is an Application Load Balancer?</summary><br><b>
</b></details>
## HR ## HR
Although the following questions are not DevOps related, they are still quite common and part of the DevOps interview process so it's better to prepare for them as well. Although the following questions are not DevOps related, they are still quite common and part of the DevOps interview process so it's better to prepare for them as well.

View File

@ -11,22 +11,22 @@ Or more specifically, any of the following:
### Are these real DevOps interview questions? ### Are these real DevOps interview questions?
The answer is no. While the name of the repository indicates it should include only (or mainly) DevOps Interview Questions in reality, this repository includes many questions on many different topics - Linux, Git, Python, ... Only small subset of the questions are DevOps questions. The answer is no. While the name of the repository indicates it should include only (or mainly) DevOps Interview Questions in reality, this repository includes many questions on many different topics - Linux, Git, Python, ... Only small subset of the questions are actually DevOps questions.
If you wonder why then it quite simple. DevOps is still, after many years, a controversial topic. If you ask different people what is DevOps, you'll get different answers and DevOps interviews are not an exception in this case. Different DevOps interviews will include different questions on various topics. Some of the questions you'll be asked might be included in this repository, some might none. It's even possible you'll be asked none of the questions in this repository but in my opinion it's still decent test of your knowledge. If you wonder why then it quite simple. DevOps is still, after many years, a controversial topic. If you ask different people what is DevOps, you'll get different answers and DevOps interviews are not an exception in this case. Different DevOps interviews will include different questions on various topics. Some of the questions you'll be asked might be included in this repository, some might none. It's even possible you'll be asked none of the questions in this repository but in my opinion it's still decent test of your knowledge.
Also, I rename the project name to better represent its content but "coding-operations-HR-...-interview-questions" is too long name for a repository :) Also, I can rename the project name to better represent its content but "coding-operations-HR-...-interview-questions" is too long name for a repository :)
### Should I be familiar with all the tools/platforms/... listed in this repository? ### Should I be familiar with all the tools/platforms/... listed in this repository?
NO NO NO! :)<br> NO NO NO! :)<br>
I won't give you the crap of "DevOps is a culture, not a role" kind of stuff but one thing is for sure, DevOps is not about being familiar with all the existing tools. I won't give you the crap of "DevOps is a culture, not a role" kind of stuff but one thing is for sure, DevOps is not about being familiar with all the existing tools.
With that being said, there are some concepts, tools, platforms, ... that are quite common in jobs requirements. Take Linux for example. While Linux is not a requirement of every DevOps position out there, it's still quite a desired skill and probably appear as a requirement in more than 80% of the DevOps positions if I had to guess. This also applies to other skills. With that being said, there are some concepts, tools, platforms, ... that are quite common in jobs requirements. Take Linux for example. While Linux is not a requirement of every DevOps position out there, it's still quite a desired skill and probably appear as a requirement in more than 80% of the DevOps positions if I had to guess. So it will be wise to be familiar with Linux as well as some other concepts/tool/projects...
### How should I prepare for my DevOps interview? ### How should I prepare for my DevOps interview?
Excellent question. This repository alone will might not be enough in some cases. We are exploring the answer to this question [here](prepare_for_interview.md) Excellent question. This repository alone might not be enough in some cases. We are exploring the answer to this question [here](prepare_for_interview.md)
If you have any ideas, insights, questions, ... please contribute :) If you have any ideas, insights, questions, ... please contribute :)
### How do I become a better DevOps Engineer? ### How do I become a better DevOps Engineer?
@ -36,11 +36,11 @@ I don't have a definitive answer for this question, but what I feel works for me
* Read - Read blogs, books, ... anything that can enrich you about DevOps * Read - Read blogs, books, ... anything that can enrich you about DevOps
* Practice - Some practical DevOps work at work and/or home * Practice - Some practical DevOps work at work and/or home
* Share - This is one of the reasons I created this project. Primary goal was to help others but a secondary goal quickly became to learn more. By asking questions, you actually learn better a certain topic. Try it out, take a certain subject and try to came up with questions you would ask someone to test his/her skills. * Share - This is one of the reasons I created this project. Primary goal was to help others but a secondary goal quickly became to learn more. By asking questions, you actually learn better a certain topic. Try it out, take a certain subject and try to come up with questions you would ask someone to test his/her skills.
### Why most of the questions don't have answers? ### Why most of the questions don't have answers?
Because we need more contributors ;)<br> Because we need more contributors ;)
### Where the questions and answers are coming from? ### Where the questions and answers are coming from?
@ -73,8 +73,12 @@ Good question. When a friend asked me to help him with learning for an interview
* How to install Git/Jenkins/...? * How to install Git/Jenkins/...?
* How do you open the terminal in Linux? * How do you open the terminal in Linux?
These in my opinion are questions no one should ever ask in an interview and so, I decided to start my own interview questions project. These in my opinion are questions no one should ever ask in an interview and so, I decided to start my own interview questions project to help others (and also myself) to test their knowledge.
### Can I add questions and/or answers to this project? ### Can I add questions and/or answers to this project?
I'll simply imagine you didn't ask that on an open source project... :) I'll simply imagine you didn't ask that on an open source project... :)
### Why can't I add installation interview questions?
Personally, I don't think installation questions are interview questions. Yes, I know many sites and sources advertise them as such but personally I think we should have the responsibility to not encourage or even create a phenomenon where interviewers will think it's normal or has any benefit to ask such questions. If you think there is value in this, please create an issue and I'll be happy to discuss this with you.