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
: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 :)
@ -20,29 +21,30 @@
<table>
<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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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="#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>
<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="#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="#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="#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>
</table>
</center>
@ -60,6 +62,10 @@
<summary>What is DevOps? What DevOps helps us to achieve?</summary><br><b>
</b></details>
<details>
<summary>What are the anti-patterns of DevOps?</summary><br><b>
</b></details>
<details>
<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>
</b></details>
<details>
<summary>What are the anti-patterns of DevOps?</summary><br><b>
</b></details>
<details>
<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>
</b></details>
<details>
<summary>How do you manage dependencies?</summary><br><b>
</b></details>
<details>
<summary>Explain what are design patterns. Which design patterns are you familiar with?</summary><br><b>
</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>
#### :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>
<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>
</b></details>
<details>
<summary>What is a MAC address? What is it used for?</summary><br><b>
</b></details>
<details>
<summary>What is TTL?</summary><br><b>
</b></details>
@ -541,7 +551,7 @@ CSMA/CD algorithm:
</b></details>
<details>
<summary>What is ICMP?</summary><br><b>
<summary>What is ICMP? What is it used for?</summary><br><b>
</b></details>
<details>
@ -563,14 +573,30 @@ CSMA/CD algorithm:
<summary>What is Asymmetric Routing? How do deal with it?</summary><br><b>
</b></details>
<details>
<summary>What overlay (tunnel) protocols are you familiar with?</summary><br><b>
</b></details>
<details>
<summary>What is GRE? How it works?</summary><br><b>
</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>
<summary>Explain OSPF</summary><br><b>
</b></details>
<details>
<summary>Explain Spine & Leaf</summary><br><b>
</b></details>
<details>
<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
<details>
<summary>What is Docker? What are you using it for?</summary><br><b>
</b></details>
<details>
<summary>How containers are different from VMs?</summary><br><b>
@ -1460,7 +1490,11 @@ You should choose containers when:
</b></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 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>
<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>
<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>
</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>
<summary>What is the difference between ADD and COPY in Dockerfile?</summary><br><b>
</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.
</b></details>
<details>
<summary>Where Docker images are stored?</summary><br><b>
</b></details>
<details>
<summary>Explain image layers</summary><br><b>
</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
<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
</b></details>
<a name="python-advanced"></a>
#### :star: Advanced
@ -1939,6 +2015,27 @@ func main() {
</summary><br><b>
</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
<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>
</b></details>
<details>
<summary>How do you debug OpenStack networking issues? (tools, logs, ...)</summary><br><b>
</b></details>
<details>
<summary>How do you debug OpenStack storage issues? (tools, logs, ...)</summary><br><b>
</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>
</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
<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>
</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

BIN
images/puppet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB