Merge branch 'master' into master

This commit is contained in:
AhGhanima 2019-10-21 22:30:56 +02:00 committed by GitHub
commit 879f0d6ca3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 214 additions and 38 deletions

252
README.md
View File

@ -3,7 +3,8 @@
:information_source:  This repository contains interview questions on various DevOps related topics :information_source:  This repository contains interview questions on various DevOps related topics
:bar_chart:  There are currently **350** questions :bar_chart:  There are currently **382** questions
:warning:  You don't need to know how to answer all the questions in this repo. DevOps is not about knowing all :) :warning:  You don't need to know how to answer all the questions in this repo. DevOps is not about knowing all :)
@ -20,29 +21,30 @@
<table> <table>
<tr> <tr>
<td align="center"><a href="#devops"><img src="images/devops.png" width="75px;" 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="75px;" 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="85px;" 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="#aws"><img src="images/aws.png" width="110px;" height="75px;" alt="AWS"/><br /><b>AWS</b></a><br /><sub><a href="#aws-beginner">Beginner :baby:</a></sub><br><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="#ansible"><img src="images/ansible.png" width="75px;" 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="#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="#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></td>
</tr>
<tr>
<td align="center"><a href="#kubernetes"><img src="images/kubernetes.png" width="75px;" height="75px;" alt="kubernetes"/><br /><b>Kubernetes</b></a><br /><sub><a href="#kubernetes-beginner">Beginner :baby:</a></sub><br></td>
<td align="center"><a href="#python"><img src="images/python.png" width="80px;" height="75px;" alt="Python"/><br /><b>Python</b></a><br /><sub><a href="#python-beginner">Beginner :baby:</a></sub><br><sub><a href="#python-advanced">Advanced :star:</a></sub></td>
<td align="center"><a href="#prometheus"><img src="images/prometheus.png" width="75px;" height="75px;" alt="Prometheus"/><br /><b>Prometheus</b></a><br /><sub><a href="#prometheus-beginner">Beginner :baby:</a></sub><br></td>
<td align="center"><a href="#git"><img src="images/git.png" width="75px;" 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="75px;" 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="#go"><img src="images/go.png" width="75px;" height="75px;" alt="Go"/><br /><b>Go</b></a><br /><sub><a href="#go-beginner">Beginner :baby:</a></sub><br><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="#mongo"><img src="images/mongo.png" width="75px;" height="75px;" alt="Mongo"/><br /><b>Mongo</b></a><br /><sub><a href="#mongo-beginner">Beginner :baby:</a></sub><br><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="#openshift"><img src="images/openshift.png" width="75px;" height="75px;" alt="OpenShift"/><br /><b>OpenShift</b></a><br /><sub><a href="#openshift-beginner">Beginner :baby:</a></sub><br><sub></td> <td align="center"><a href="#ansible"><img src="images/ansible.png" width="90px;" 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="#shell-scripting"><img src="images/bash.png" width="75px;" height="75px;" alt="Bash"/><br /><b>Shell Scripting</b></a><br /><sub><a href="#shell-scripting-beginner">Beginner :baby:</a></sub><br><sub><a href="#shell-scripting-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="#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>
</tr> </tr>
<tr> <tr>
<td align="center"><a href="#python"><img src="images/python.png" width="80px;" height="75px;" alt="Python"/><br /><b>Python</b></a><br /><sub><a href="#python-beginner">Beginner :baby:</a></sub><br><sub><a href="#python-advanced">Advanced :star:</a></sub></td>
<td align="center"><a href="#go"><img src="images/go.png" width="75px;" height="75px;" alt="Go"/><br /><b>Go</b></a><br /><sub><a href="#go-beginner">Beginner :baby:</a></sub><br><sub></td>
<td align="center"><a href="#shell-scripting"><img src="images/bash.png" width="75px;" height="75px;" alt="Bash"/><br /><b>Shell Scripting</b></a><br /><sub><a href="#shell-scripting-beginner">Beginner :baby:</a></sub><br><sub><a href="#shell-scripting-advanced">Advanced :star:</a></sub></td>
<td align="center"><a href="#kubernetes"><img src="images/kubernetes.png" width="75px;" height="75px;" alt="kubernetes"/><br /><b>Kubernetes</b></a><br /><sub><a href="#kubernetes-beginner">Beginner :baby:</a></sub><br></td>
<td align="center"><a href="#prometheus"><img src="images/prometheus.png" width="75px;" height="75px;" alt="Prometheus"/><br /><b>Prometheus</b></a><br /><sub><a href="#prometheus-beginner">Beginner :baby:</a></sub><br></td>
<td align="center"><a href="#mongo"><img src="images/mongo.png" width="75px;" height="75px;" alt="Mongo"/><br /><b>Mongo</b></a><br /><sub><a href="#mongo-beginner">Beginner :baby:</a></sub><br><sub></td>
<td align="center"><a href="#sql"><img src="images/sql.png" width="75px;" height="75px;" alt="sql"/><br /><b>SQL</b></a><br /><sub><a href="#sql-beginner">Beginner :baby:</a></sub><br><sub><a href="#sql-advanced">Advanced :star:</a></sub></td> <td align="center"><a href="#sql"><img src="images/sql.png" width="75px;" height="75px;" alt="sql"/><br /><b>SQL</b></a><br /><sub><a href="#sql-beginner">Beginner :baby:</a></sub><br><sub><a href="#sql-advanced">Advanced :star:</a></sub></td>
<td align="center"><a href="#openshift"><img src="images/openshift.png" width="75px;" height="75px;" alt="OpenShift"/><br /><b>OpenShift</b></a><br /><sub><a href="#openshift-beginner">Beginner :baby:</a></sub><br><sub></td>
</tr>
<tr>
<td align="center"><a href="#aws"><img src="images/aws.png" width="110px;" height="75px;" alt="AWS"/><br /><b>AWS</b></a><br /><sub><a href="#aws-beginner">Beginner :baby:</a></sub><br><sub></td>
<td align="center"><a href="#azure"><img src="images/azure.png" width="75px;" height="75px;" alt="azure"/><br /><b>Azure</b></a><br /><sub><a href="#azure-beginner">Beginner :baby:</a></sub><br><sub></td> <td align="center"><a href="#azure"><img src="images/azure.png" width="75px;" height="75px;" alt="azure"/><br /><b>Azure</b></a><br /><sub><a href="#azure-beginner">Beginner :baby:</a></sub><br><sub></td>
<td align="center"><a href="#openstack"><img src="images/openstack.png" width="75px;" height="75px;" alt="openstack"/><br /><b>OpenStack</b></a><br /><sub><a href="#openstack-beginner">Beginner :baby:</a></sub><br><sub></td> <td align="center"><a href="#openstack"><img src="images/openstack.png" width="75px;" height="75px;" alt="openstack"/><br /><b>OpenStack</b></a><br /><sub><a href="#openstack-beginner">Beginner :baby:</a></sub><br><sub><a href="#openstack-advanced">Advanced :star:</a></sub></td>
<td align="center"><a href="#security"><img src="images/security.png" width="75px;" height="75px;" alt="security"/><br /><b>Security</b></a><br /><sub><a href="#security-beginner">Beginner :baby:</a></sub><br><sub></td> <td align="center"><a href="#security"><img src="images/security.png" width="75px;" height="75px;" alt="security"/><br /><b>Security</b></a><br /><sub><a href="#security-beginner">Beginner :baby:</a></sub><br><sub></td>
<td align="center"><a href="#puppet"><img src="images/puppet.png" width="75px;" height="75px;" alt="puppet"/><br /><b>Puppet</b></a><br /><sub><a href="#puppet-beginner">Beginner :baby:</a></sub><br><sub><a href="#puppet-advanced">Advanced :star:</a></sub></td>
</tr> </tr>
</table> </table>
</center> </center>
@ -60,6 +62,10 @@
<summary>What is DevOps? What DevOps helps us to achieve?</summary><br><b> <summary>What is DevOps? What DevOps helps us to achieve?</summary><br><b>
</b></details> </b></details>
<details>
<summary>What are the anti-patterns of DevOps?</summary><br><b>
</b></details>
<details> <details>
<summary>What is Continuous Integration?</summary><br><b> <summary>What is Continuous Integration?</summary><br><b>
@ -80,10 +86,6 @@ Each piece of code (change/patch) is verified, to make the change is safe to mer
<summary>What do you consider as best practices for CI/CD?</summary><br><b> <summary>What do you consider as best practices for CI/CD?</summary><br><b>
</b></details> </b></details>
<details>
<summary>What are the anti-patterns of DevOps?</summary><br><b>
</b></details>
<details> <details>
<summary>What systems and/or tools are you using for the following?: <summary>What systems and/or tools are you using for the following?:
@ -181,10 +183,6 @@ which follows the immutable infrastructure paradigm.
<summary>How would you structure/implement CD for an application which depends on several other applications?</summary><br><b> <summary>How would you structure/implement CD for an application which depends on several other applications?</summary><br><b>
</b></details> </b></details>
<details>
<summary>How do you manage dependencies?</summary><br><b>
</b></details>
<details> <details>
<summary>Explain what are design patterns. Which design patterns are you familiar with?</summary><br><b> <summary>Explain what are design patterns. Which design patterns are you familiar with?</summary><br><b>
</b></details> </b></details>
@ -441,6 +439,22 @@ Stop the instance, the type of the instance to match the desired RAM and start t
<a name="network-beginner"></a> <a name="network-beginner"></a>
#### :baby: Beginner #### :baby: Beginner
<details>
<summary>What is Ethernet?</summary><br><b>
</b></details>
<details>
<summary>What is a MAC address? What is it used for?</summary><br><b>
</b></details>
<details>
<summary>When this MAC address is used?: ff:ff:ff:ff:ff:ff</summary><br><b>
</b></details>
<details>
<summary>What is an IP address? What is a subnet?</summary><br><b>
</b></details>
<details> <details>
<summary>Explain the OSI model. What layers there are? What each layer is responsible for?</summary><br><b> <summary>Explain the OSI model. What layers there are? What each layer is responsible for?</summary><br><b>
@ -504,10 +518,6 @@ CSMA/CD algorithm:
<summary>What is ARP? How it works?</summary><br><b> <summary>What is ARP? How it works?</summary><br><b>
</b></details> </b></details>
<details>
<summary>What is a MAC address? What is it used for?</summary><br><b>
</b></details>
<details> <details>
<summary>What is TTL?</summary><br><b> <summary>What is TTL?</summary><br><b>
</b></details> </b></details>
@ -541,7 +551,7 @@ CSMA/CD algorithm:
</b></details> </b></details>
<details> <details>
<summary>What is ICMP?</summary><br><b> <summary>What is ICMP? What is it used for?</summary><br><b>
</b></details> </b></details>
<details> <details>
@ -563,14 +573,30 @@ CSMA/CD algorithm:
<summary>What is Asymmetric Routing? How do deal with it?</summary><br><b> <summary>What is Asymmetric Routing? How do deal with it?</summary><br><b>
</b></details> </b></details>
<details>
<summary>What overlay (tunnel) protocols are you familiar with?</summary><br><b>
</b></details>
<details> <details>
<summary>What is GRE? How it works?</summary><br><b> <summary>What is GRE? How it works?</summary><br><b>
</b></details> </b></details>
<details>
<summary>What is VXLAN? How it works?</summary><br><b>
</b></details>
<details>
<summary>What is SNAT?</summary><br><b>
</b></details>
<details> <details>
<summary>Explain OSPF</summary><br><b> <summary>Explain OSPF</summary><br><b>
</b></details> </b></details>
<details>
<summary>Explain Spine & Leaf</summary><br><b>
</b></details>
<details> <details>
<summary>Using Hammind code, what would be the code word for the following data word 100111010001101?</summary><br><b> <summary>Using Hammind code, what would be the code word for the following data word 100111010001101?</summary><br><b>
@ -1439,6 +1465,10 @@ List
#### :baby: beginner #### :baby: beginner
<details>
<summary>What is Docker? What are you using it for?</summary><br><b>
</b></details>
<details> <details>
<summary>How containers are different from VMs?</summary><br><b> <summary>How containers are different from VMs?</summary><br><b>
@ -1460,7 +1490,11 @@ You should choose containers when:
</b></details> </b></details>
<details> <details>
<summary>What happens when you run `docker run hello-world`?</summary><br><b> <summary>Explain Docker architecture</summary><br><b>
</b></details>
<details>
<summary>Describe in detail what happens when you run `docker run hello-world`?</summary><br><b>
Docker CLI passes your request to Docker daemon. Docker CLI passes your request to Docker daemon.
Docker daemon downloads the image from Docker Hub Docker daemon downloads the image from Docker Hub
@ -1473,7 +1507,7 @@ Docker daemon redirects output from container to Docker CLI which redirects it t
</b></details> </b></details>
<details> <details>
<summary>What do you see when you run `docker ps`?</summary><br><b> <summary>What best practices are you familiar related to working with containers?</summary><br><b>
</b></details> </b></details>
<details> <details>
@ -1484,6 +1518,30 @@ Docker daemon redirects output from container to Docker CLI which redirects it t
<summary>How would you transfer data from one container into another?</summary><br><b> <summary>How would you transfer data from one container into another?</summary><br><b>
</b></details> </b></details>
<details>
<summary>What happens to data of the container when a container exists?</summary><br><b>
</b></details>
<details>
<summary>Explain what each of the following commands do:
* docker run
* docker rm
* docker ps
* docker build
* docker commit</summary><br><b>
</b></details>
<details>
<summary>How do you remove old, non running, containers?</summary><br><b>
</b></details>
##### Dockerfile
<details>
<summary>What is Dockerfile</summary><br><b>
</b></details>
<details> <details>
<summary>What is the difference between ADD and COPY in Dockerfile?</summary><br><b> <summary>What is the difference between ADD and COPY in Dockerfile?</summary><br><b>
</b></details> </b></details>
@ -1515,10 +1573,29 @@ you with more options/features compared to Docker Hub. One example is
Swarm management which means you can create new swarms in Docker Cloud. Swarm management which means you can create new swarms in Docker Cloud.
</b></details> </b></details>
<details>
<summary>Where Docker images are stored?</summary><br><b>
</b></details>
<details> <details>
<summary>Explain image layers</summary><br><b> <summary>Explain image layers</summary><br><b>
</b></details> </b></details>
<a name="docker-advanced"></a>
#### :star: Advanced
<details>
<summary>How do you manage persistent storage in Docker?</summary><br><b>
</b></details>
<details>
<summary>How can you connect from the inside of your container to the localhost of your host, where the container runs?</summary><br><b>
</b></details>
<details>
<summary>How do you copy files from Docker container to the host and vice versa?</summary><br><b>
</b></details>
## Kubernetes ## Kubernetes
<a name="kubernetes-beginner"></a> <a name="kubernetes-beginner"></a>
@ -1733,7 +1810,6 @@ Shortest way is: <code>my_string[::-1]</code> but it doesn't mean it's the most
* Radix Sort * Radix Sort
</b></details> </b></details>
<a name="python-advanced"></a> <a name="python-advanced"></a>
#### :star: Advanced #### :star: Advanced
@ -1939,6 +2015,27 @@ func main() {
</summary><br><b> </summary><br><b>
</b></details> </b></details>
<details>
<summary>The following block of code tries to convert the integer 101 to a string but instead we get "e". Why is that? How to fix it?
```
package main
import "fmt"
func main() {
var x int = 101
var y string
y = string(x)
fmt.Println(y)
}
```
</summary><br><b>
It looks what unicode value is set at 101 and uses it for converting the integer to a string.
If you want to get "101" you should use the package "strconv" and repalce <code>y = string(x)</code> with <code>y = strconv.Itoa(x)</code>
</b></details>
## Mongo ## Mongo
<a name="mongo-beginner"></a> <a name="mongo-beginner"></a>
@ -2339,10 +2436,6 @@ the pseudo table to retrieve the sum of the prices spent by each customer, then
<summary>What types of networks OpenStack supports?</summary><br><b> <summary>What types of networks OpenStack supports?</summary><br><b>
</b></details> </b></details>
<details>
<summary>How do you debug OpenStack networking issues? (tools, logs, ...)</summary><br><b>
</b></details>
<details> <details>
<summary>How do you debug OpenStack storage issues? (tools, logs, ...)</summary><br><b> <summary>How do you debug OpenStack storage issues? (tools, logs, ...)</summary><br><b>
</b></details> </b></details>
@ -2355,6 +2448,45 @@ the pseudo table to retrieve the sum of the prices spent by each customer, then
<summary>Are you familiar with TripleO? What benefits it has?</summary><br><b> <summary>Are you familiar with TripleO? What benefits it has?</summary><br><b>
</b></details> </b></details>
##### Networking
<details>
<summary>What is a provider network?</summary><br><b>
</b></details>
<details>
<summary>What components and services exist in L2 and L3?</summary><br><b>
</b></details>
<details>
<summary>What is the ML2 plug-in? Explain its architecture</summary><br><b>
</b></details>
<details>
<summary>What is the L2 agent? How it works and what is it responsible for?</summary><br><b>
</b></details>
<details>
<summary>What is the L3 agent? How it works and what is it responsible for?</summary><br><b>
</b></details>
<details>
<summary>Explain what the Metadata agent is responsible for</summary><br><b>
</b></details>
<details>
<summary>How do you debug OpenStack networking issues? (tools, logs, ...)</summary><br><b>
</b></details>
<a name="openstack-advanced"></a>
#### :baby: Advanced
##### Networking
<details>
<summary>Explain BGP dynamic routing</summary>
</b></details>
## Security ## Security
<a name="security-beginner"></a> <a name="security-beginner"></a>
@ -2384,6 +2516,50 @@ the pseudo table to retrieve the sum of the prices spent by each customer, then
<summary>What is Privilege Restriction?</summary><br><b> <summary>What is Privilege Restriction?</summary><br><b>
</b></details> </b></details>
## Puppet
<a name="puppet-beginner"></a>
#### :baby: Beginner
<details>
<summary>What is Puppet? How it works?</summary><br><b>
</b></details>
<details>
<summary>Explain Puppet architecture</summary><br><b>
</b><details>
<details>
<summary>Can you compare Puppet to other configuration management tools? Why did you chose to use Puppet?</summary><br><b>
</b></details>
<details>
<summary>Explain the following:
* Module
* Manifest
* Node</summary><br><b>
</b></details>
<details>
<summary>Explain Facter</summary><br><b>
</b></details>
<details>
<summary>What is MCollective?</summary><br><b>
</b></details>
<a name="puppet-advanced"></a>
#### :baby: Advanced
<details>
<summary>Do you have experience with writing modules? Which module have you created and for what?</summary><br><b>
</b></details>
<details>
<summary>Explain what is Hiera</summary><br><b>
</b></details>
## Scenarios ## Scenarios

BIN
images/puppet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB