Extend prepare_for_interview file
This commit is contained in:
parent
d0a768915a
commit
74da454ada
69
README.md
69
README.md
@ -2,12 +2,14 @@
|
||||
|
||||
:information_source: This repository contains questions on various DevOps and SRE related topics
|
||||
|
||||
:bar_chart: There are currently **596** questions
|
||||
:bar_chart: There are currently **605** questions
|
||||
|
||||
:books: To learn more about DevOps check the resources in [DevOpsBit.com](https://devopsbit.com)
|
||||
|
||||
:warning: The purpose of this repo is to help you test your knowledge and prepare for interviews. It doesn't represents a DevOps interview. Please read [Q&A](common-qa.md) for more details
|
||||
|
||||
:thought_balloon: If you wonder how to prepare to your DevOps Interview, we added a couple of suggestions [here](prepare_for_interview.md)
|
||||
|
||||
:pencil: You can add more questions & answers by submitting pull requests :) You can read more about it [here](CONTRIBUTING.md)
|
||||
|
||||
:cn: You can find a [中文](README-zh_CN.md) Chinese translation right [here](README-zh_CN.md)
|
||||
@ -53,6 +55,7 @@
|
||||
<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="#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="#general"><img src="images/general.png" width="110px;" height="75px;" alt="General"/><br /><b>General</b></a></td>
|
||||
<td align="center"><a href="#scenarios"><img src="images/scenarios.png" width="110px;" height="75px;" alt="Scenarios"/><br /><b>Scenarios</b></a></td>
|
||||
</tr>
|
||||
@ -1137,6 +1140,12 @@ Soft links can be created between different file systems while hard link can be
|
||||
|
||||
##### 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>
|
||||
<summary>How to run a process in the background and why to do that in the first place?</summary><br><b>
|
||||
|
||||
@ -1150,7 +1159,7 @@ execution or run forever
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
<summary>What signal is used when you run 'kill <process id>'?</summary><br><b>
|
||||
<summary>What signal is used by default when you run 'kill <process id>'?</summary><br><b>
|
||||
<pre>
|
||||
The default signal is SIGTERM (15). This signal kills
|
||||
process gracefully which means it allows it to save current
|
||||
@ -1183,11 +1192,12 @@ To view all available signals run `kill -l`
|
||||
<details>
|
||||
<summary>What are the possible states of a process in Linux?</summary><br><b>
|
||||
<pre>
|
||||
Running
|
||||
Waiting
|
||||
Stopped
|
||||
Terminated
|
||||
Zombie
|
||||
Running (R)
|
||||
Uninterruptible Sleep (D) - The process is waiting for I/O
|
||||
Interruptible Sleep (S)
|
||||
Stopped (T)
|
||||
Dead (x)
|
||||
Zombie (z)
|
||||
</pre>
|
||||
</b></details>
|
||||
|
||||
@ -1441,6 +1451,10 @@ These system calls are reading the file <code>/my/file</code> and 5 is the file
|
||||
<summary>What is the difference between a process and a thread?</summary><br><b>
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
<summary>You found there is a server with high CPU load but you didn't find a process with high CPU. How is that possible?</summary><br><b>
|
||||
</b></details>
|
||||
|
||||
##### Network
|
||||
|
||||
<details>
|
||||
@ -1501,6 +1515,15 @@ This is a good article about the topic: https://ops.tips/blog/how-linux-creates-
|
||||
<summary>You executed a script and while still running, it got accidentally removed. Is it possible to restore the script while it's still running?</summary><br><b>
|
||||
</b></details>
|
||||
|
||||
## Virtualization
|
||||
|
||||
<details>
|
||||
<summary>Explain what is Virtualization</summary><br><b>
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
<summary>What is "time sharing"?</summary><br><b>
|
||||
</b></details>
|
||||
|
||||
## Ansible
|
||||
|
||||
@ -2168,6 +2191,27 @@ The average performance of the above algorithm is O(log n). Best performance can
|
||||
<summary>Name 3 design patterns. Do you know how to implement (= provide an example) these design pattern in any language you'll choose?</summary><br><b>
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
<summary>Given an array/list of integers, find 3 integers which are adding up to 0 (in any language you would like)</summary><br><b>
|
||||
|
||||
```
|
||||
def find_triplets_sum_to_zero(li):
|
||||
li = sorted(li)
|
||||
for i, val in enumerate(li):
|
||||
low, up = 0, len(li)-1
|
||||
while low < i < up:
|
||||
tmp = var + li[low] + li[up]
|
||||
if tmp > 0:
|
||||
up -= 1
|
||||
elif tmp < 0:
|
||||
low += 1
|
||||
else:
|
||||
yield li[low], val, li[up]
|
||||
low += 1
|
||||
up -= 1
|
||||
```
|
||||
</b></details>
|
||||
|
||||
## Python
|
||||
|
||||
<a name="python-beginner"></a>
|
||||
@ -4191,10 +4235,19 @@ In general the process is as follows:
|
||||
|
||||
<details>
|
||||
<summary>What types of DNS records are there?</summary><br><b>
|
||||
|
||||
* A
|
||||
* PTR
|
||||
* MX
|
||||
* AAAA
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
<summary>What is a "A record"?</summary><br><b>
|
||||
<summary>What is a A record?</summary><br><b>
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
<summary>What is a AAAA record?</summary><br><b>
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
|
17
common-qa.md
17
common-qa.md
@ -29,7 +29,13 @@ With that being said, there are some concepts, tools, platforms, ... that are qu
|
||||
Excellent question. This repository alone will not be enough in many cases. We are exploring the answer to this question [here](prepare_for_interview.md)
|
||||
If you have any ideas, insights, questions, ... please contribute :)
|
||||
|
||||
### Why there are no answers to most of the questions?
|
||||
### How do I become a better DevOps Engineer?
|
||||
|
||||
That's even a better question than the previous one.
|
||||
I don't know to answer this but what I feel works for me is to read, practice and share. One of the reasons this project was created.
|
||||
I've gathered some resources, on different topics, [here](http://devopsbit.com/devops-resources)
|
||||
|
||||
### Why most of the questions don't have answers?
|
||||
|
||||
Because we need more contributors ;)<br>
|
||||
Also because the maintainer really likes to ask questions and less answering them.
|
||||
@ -42,10 +48,15 @@ Well, from everywhere - past experience, colleagues, contributors, ... But we do
|
||||
|
||||
It's a hard question and the reason is that if you'll ask 20 different people, you'll probably get at least 10 different answers but here what you can check and see for yourself if going over jobs postings:
|
||||
|
||||
* DevOps require you good understanding of operating system concepts - the level required is mainly depends on the company
|
||||
* Coding is part of DevOps - the level again depends on the company. Some will require you to know basic level of scripting while others deep understanding of common aalgorithms, data structure, etc.
|
||||
* DevOps require you good understanding of operating system concepts. The level required is mainly depends on the company
|
||||
* Coding is part of DevOps. The level again depends on the company. Some will require you to know basic level of scripting while others deep understanding of common algorithms, data structure, design patterns etc.
|
||||
* Cloud and Containers - while not 100% must in all companies/positions, this skill is on the rise every year and many (if not most) of the positions/companies require this skill. This specifically means: AWS/Azure/GCP, Docker, Kubernetes, ...
|
||||
|
||||
### I feel like there are some questions that shouldn't be included in this project
|
||||
|
||||
Is that a question?
|
||||
In any case, if you don't like some/most of the questions or think that some questions should be removed you can open an issue or submit a PR and we can discuss it there :)
|
||||
|
||||
### Can I add questions and/or answers to this project?
|
||||
|
||||
I'll simply imagine you didn't ask that on an open source project...
|
||||
|
@ -2,15 +2,15 @@
|
||||
|
||||
Note: the following suggestions are opinionated
|
||||
|
||||
### Prepare by answering interview questions
|
||||
|
||||
Make a sample list of interview questions on different topics: technical, company, role, ... and try to answer them. See if you can manage answering them in a fluent, detailed way.
|
||||
|
||||
### Coding
|
||||
|
||||
Some (if not most) DevOps interviews include coding tasks/questions. Be prepared for those by doing actual coding.
|
||||
Also, the following probably clear to most people but still, when given the chance to choose any language for answering questions or coding tasks, choose the one you have experience with and not the one the company is using or you think it's using.
|
||||
|
||||
### Prepare by answering interview questions
|
||||
|
||||
Make a sample list of interview questions on different topics: technical, company, role, ... and try to answer them. See if you can manage answering them in a fluent, detailed way.
|
||||
|
||||
### Know your resume
|
||||
|
||||
It may sounds strange but the idea here is simple: be ready to answer any question regarding any line you included in your resume.
|
||||
@ -28,6 +28,8 @@ Be familiar with the company you are interviewing at. Some ideas:
|
||||
|
||||
From my experience this is not done by many candidates but it's one of the best ways to deep dive into topics like operating system, virtualization, scale, distributed systems, ...
|
||||
|
||||
In most cases, you will do fine with reading books but for the AAA interviews (hardest level) you'll want to read some books and overall, if you inspire to be better DevOps Engineer, books is a great way.
|
||||
|
||||
### Scenarios
|
||||
|
||||
This is a very common way to interview today for DevOps roles. The candidate is given a task which represents a common task of DevOps Engineers or common knowledge and the candidate has several hours or days to accomplish the task.<br>
|
||||
@ -37,3 +39,30 @@ This is a great way to prepare to interviews and I recommend to try it out befor
|
||||
"Knowledge in CI/CD" -> Scenario: create a CI/CD pipeline for a project.
|
||||
|
||||
At this point some people ask: "but what project? I'm not working right now" and the answer is: what about GitHub? it has only 9125912851285192 projects...and a free way to set up CI to any of them.
|
||||
|
||||
Let's convert another scenario:
|
||||
|
||||
"Experience with provisioning servers" -> Scenario: provision a server (to make it more interesting, create
|
||||
|
||||
And the last example:
|
||||
|
||||
"Experience with scripting" -> Scenario: write a script which helps to accomplish some of the DevOps goals. For example, a script for generating Travis YAML for projects based on their content. If you need more ideas, open an issue and we'll help!
|
||||
|
||||
### Start your own DevOps project
|
||||
|
||||
Starting a DevOps is a good idea because:
|
||||
|
||||
* It will make you practice coding
|
||||
* It will be something you can add to your resume and talk about with the interviewer
|
||||
* Depends on size and complexity, it can teach you a thing or two about design
|
||||
* Depends on adoption, it can you teach you a lot about managing Open Source projects
|
||||
|
||||
### Consider starting in non-DevOps position
|
||||
|
||||
Landing DevOps as a first position can be challenging. No, it's not impossible but still, since DevOps covers many different practices, tools, ... it can be quite challanging.
|
||||
|
||||
A possible path to become a DevOps engineer is to start with actually a different position and switch from there. Some ideas:
|
||||
|
||||
* Linux System Administrator - This is perfect because every DevOps Engineer should have solid understanding of the OS.
|
||||
* Software Developer/Engineer - A DevOps should have coding skills and this position will provide more than the required knowledge
|
||||
* QA Engineer - This is more tricky one because IMHO there are less overlapping areas/skills with DevOps Engineer but some people done it so it's not impossible :)
|
||||
|
Loading…
Reference in New Issue
Block a user