Skip to content

Commit e6a8030

Browse files
author
abregman
committed
Add Terraform and Linux questions and exercises
Also updated the script that counts questions to actually update the number in README.md
1 parent a85e52e commit e6a8030

File tree

16 files changed

+533
-69
lines changed

16 files changed

+533
-69
lines changed

README.md

+41-24
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
:information_source:  This repo contains questions and exercises on various technical topics, sometimes related to DevOps and SRE
44

5-
:bar_chart:  There are currently **2538** exercises and questions
5+
:bar_chart:  There are currently **2557** exercises and questions
66

77
:warning:  You can use these for preparing for an interview but most of the questions and exercises don't represent an actual interview. Please read [FAQ page](faq.md) for more details
88

@@ -23,7 +23,7 @@
2323
<td align="center"><a href="topics/git/README.md"><img src="images/git.png" width="75px;" height="75px;" alt="Git"/><br /><b>Git</b></a></td>
2424
<td align="center"><a href="topics/ansible/README.md"><img src="images/ansible.png" width="75px;" height="75px;" alt="ansible"/><br /><b>Ansible</b></a></td>
2525
<td align="center"><a href="#network"><img src="images/network.png" width="75px;" height="75px;" alt="Network"/><br /><b>Network</b></a></td>
26-
<td align="center"><a href="topics/linux/README.md"><img src="images/logos/linux.png" width="75px;" height="75px;" alt="Linux"/><br /><b>Linux</b></a></td>
26+
2727

2828
</tr>
2929
<tr>
@@ -32,54 +32,62 @@
3232
<td align="center"><a href="https://github.com/bregman-arie/go-exercises"><img src="images/Go.png" width="75px;" height="75px;" alt="go"/><br /><b>Go</b></a></td>
3333
<td align="center"><a href="topics/shell/README.md"><img src="images/bash.png" width="75px;" height="75px;" alt="Bash"/><br /><b>Shell Scripting</b></a></td>
3434
<td align="center"><a href="topics/kubernetes/README.md"><img src="images/kubernetes.png" width="75px;" height="75px;" alt="kubernetes"/><br /><b>Kubernetes</b></a></td>
35-
<td align="center"><a href="#prometheus"><img src="images/prometheus.png" width="75px;" height="75px;" alt="Prometheus"/><br /><b>Prometheus</b></a></td>
35+
3636
</tr>
3737
<tr>
3838
<td align="center"><a href="topics/cloud/README.md"><img src="images/cloud.png" width="75px;" height="75px;" alt="Cloud"/><br /><b>Cloud</b></a></td>
3939
<td align="center"><a href="topics/aws/README.md"><img src="images/aws.png" width="100px;" height="75px;" alt="aws"/><br /><b>AWS</b></a></td>
4040
<td align="center"><a href="topics/azure/README.md"><img src="images/azure.png" width="75px;" height="75px;" alt="azure"/><br /><b>Azure</b></a></td>
4141
<td align="center"><a href="topics/gcp/README.md"><img src="images/googlecloud.png" width="70px;" height="70px;" alt="Google Cloud Platform"/><br /><b>Google Cloud Platform</b></a></td>
4242
<td align="center"><a href="#openstack"><img src="images/openstack.png" width="75px;" height="75px;" alt="openstack"/><br /><b>OpenStack</b></a></td>
43-
<td align="center"><a href="topics/security/README.md"><img src="images/security.png" width="75px;" height="75px;" alt="security"/><br /><b>Security</b></a></td>
4443
</tr>
4544
<tr>
4645
<td align="center"><a href="#operating-system"><img src="images/os.png" width="75px;" height="75px;" alt="Operating System"/><br /><b>Operating System</b></a></td>
4746
<td align="center"><a href="#monitoring"><img src="images/monitoring.png" width="75px;" height="75px;" alt="Monitoring"/><br /><b>Monitoring</b></a></td>
4847
<td align="center"><a href="#elastic"><img src="images/elastic.png" width="75px;" height="75px;" alt="Elastic"/><br /><b>Elastic</b></a></td>
4948
<td align="center"><a href="#virtualization"><img src="images/virtualization.png" width="75px;" height="75px;" alt="Virtualization"/><br /><b>Virtualization</b></a></td>
5049
<td align="center"><a href="topics/dns/README.md"><img src="images/dns.png" width="75px;" height="75px;" alt="DNS"/><br /><b>DNS</b></a></td>
51-
<td align="center"><a href="#Misc"><img src="images/general.png" width="75px;" height="75px;" alt="Misc"/><br /><b>Misc</b></a></td>
5250
</tr>
5351
<tr>
5452
<td align="center"><a href="#testing"><img src="images/testing.png" width="75px;" height="75px;" alt="Testing"/><br /><b>Testing</b></a></td>
5553
<td align="center"><a href="#databases"><img src="images/databases.png" width="75px;" height="75px;" alt="Databases"/><br /><b>Databases</b></a></td>
5654
<td align="center"><a href="#regex"><img src="images/regex.png" width="75px;" height="75px;" alt="RegEx"/><br /><b>Regex</b></a></td>
5755
<td align="center"><a href="#system-design"><img src="images/design.png" width="75px;" height="75px;" alt="Design"/><br /><b>System Design</b></a></td>
5856
<td align="center"><a href="#hardware"><img src="images/hardware.png" width="75px;" height="75px;" alt="Hardware"/><br /><b>Hardware</b></a></td>
59-
<td align="center"><a href="#big-data"><img src="images/big-data.png" width="75px;" height="75px;" alt="Big Data"/><br /><b>Big Data</b></a></td>
6057
</tr>
6158
<tr>
6259
<td align="center"><a href="#certificates"><img src="images/certificates.png" width="75px;" height="75px;" alt="Certificates"/><br /><b>Certificates</b></a></td>
6360
<td align="center"><a href="topics/containers/README.md"><img src="images/containers.png" width="75px;" height="75px;" alt="Containers"/><br /><b>Containers</b></a></td>
6461
<td align="center"><a href="#sql"><img src="images/sql.png" width="75px;" height="75px;" alt="sql"/><br /><b>SQL</b></a></td>
6562
<td align="center"><a href="topics/openshift/README.md"><img src="images/openshift.png" width="75px;" height="75px;" alt="OpenShift"/><br /><b>OpenShift</b></a></td>
6663
<td align="center"><a href="#storage"><img src="images/storage.png" width="75px;" height="75px;" alt="Storage"/><br /><b>Storage</b></a></td>
67-
<td align="center"><a href="topics/soft_skills/README.md"><img src="images/HR.png" width="75px;" height="75px;" alt="HR"/><br /><b>Soft Skills</b></a></td>
6864
</tr>
6965
<tr>
7066
<td align="center"><a href="topics/terraform/README.md"><img src="images/terraform.png" width="75px;" height="75px;" alt="Terraform"/><br /><b>Terraform</b></a></td>
7167
<td align="center"><a href="#mongo"><img src="images/mongo.png" width="75px;" height="75px;" alt="Mongo"/><br /><b>Mongo</b></a></td>
7268
<td align="center"><a href="#puppet"><img src="images/puppet.png" width="75px;" height="75px;" alt="puppet"/><br /><b>Puppet</b></a></td>
7369
<td align="center"><a href="#distributed"><img src="images/distributed.png" width="75px;" height="75px;" alt="Distributed"/><br /><b>Distributed</b></a></td>
7470
<td align="center"><a href="#questions-you-ask"><img src="images/you.png" width="75px;" height="75px;" alt="you"/><br /><b>Questions you can ask</b></a></td>
75-
<td align="center"><a href="topics/perl/README.md"><img src="images/perl.png" width="75px;" height="75px;" alt="perl"/><br /><b>Perl</b></a></td>
7671
</tr>
7772
<tr>
7873
<td align="center"><a href="topics/circleci/README.md"><img src="images/logos/circleci.png" width="70px;" height="70px;" alt="Circle CI"/><br /><b>Circle CI</b></a></td>
7974
<td align="center"><a href="topics/argo/README.md"><img src="images/logos/argo.png" width="80px;" height="80px;" alt="Argo"/><br /><b>Argo</b></a></td>
80-
<td align="center"><a href="topics/kafka/README.md"><img src="images/logos/kafka.png" width="70px;" height="80px;" alt="Kafka"/><br /><b>Kafka</b></a></td>
75+
<td align="center"><a href="topics/kafka/README.md"><img src="images/logos/kafka.png" width="85px;" height="80px;" alt="Kafka"/><br /><b>Kafka</b></a></td>
8176
<td align="center"><a href="topics/datadog/README.md"><img src="images/logos/datadog.png" width="80px;" height="80px;" alt="DataDog"/><br /><b></b></a></td>
77+
<td align="center"><a href="topics/perl/README.md"><img src="images/perl.png" width="75px;" height="75px;" alt="perl"/><br /><b>Perl</b></a></td>
8278
</tr>
79+
<tr>
80+
<td align="center"><a href="topics/linux/README.md"><img src="images/logos/linux.png" width="75px;" height="75px;" alt="Linux"/><br /><b>Linux</b></a></td>
81+
<td align="center"><a href="#prometheus"><img src="images/prometheus.png" width="75px;" height="75px;" alt="Prometheus"/><br /><b>Prometheus</b></a></td>
82+
<td align="center"><a href="#big-data"><img src="images/big-data.png" width="75px;" height="75px;" alt="Big Data"/><br /><b>Big Data</b></a></td>
83+
<td align="center"><a href="topics/soft_skills/README.md"><img src="images/HR.png" width="75px;" height="75px;" alt="HR"/><br /><b>Soft Skills</b></a></td>
84+
<td align="center"><a href="topics/security/README.md"><img src="images/security.png" width="75px;" height="75px;" alt="security"/><br /><b>Security</b></a></td>
85+
</tr>
86+
<tr>
87+
<td align="center"><a href="topics/chaos_engineering/README.md"><img src="images/logos/chaos_engineering.png" width="75px;" height="75px;" alt="Chaos Engineering"/><br /><b>Chaos Engineering</b></a></td>
88+
<td align="center"><a href="#Misc"><img src="images/general.png" width="75px;" height="75px;" alt="Misc"/><br /><b>Misc</b></a></td>
89+
</tr>
90+
8391
</table>
8492
</center>
8593
<!-- markdownlint-enable -->
@@ -89,35 +97,28 @@
8997
## Network
9098

9199
<details>
92-
<summary>What do you need in order to communicate?</summary><br><b>
100+
<summary>In general, what do you need in order to communicate?</summary><br><b>
93101

94102
- A common language (for the two ends to understand)
95103
- A way to address who do you want to communicate with
96104
- A Connection (so the content of the communication can reach the recipients)
105+
97106
</b></details>
98107

99108
<details>
100109
<summary>What is TCP/IP?</summary><br><b>
101110

102111
A set of protocols that define how two or more devices can communicate with each other.
103-
To learn more about TCP/IP, read [here](http://www.penguintutor.com/linux/basic-network-reference)
104-
</b></details>
105112

106-
<details>
107-
<summary>What is APIPA?</summary><br><b>
108-
APIPA is a set of it addresses that devices are allocated
109-
when the main DHCP server is not reachable
110-
</b></details>
113+
To learn more about TCP/IP, read [here](http://www.penguintutor.com/linux/basic-network-reference)
111114

112-
<details>
113-
<summary>What ip range does APIPA use?</summary><br><b>
114-
APIPA uses the ip range: 169.254.0.1 - 169.254.255.254.
115115
</b></details>
116116

117117
<details>
118118
<summary>What is Ethernet?</summary><br><b>
119119

120120
Ethernet simply refers to the most common type of Local Area Network (LAN) used today. A LAN—in contrast to a WAN (Wide Area Network), which spans a larger geographical area—is a connected network of computers in a small area, like your office, college campus, or even home.
121+
121122
</b></details>
122123

123124
<details>
@@ -416,7 +417,22 @@ For example, your computer's private IP could be 192.168.1.100, but your router
416417
<summary>Which factors affect network performances</summary><br><b>
417418
</b></details>
418419

419-
#### Network - Data and Control planes
420+
<details>
421+
<summary>What is APIPA?</summary><br><b>
422+
423+
APIPA is a set of it addresses that devices are allocated
424+
when the main DHCP server is not reachable
425+
426+
</b></details>
427+
428+
<details>
429+
<summary>What ip range does APIPA use?</summary><br><b>
430+
431+
APIPA uses the ip range: 169.254.0.1 - 169.254.255.254.
432+
433+
</b></details>
434+
435+
#### Control Plane and Data Plane
420436

421437
<details>
422438
<summary>What "control plane" refers to?</summary><br><b>
@@ -2887,9 +2903,8 @@ Google Drive
28872903
<summary>Explain MBR</summary><br><b>
28882904
</b></details>
28892905

2890-
## Questions you CAN ask
2891-
28922906
<a name="questions-you-ask"></a>
2907+
## Questions you CAN ask
28932908

28942909
A list of questions you as a candidate can ask the interviewer during or after the interview.
28952910
These are only a suggestion, use them carefully. Not every interviewer will be able to answer these (or happy to) which should be perhaps a red flag warning for your regarding working in such place but that's really up to you.
@@ -3679,7 +3694,9 @@ If you are looking for a way to prepare for a certain exam this is the section f
36793694

36803695
* [Certified Kubernetes Administrator (CKA)](topics/kubernetes/CKA.md) (Latest update: 2022)
36813696

3682-
## Other DevOps Projects
3697+
## Additional DevOps and SRE Projects
3698+
3699+
<p align="center"><a href="https://github.com/bregman-arie/sre-checklist"><img width="500px" src="images/sre_checklist.png"/></a></p>
36833700

36843701
<p align="center"><a href="https://github.com/bregman-arie/howtheydevops"><img src="images/how_they_devops.png"/></a></p>
36853702
<p align="center"><a href="https://github.com/bregman-arie/devops-resources"><img src="images/devops_resources.png"/></a></p>

images/logos/chaos_engineering.png

10.9 KB
Loading

images/sre_checklist.png

21.8 KB
Loading

scripts/count_questions.sh

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
11
#!/usr/bin/env bash
22

3-
echo $(( $(grep -E "\[Exercise\]|</summary>" -c README.md topics/*/README.md | awk -F: '{ s+=$2 } END { print s }' )))
3+
set -eu
4+
5+
count=$(echo $(( $(grep -E "\[Exercise\]|</summary>" -c README.md topics/*/README.md | awk -F: '{ s+=$2 } END { print s }' ))))
6+
7+
echo "There are $count questions and exercises"
8+
9+
sed -i "s/currently \*\*[0-9]*\*\*/currently \*\*$count\\**/" README.md

topics/chaos_engineering/README.md

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Chaos Engineering
2+
3+
- [Chaos Engineering](#chaos-engineering)
4+
- [Chaos Engineering Questions](#chaos-engineering-questions)
5+
- [Basics](#basics)
6+
7+
## Chaos Engineering Questions
8+
9+
### Basics
10+
11+
<details>
12+
<summary>What is Chaos Engineering?</summary><br><b>
13+
14+
[Wikipedia](https://en.wikipedia.org/wiki/Chaos_engineering): "Chaos Engineering is the discipline of experimenting on a system in order to build confidence in the system's capability to withstand turbulent conditions in production."
15+
16+
[TechTarget](https://www.techtarget.com/searchitoperations/definition/chaos-engineering): "Chaos engineering is the process of testing a distributed computing system to ensure that it can withstand unexpected disruptions."
17+
18+
</b></details>
19+
20+
<details>
21+
<summary>What's a typical Chaos Engineering workflow?</summary><br><b>
22+
23+
According to [Gremlin](gremlin.com) there are three steps:
24+
25+
1. Planning an experiment where you design and choose a scenario in which your system should fail to operate properly
26+
2. You execute the smallest possible experiment to test your theory
27+
3. If nothing goes wrong, you scale your experiment and make the blast radius bigger. If your system breaks, you better understand why and start dealing with it
28+
29+
The process then repeats itself either with same scenario or a new one.
30+
31+
</b></details>

topics/linux/README.md

+75-43
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,69 @@
22

33
## Linux Master Application
44

5-
A completely free application for testing your knowledge on Linux
6-
7-
<a href="https://play.google.com/store/apps/details?id=com.codingshell.linuxmaster"><img src="images/linux_master.jpeg"/></a>
8-
9-
## Linux Self Assessment
10-
11-
* [Linux 101](#questions-linux-101)
12-
* [Linux I/O Redirection](#questions-linux-redirection)
13-
* [Linux Filesystem Hierarchy Standard](#questions-linux-fhs)
14-
* [Linux Permissions](#questions-linux-permissions)
15-
* [Linux Scenarios](#questions-linux-scenarios)
16-
* [Linux Systemd](#questions-linux-systemd)
17-
* [Linux Troubleshooting and Debugging](#questions-linux-troubleshooting)
18-
* [Linux kernel](#questions-linux-kernel)
19-
* [Linux SSH](#questions-linux-ssh)
20-
* [Linux Globbing and Wildcards](#questions-linux-wildcards)
21-
* [Linux Boot Process](#questions-linux-boot)
22-
* [Linux Disk and Filesystem](#questions-linux-disk-fs)
23-
* [Linux Performance Analysis](#questions-linux-performance-analysis)
24-
* [Linux Processes](#questions-linux-processes)
25-
* [Linux Security](#questions-linux-security)
26-
* [Linux Networking](#questions-linux-networking)
27-
* [Linux DNS](#questions-linux-dns)
28-
* [Linux Packaging](#questions-linux-packaging)
29-
* [Linux DNF](#questions-linux-dnf)
30-
* [Linux Applications and Services](#questions-linux-apps-and-services)
31-
* [Linux Users and Groups](#questions-linux-users-and-groups)
32-
* [Linux Hardware](#questions-linux-hardware)
33-
* [Linux Namepsaces](#questions-linux-namespaces)
34-
* [Linux Virtualization](#questions-linux-virtualization)
35-
* [Linux AWK](#questions-linux-awk)
36-
* [Linux System Calls](#questions-linux-system-calls)
37-
* [Linux Filesystem and Files](#questions-linux-fs-files)
38-
* [Linux Advanced Networking](#questions-linux-advanced-networking)
39-
* [Linux Memory](#questions-linux-memory)
40-
* [Linux Distributions](#questions-linux-distributions)
41-
* [Linux Sed](#questions-linux-sed)
42-
* [Linux Misc](#questions-linux-misc)
43-
44-
<a name="questions-linux-101"></a>
5+
A completely free application for testing your knowledge on Linux.
6+
Desclaimer: developed by repository owner
7+
8+
<a href="https://play.google.com/store/apps/details?id=com.codingshell.linuxmaster"><img src="../../images/linux_master.jpeg"/></a>
9+
10+
- [Linux](#linux)
11+
- [Linux Master Application](#linux-master-application)
12+
- [Linux Exercises](#linux-exercises)
13+
- [Basics](#basics)
14+
- [Misc](#misc)
15+
- [Linux Questions](#linux-questions)
16+
- [Linux 101](#linux-101)
17+
- [I/O Redirection](#io-redirection)
18+
- [Filesystem Hierarchy Standard](#filesystem-hierarchy-standard)
19+
- [Permissions](#permissions)
20+
- [Scenarios](#scenarios)
21+
- [Systemd](#systemd)
22+
- [Troubleshooting and Debugging](#troubleshooting-and-debugging)
23+
- [Scenarios](#scenarios-1)
24+
- [Kernel](#kernel)
25+
- [SSH](#ssh)
26+
- [Globbing & Wildcards](#globbing--wildcards)
27+
- [Boot Process](#boot-process)
28+
- [Disk and Filesystem](#disk-and-filesystem)
29+
- [Performance Analysis](#performance-analysis)
30+
- [Processes](#processes)
31+
- [Security](#security)
32+
- [Networking](#networking)
33+
- [DNS](#dns)
34+
- [Packaging](#packaging)
35+
- [DNF](#dnf)
36+
- [Applications and Services](#applications-and-services)
37+
- [Users and Groups](#users-and-groups)
38+
- [Hardware](#hardware)
39+
- [Namespaces](#namespaces)
40+
- [Virtualization](#virtualization)
41+
- [AWK](#awk)
42+
- [System Calls](#system-calls)
43+
- [Filesystem & Files](#filesystem--files)
44+
- [Advanced Networking](#advanced-networking)
45+
- [Memory](#memory)
46+
- [Distributions](#distributions)
47+
- [Sed](#sed)
48+
- [Misc](#misc-1)
49+
50+
## Linux Exercises
51+
52+
### Basics
53+
54+
|Name|Topic|Objective & Instructions|Solution|Comments|
55+
|--------|--------|------|----|----|
56+
| Navigation | cd, pwd | [Exercise](exercises/navigation/README.md) | [Solution](exercises/navigation/solution.md)
57+
| Create and Destroy | touch, rm, mkdir | [Exercise](exercises/create_remove/README.md) | [Solution](exercises/create_remove/solution.md)
58+
| Copy Time | touch, cp, ls | [Exercise](exercises/copy/README.md) | [Solution](exercises/copy/solution.md)
59+
60+
### Misc
61+
62+
|Name|Topic|Objective & Instructions|Solution|Comments|
63+
|--------|--------|------|----|----|
64+
| Unique Count | | [Exercise](exercises/uniqe_count/README.md) | [Solution](exercises/uniqe_count/solution.md)
65+
66+
## Linux Questions
67+
4568
### Linux 101
4669

4770
<details>
@@ -50,6 +73,7 @@ A completely free application for testing your knowledge on Linux
5073
[Wikipedia](https://en.wikipedia.org/wiki/Linux): "Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged in a Linux distribution."
5174

5275
[Red Hat](https://www.redhat.com/en/topics/linux/what-is-linux): "Linux® is an open source operating system (OS). An operating system is the software that directly manages a system’s hardware and resources, like CPU, memory, and storage. The OS sits between applications and hardware and makes the connections between all of your software and the physical resources that do the work."
76+
5377
</b></details>
5478

5579
<details>
@@ -479,8 +503,7 @@ To stop a service: `systemctl stop <service name>`
479503
<summary>Describe how to make a certain process/app a service</summary><br><b>
480504
</b></details>
481505

482-
<a name="questions-linux-troubleshooting"></a>
483-
### Troubleshooting & Debugging
506+
### Troubleshooting and Debugging
484507

485508
<details>
486509
<summary>Where system logs are located?</summary><br><b>
@@ -551,7 +574,16 @@ tail -f <file_name>
551574
<summary>How you measure time execution of a program?</summary><br><b>
552575
</b></details>
553576

554-
<a name="questions-linux-kernel"></a>
577+
#### Scenarios
578+
579+
<details>
580+
<summary>You have a process writing to a file. You don't know which process exactly, you just know the path of the file. You would like to kill the process as it's no longer needed. How would you achieve it?</summary><br><b>
581+
582+
1. Run `lsof <FILE_PATH>`
583+
2. Use the pid (process ID) from the lsof command and run `kill <PID>`
584+
585+
</b></details>
586+
555587
### Kernel
556588

557589
<details>

0 commit comments

Comments
 (0)