999 questions
It's quite amazing to reach this number of questions. A project which started with just a few questions and the modest goal of helping others to learn, being able to assess their level of knowledge and prepare better for interviews. Thanks to all of our amazing contributors. To anyone who let us know how this project was helpful for them. It's good to hear how one tiny project can make positive impact on people's life. See you at 9999 questions ;)
This commit is contained in:
parent
464cfc506b
commit
60243ff485
514
README.md
514
README.md
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
:information_source: This repo contains questions and exercises on various technical topics, sometimes related to DevOps and SRE :)
|
:information_source: This repo contains questions and exercises on various technical topics, sometimes related to DevOps and SRE :)
|
||||||
|
|
||||||
:bar_chart: There are currently **950** questions
|
:bar_chart: There are currently **999** questions
|
||||||
|
|
||||||
: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 [Q&A](common-qa.md) for more details
|
: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 [Q&A](common-qa.md) for more details
|
||||||
|
|
||||||
@ -329,10 +329,10 @@ Note: cross-dependency is when you have two or more changes to separate projects
|
|||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Are you familiar with "The Cathedral and the Bazaar"? Explain each of the models</summary><br><b>
|
<summary>Are you familiar with "The Cathedral and the Bazaar models"? Explain each of the models</summary><br><b>
|
||||||
|
|
||||||
* Cathedral - source code released when software is released
|
* Cathedral - source code released when software is released
|
||||||
* Bazaar - source code is always available publicly
|
* Bazaar - source code is always available publicly (e.g. Linux Kernel)
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
## Jenkins
|
## Jenkins
|
||||||
@ -1209,8 +1209,8 @@ An open question. Answer based on your real experience. You can highlight one or
|
|||||||
* rmdir (can you achieve the same result by using <code>rm</code>?)
|
* rmdir (can you achieve the same result by using <code>rm</code>?)
|
||||||
* grep
|
* grep
|
||||||
* wc
|
* wc
|
||||||
* curl
|
|
||||||
* touch
|
* touch
|
||||||
|
* whoami
|
||||||
* man
|
* man
|
||||||
* nslookup or dig
|
* nslookup or dig
|
||||||
* pwd
|
* pwd
|
||||||
@ -1221,8 +1221,8 @@ An open question. Answer based on your real experience. You can highlight one or
|
|||||||
* rmdir - remove directories but you should mention it's possible to use rm for that
|
* rmdir - remove directories but you should mention it's possible to use rm for that
|
||||||
* grep - print lines that match patterns. Could be nice to mention -v, -r, -E flags
|
* grep - print lines that match patterns. Could be nice to mention -v, -r, -E flags
|
||||||
* wc - print newline, word, and byte counts
|
* wc - print newline, word, and byte counts
|
||||||
* curl - tranfer a URL or mention common usage like downloading files, API calls, ...
|
|
||||||
* touch - update timestamps but common usage is to create files
|
* touch - update timestamps but common usage is to create files
|
||||||
|
* whoami - current logged-in user
|
||||||
* man - reference manuals
|
* man - reference manuals
|
||||||
* nslookup or dig - query nameservers
|
* nslookup or dig - query nameservers
|
||||||
* pwd - print working directory
|
* pwd - print working directory
|
||||||
@ -1239,6 +1239,20 @@ An open question. Answer based on your real experience. You can highlight one or
|
|||||||
* cd -</summary><br><b>
|
* cd -</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>How to rename the name of a file or a directory?</summary><br><b>
|
||||||
|
|
||||||
|
mv command.
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Explain each field in the output of `ls -l` command</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What are hidden files/directories? How to list them?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Running the command <code>df</code> you get "command not found". What could be wrong and how to fix it?</summary><br><b>
|
<summary>Running the command <code>df</code> you get "command not found". What could be wrong and how to fix it?</summary><br><b>
|
||||||
</b>
|
</b>
|
||||||
@ -1276,9 +1290,9 @@ Alternatively if you are using a distro with systemd it's recommended to use sys
|
|||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Have you scheduled tasks in the past? What kind of tasks?</summary><br><b>
|
<summary>How to check which commands you executed in the past?</summary><br><b>
|
||||||
|
|
||||||
Normally you will schedule batch jobs.
|
history command or .bash_history file
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
##### Permissions
|
##### Permissions
|
||||||
@ -1304,6 +1318,10 @@ Using the `chmod` command.
|
|||||||
</pre>
|
</pre>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What this command does? <code>chmod +x some_file</code></summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Explain what is setgid and setuid</summary><br><b>
|
<summary>Explain what is setgid and setuid</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
@ -1312,6 +1330,14 @@ Using the `chmod` command.
|
|||||||
<summary>What is the purpose of sticky bit?</summary><br><b>
|
<summary>What is the purpose of sticky bit?</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What the following commands do?
|
||||||
|
|
||||||
|
* chmod
|
||||||
|
* chown
|
||||||
|
* chgrp</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>You try to delete a file but it fails. Name at least three different reason as to why it could happen</summary><br><b>
|
<summary>You try to delete a file but it fails. Name at least three different reason as to why it could happen</summary><br><b>
|
||||||
|
|
||||||
@ -1347,10 +1373,6 @@ Hardware -> Kernel -> <u>Daemons</u>, System Libraries, Server Display.
|
|||||||
<summary>Describe how to make a certain process/app a service</summary><br><b>
|
<summary>Describe how to make a certain process/app a service</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>How do you kill a process in D state?</summary><br><b>
|
|
||||||
</b></details>
|
|
||||||
|
|
||||||
##### Debugging (Beginner)
|
##### Debugging (Beginner)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -1428,10 +1450,6 @@ Hardware -> Kernel -> <u>Daemons</u>, System Libraries, Server Display.
|
|||||||
<summary>Explain user space and kernel space</summary><br><b>
|
<summary>Explain user space and kernel space</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>Wildcards are implemented on user or kernel space?</summary><br><b>
|
|
||||||
</b></details>
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>What is KVM?</summary><br><b>
|
<summary>What is KVM?</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
@ -1452,10 +1470,38 @@ Hardware -> Kernel -> <u>Daemons</u>, System Libraries, Server Display.
|
|||||||
<summary>Explain redirection</summary><br><b>
|
<summary>Explain redirection</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
#### Linux - Globbing, Wildcards
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What is Globbing?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>What are wildcards? Can you give an example of how to use them?</summary><br><b>
|
<summary>What are wildcards? Can you give an example of how to use them?</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Explain what will <code>ls [XYZ]</code> match</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Explain what will <code>ls [^XYZ]</code> match</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Explain what will <code>ls [0-5]</code> match</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What each of the following matches
|
||||||
|
|
||||||
|
* ?
|
||||||
|
* *</summary><br><b>
|
||||||
|
|
||||||
|
* The ? matches any single character
|
||||||
|
* The * matches zero or more characters
|
||||||
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>What do we grep for in each of the following commands?:
|
<summary>What do we grep for in each of the following commands?:
|
||||||
|
|
||||||
@ -1469,6 +1515,14 @@ Hardware -> Kernel -> <u>Daemons</u>, System Libraries, Server Display.
|
|||||||
3. Lines which end with a number
|
3. Lines which end with a number
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What is the difference single and double quotes?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What is escaping? What escape character is used for escaping?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Tell me everything you know about the Linux boot process</summary><br><b>
|
<summary>Tell me everything you know about the Linux boot process</summary><br><b>
|
||||||
|
|
||||||
@ -1605,6 +1659,7 @@ True
|
|||||||
* /tmp
|
* /tmp
|
||||||
* /var/log
|
* /var/log
|
||||||
* /bin
|
* /bin
|
||||||
|
* /home
|
||||||
* /usr/local
|
* /usr/local
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
@ -1673,6 +1728,10 @@ Zombie (z)
|
|||||||
</pre>
|
</pre>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>How do you kill a process in D state?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>What is a zombie process?</summary><br><b>
|
<summary>What is a zombie process?</summary><br><b>
|
||||||
|
|
||||||
@ -1740,10 +1799,6 @@ You can use the commands <code>top</code> and <code>free</code>
|
|||||||
The ls executable is built for an incompatible architecture.
|
The ls executable is built for an incompatible architecture.
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>What is escaping? What escape character is used for escaping?</summary><br><b>
|
|
||||||
</b></details>
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>How would you split a 50 lines file into 2 files of 25 lines each?</summary><br><b>
|
<summary>How would you split a 50 lines file into 2 files of 25 lines each?</summary><br><b>
|
||||||
|
|
||||||
@ -1854,8 +1909,8 @@ Technically, yes.
|
|||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>How can you send an HTTP request from your shell?</summary><br><b>
|
<summary>How can you send an HTTP request from your shell?</summary><br><b>
|
||||||
|
<br>
|
||||||
Using nc is one way
|
Using nc is one way<br>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -1884,13 +1939,14 @@ One way would be `ping6 ff02::1`
|
|||||||
You can specify one or more of the following:
|
You can specify one or more of the following:
|
||||||
|
|
||||||
* <code>dig</code>
|
* <code>dig</code>
|
||||||
|
* <code>host</code>
|
||||||
* <code>nslookup</code>
|
* <code>nslookup</code>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
##### Packaging
|
##### Packaging
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Do you have experience with packaging? Can you explain how does it works?</summary><br><b>
|
<summary>Do you have experience with packaging? (as in building packages) Can you explain how does it works?</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -1902,7 +1958,7 @@ You can specify one or more of the following:
|
|||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>How to know to which package a file on the system belongs to? Is it a problem if it doesn't belongs to a package?</summary><br><b>
|
<summary>How to know to which package a file on the system belongs to? Is it a problem if it doesn't belongs to any package?</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -1913,6 +1969,17 @@ You can specify one or more of the following:
|
|||||||
<summary>What is an archive? How do you create one in Linux?</summary><br><b>
|
<summary>What is an archive? How do you create one in Linux?</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>How to extract the content of an archive?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Why do we need package managers? Why not simply creating archives and publish them?</summary><br><b>
|
||||||
|
|
||||||
|
Package managers allow you to manage packages lifecycle as in installing, removing and update the packages.<br>
|
||||||
|
In addition, you can specify in a spec how a certain package will be installed - where to copy the files, which commands to run prior to the installation, post the installation, etc.
|
||||||
|
</b></details>
|
||||||
|
|
||||||
##### Applications and Services
|
##### Applications and Services
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -1965,7 +2032,15 @@ Upstart: add Upstart init script at /etc/init/service.conf
|
|||||||
<details>
|
<details>
|
||||||
<summary>How to add a new user to the system without providing him the ability to log-in into the system?</summary><br><b>
|
<summary>How to add a new user to the system without providing him the ability to log-in into the system?</summary><br><b>
|
||||||
|
|
||||||
* adduser user_name --shell=/bin/false --no-create-home
|
`adduser user_name --shell=/bin/false --no-create-home`
|
||||||
|
You can also add a user and then edit /etc/passwd.
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>How to switch to another user? How to switch to root?</summary><br><b>
|
||||||
|
|
||||||
|
su command.
|
||||||
|
Use su - to switch to root
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -1978,7 +2053,13 @@ Re-install the OS IS NOT the right answer :)
|
|||||||
<summary>What is sudo? How do you set it up?</summary><br><b>
|
<summary>What is sudo? How do you set it up?</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
#### Random
|
<details>
|
||||||
|
<summary>How to see a list of who logged-in to the system?</summary><br><b>
|
||||||
|
|
||||||
|
Using the last command.
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
#### Linux - Random
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Give 5 commands which are two letters long</summary><br><b>
|
<summary>Give 5 commands which are two letters long</summary><br><b>
|
||||||
@ -1986,11 +2067,18 @@ Re-install the OS IS NOT the right answer :)
|
|||||||
ls, wc, dd, df, du, ps, ip, cp, cd ...
|
ls, wc, dd, df, du, ps, ip, cp, cd ...
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>How `cd -` works? How does it knows the previous location?</summary><br><b>
|
||||||
|
|
||||||
|
$OLDPWD
|
||||||
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>List three ways to print all the files in the current directory</summary><br><b>
|
<summary>List three ways to print all the files in the current directory</summary><br><b>
|
||||||
|
|
||||||
* ls
|
* ls
|
||||||
* find .
|
* find .
|
||||||
|
* echo *
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -2002,7 +2090,19 @@ ls, wc, dd, df, du, ps, ip, cp, cd ...
|
|||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Explain "environment variables"</summary><br><b>
|
<summary>What is the difference between man and info?</summary><br><b>
|
||||||
|
|
||||||
|
A good answer can be found [here](https://askubuntu.com/questions/9325/what-is-the-difference-between-man-and-info-documentation)
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Explain "environment variables". How do you list all environment variables?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>How to create your own environment variables?</summary><br><b>
|
||||||
|
|
||||||
|
`X=2` for example. But this will persist to new shells. To have it in new shells as well, use `export X=2`
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -2025,23 +2125,29 @@ It's used in commands to mark the end of commands options. One common example is
|
|||||||
<summary>What commands you can use for searching files and/or directories?</summary><br><b>
|
<summary>What commands you can use for searching files and/or directories?</summary><br><b>
|
||||||
|
|
||||||
* find
|
* find
|
||||||
* whereis
|
|
||||||
* locate
|
* locate
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>How can you check what is the path of a certain command?</summary><br><b>
|
||||||
|
|
||||||
|
* whereis
|
||||||
|
* which
|
||||||
|
</b></details>
|
||||||
|
|
||||||
<a name="linux-advanced"></a>
|
<a name="linux-advanced"></a>
|
||||||
#### :star: Advanced
|
#### :star: Advanced
|
||||||
|
|
||||||
#### System Calls
|
#### System Calls
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Explain the fork system call</summary><br><b>
|
<summary>Explain the fork() system call</summary><br><b>
|
||||||
|
|
||||||
fork() is used for creating a new process. It does so by cloning the calling process but the child process has its own PID and any memory locks, I/O operations and semaphores are not inherited.
|
fork() is used for creating a new process. It does so by cloning the calling process but the child process has its own PID and any memory locks, I/O operations and semaphores are not inherited.
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Explain the exec system call</summary><br><b>
|
<summary>Explain the exec() system call</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -2073,6 +2179,15 @@ Executes a program. The program is passed as a filename (or path) and must be a
|
|||||||
<summary>What is the return value of malloc?</summary><br><b>
|
<summary>What is the return value of malloc?</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Explain the pipe() system call. What does it used for?</summary><br><b>
|
||||||
|
|
||||||
|
[Unix pipe implementation](https://toroid.org/unix-pipe-implementation)
|
||||||
|
|
||||||
|
"Pipes provide a unidirectional interprocess communication channel. A pipe has a read end and a write end. Data written to the write end of a pipe can be read from the read end of the pipe.
|
||||||
|
A pipe is created using pipe(2), which returns two file descriptors, one referring to the read end of the pipe, the other referring to the write end."
|
||||||
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>What happens when you execute <code>ls -l</code>?</summary><br><b>
|
<summary>What happens when you execute <code>ls -l</code>?</summary><br><b>
|
||||||
|
|
||||||
@ -2211,6 +2326,16 @@ MemAvailable - The amount of available memory for new workloads (without pushing
|
|||||||
* Software/Packages Management
|
* Software/Packages Management
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
#### Linux Advanced - Misc
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Wildcards are implemented on user or kernel space?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Why there are different sections in man? What is the difference between the sections?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
## Operating System
|
## Operating System
|
||||||
|
|
||||||
<a name="operating-system-beginner"></a>
|
<a name="operating-system-beginner"></a>
|
||||||
@ -3893,6 +4018,10 @@ list(zip(nums, letters))
|
|||||||
```
|
```
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What is List Comprehension? Is it better than a typical loop? Why? Can you demonstrate how to use it?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
#### Dictionaries
|
#### Dictionaries
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -4031,10 +4160,6 @@ set([food for bro in x for food in bro['food']])
|
|||||||
```
|
```
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>What is List Comprehension? Is it better than a typical loop? Why? Can you demonstrate how to use it?</summary><br><b>
|
|
||||||
</b></details>
|
|
||||||
|
|
||||||
#### Python Strings
|
#### Python Strings
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -5345,22 +5470,37 @@ If Python, then using pdb is very useful.
|
|||||||
Using the keyword <code>read</code> so for example <code>read x</code> will wait for user input and will store it in the variable x.
|
Using the keyword <code>read</code> so for example <code>read x</code> will wait for user input and will store it in the variable x.
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>What is globbing?</summary><br><b>
|
|
||||||
</b></details>
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Explain conditionals and how do you use them</summary><br><b>
|
<summary>Explain conditionals and how do you use them</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
#### Shell Scripting - Loops
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>What is a loop? What types of loops are you familiar with?</summary><br><b>
|
<summary>What is a loop? What types of loops are you familiar with?</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Demonstrate how to use loops</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Explain <code>continue</code> and <code>break</code>. When do you use them if at all?</summary><br><b>
|
<summary>Explain <code>continue</code> and <code>break</code>. When do you use them if at all?</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Running the following bash script, we don't get 2 as a result, why?
|
||||||
|
|
||||||
|
```
|
||||||
|
x = 2
|
||||||
|
echo $x
|
||||||
|
```
|
||||||
|
</summary><br><b>
|
||||||
|
|
||||||
|
Should be `x=2`
|
||||||
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>How to store the output of a command in a variable?</summary><br><b>
|
<summary>How to store the output of a command in a variable?</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
@ -5369,16 +5509,12 @@ Using the keyword <code>read</code> so for example <code>read x</code> will wait
|
|||||||
<summary>How do you check variable length?</summary><br><b>
|
<summary>How do you check variable length?</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
##### Practical
|
||||||
<summary>What is the difference between single and double quotes?</summary><br><b>
|
|
||||||
</b></details>
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Write a script which will list the differences between two directories</summary><br><b>
|
<summary>Write a script which will list the differences between two directories</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
##### Practical
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<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>
|
||||||
|
|
||||||
@ -5727,6 +5863,36 @@ Azure AD is a cloud-based identity service. You can use it as a standalone servi
|
|||||||
<summary>Tell me what do you know about GCP networking</summary><br><b>
|
<summary>Tell me what do you know about GCP networking</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Explain Cloud Functions</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What is Cloud Datastore?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What network tags are used for?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What are flow logs? Where are they enabled?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>How do you list buckets?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What Compute metadata key allows you to run code at startup?</summary><br><b>
|
||||||
|
|
||||||
|
startap-script
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What the following commands does? `gcloud deployment-manager deployments create`</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
## OpenStack
|
## OpenStack
|
||||||
|
|
||||||
<a name="openstack-beginner"></a>
|
<a name="openstack-beginner"></a>
|
||||||
@ -5741,17 +5907,48 @@ Azure AD is a cloud-based identity service. You can use it as a standalone servi
|
|||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Can you tell me what each of the following components/projects is responsible for?:
|
<summary>Can you tell me what each of the following services/projects is responsible for?:
|
||||||
|
|
||||||
* Nova
|
* Nova
|
||||||
* Neutron
|
* Neutron
|
||||||
* Cinder
|
* Cinder
|
||||||
* Glance
|
* Glance
|
||||||
* Keystone</summary><br><b>
|
* Keystone</summary><br><b>
|
||||||
|
|
||||||
|
* Nova - Manage virtual instances
|
||||||
|
* Cinder - Block Storage
|
||||||
|
* Keystone - Authentication service across the cloud
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Describe in detail how you bring up an instance with an IP you can reach from outside the cloud</summary><br><b>
|
<summary>Identify the service/project used for each of the following:
|
||||||
|
|
||||||
|
* Copy or snapshot instances
|
||||||
|
* GUI for viewing and modifying resources
|
||||||
|
* Block Storage
|
||||||
|
* Manage virtual instances
|
||||||
|
</summary><br><b>
|
||||||
|
|
||||||
|
* Glance - Copy or snapshot instances
|
||||||
|
* Horizon - GUI for viewing and modifying resources
|
||||||
|
* Cinder - Block Storage
|
||||||
|
* Nova - Manage virtual instances
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What is a tenant/project?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Determine true or false:
|
||||||
|
|
||||||
|
* OpenStack is free to use
|
||||||
|
* The service responsible for networking is Glance
|
||||||
|
* The purpose of tenant/project is to share resources between different projects and users of OpenStack</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Describe in detail how you bring up an instance with a floating IP</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@ -5771,10 +5968,61 @@ Azure AD is a cloud-based identity service. You can use it as a standalone servi
|
|||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Are you familiar with TripleO? What benefits it has?</summary><br><b>
|
<summary>Are you familiar with TripleO? How is it different from Devstack?</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
##### Networking
|
#### OpenStack Compute
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Can you describe Nova in detail?</summary><br><b>
|
||||||
|
|
||||||
|
* Used to provision and manage virtual instances
|
||||||
|
* It supports Multi-Tenancy in different levels - logging, end-user control, auditing, etc.
|
||||||
|
* Highly scalable
|
||||||
|
* Authentication can be done using internal system or LDAP
|
||||||
|
* Supports multiple types of block storage
|
||||||
|
* Tries to be hardware and hypervisor agnostice
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What do you know about Nova architecture and components?</summary><br><b>
|
||||||
|
|
||||||
|
* nova-api - the server which serves metadata and compute APIs
|
||||||
|
* the different Nova components communicate by using a queue (Rabbitmq usually) and a database
|
||||||
|
* a request for creating an instance is inspected by nova-scheduler which determines where the instance will be created and running
|
||||||
|
* nova-compute is the component responsible for communicating with the hypervisor for creating the instance and manage its lifecycle
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
#### OpenStack Networking (Neutron)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Explain Neutron in detail</summary><br><b>
|
||||||
|
|
||||||
|
* One of the core component of OpenStack and a standalone project
|
||||||
|
* Neutron focused on delivering networking as a service
|
||||||
|
* With Neutron, users can set up networks in the cloud and configure and manage a variety of network services
|
||||||
|
* Neutron interacts with:
|
||||||
|
* Keystone - authorize API calls
|
||||||
|
* Nova - nova communicates with neutron to plug NICs into a network
|
||||||
|
* Horizon - supports networking entities in the dashboard and also provides topology view which includes networking details
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Explain each of the following components:
|
||||||
|
|
||||||
|
* neutron-dhcp-agent
|
||||||
|
* neutron-l3-agent
|
||||||
|
* neutron-metering-agent
|
||||||
|
* neutron-*-agtent
|
||||||
|
* neutron-server</summary><br><b>
|
||||||
|
|
||||||
|
|
||||||
|
* neutron-l3-agent - L3/NAT forwarding (provides external network access for VMs for example)
|
||||||
|
* neutron-dhcp-agent - DHCP services
|
||||||
|
* neutron-metering-agent - L3 traffic metering
|
||||||
|
* neutron-*-agtent - manages local vSwitch configuration on each compute (based on chosen plugin)
|
||||||
|
* neutron-server - exposes networking API and passes requests to other plugins if required</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>What is a provider network?</summary><br><b>
|
<summary>What is a provider network?</summary><br><b>
|
||||||
@ -5808,19 +6056,181 @@ Azure AD is a cloud-based identity service. You can use it as a standalone servi
|
|||||||
<summary>How do you debug OpenStack networking issues? (tools, logs, ...)</summary><br><b>
|
<summary>How do you debug OpenStack networking issues? (tools, logs, ...)</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
#### OpenStack - Keystone
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Can you describe the following concepts in regards to Keystone?
|
||||||
|
|
||||||
|
* Role
|
||||||
|
* Tenant/Project
|
||||||
|
* Service
|
||||||
|
* Endpoint
|
||||||
|
* Token</summary><br><b>
|
||||||
|
|
||||||
|
* Role - A list of rights and privileges determining what a user or a project can perform
|
||||||
|
* Tenant/Project - Logical representation of a group of resources isolated from other groups of resources. It can be an account, organization, ...
|
||||||
|
* Service - An endpoint which the user can use for accessing different resources
|
||||||
|
* Endpoint - a network address which can be used to access a certain OpenStack service
|
||||||
|
* Token - Used for access resources while describing which resources can be accessed by using a scope
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What are the properties of a service? In other words, how a service is identified?</summary><br><b>
|
||||||
|
|
||||||
|
Using:
|
||||||
|
* Name
|
||||||
|
* ID number
|
||||||
|
* Type
|
||||||
|
* Description
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Explain the following:
|
||||||
|
* PublicURL
|
||||||
|
* InternalURL
|
||||||
|
* AdminURL</summary><br><b>
|
||||||
|
|
||||||
|
* PublicURL - Publicly accessible through public internet
|
||||||
|
* InternalURL - Used for communication between services
|
||||||
|
* AdminURL - Used for administrative management
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What is a service catalog?
|
||||||
|
|
||||||
|
A list of services and their endpoints
|
||||||
|
</b></details>
|
||||||
|
|
||||||
<a name="openstack-advanced"></a>
|
<a name="openstack-advanced"></a>
|
||||||
#### :baby: Advanced
|
#### :baby: Advanced
|
||||||
|
|
||||||
##### Networking
|
#### OpenStack Advanced - Services
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Explain BGP dynamic routing</summary>
|
<summary>Describe each of the following services
|
||||||
|
|
||||||
|
* Swift
|
||||||
|
* Sahara
|
||||||
|
* Ironic
|
||||||
|
* Aodh
|
||||||
|
* Ceilometer</summary><br><b>
|
||||||
|
|
||||||
|
* Swift - highly available, distributed, eventually consistent object/blob store
|
||||||
|
* Sahara - Manage Hadoop Clusters
|
||||||
|
* Ironic - Bare Metal Provisioning
|
||||||
|
* Aodh - Alarms Service
|
||||||
|
* Ceilometer - Track and monitor usage
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>What is the role of network namespaces in OpenStack?</summary>
|
<summary>Identify the service/project used for each of the following:
|
||||||
|
|
||||||
|
* Bare Metal Provisioning
|
||||||
|
* Track and monitor usage
|
||||||
|
* Alarms Service
|
||||||
|
* Manage Hadoop Clusters
|
||||||
|
* highly available, distributed, eventually consistent object/blob store</summary><br><b>
|
||||||
|
|
||||||
|
* Bare Metal Provisioning - Ironic
|
||||||
|
* Track and monitor usage - Ceilometer
|
||||||
|
* Alarms Service - Aodh
|
||||||
|
* Manage Hadoop Clusters
|
||||||
|
* Manage Hadoop Clusters - Sahara
|
||||||
|
* highly available, distributed, eventually consistent object/blob store - Swift
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
#### OpenStack Advanced - Keystone
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Can you describe Keystone service in detail?</summary><br><b>
|
||||||
|
|
||||||
|
* You can't have OpenStack deployed without Keystone
|
||||||
|
* It Provides identity, policy and token services
|
||||||
|
* The authentication provided is for both users and services
|
||||||
|
* The authorization supported is token-based and user-based.
|
||||||
|
* There is a policy defined based on RBAC stored in a JSON file and each line in that file defines the level of access to apply
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Describe Keystone architecture</summary><br><b>
|
||||||
|
|
||||||
|
* There is a service API and admin API through which Keystone gets requests
|
||||||
|
* Keystone has four backends:
|
||||||
|
* Token Backend - Temporary Tokens for users and services
|
||||||
|
* Policy Backend - Rules management and authorization
|
||||||
|
* Identity Backend - users and groups (either standalone DB, LDAP, ...)
|
||||||
|
* Catalog Backend - Endpoints
|
||||||
|
* It has pluggable environment where you can integrate with:
|
||||||
|
* LDAP
|
||||||
|
* KVS (Key Value Store)
|
||||||
|
* SQL
|
||||||
|
* PAM
|
||||||
|
* Memcached
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Describe the Keystone authentication process</summary><br><b>
|
||||||
|
|
||||||
|
* Keystone gets a call/request and checks whether it's from an authorized user, using username, password and authURL
|
||||||
|
* Once confirmed, Keystone provides a token.
|
||||||
|
* A token contains a list of user's projects so there is no to authenticate every time and a token can submitted instead
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
#### OpenStack Advanced - Compute (Nova)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What each of the following does?:
|
||||||
|
|
||||||
|
* nova-api
|
||||||
|
* nova-compuate
|
||||||
|
* nova-conductor
|
||||||
|
* nova-cert
|
||||||
|
* nova-consoleauth
|
||||||
|
* nova-scheduler</summary><br><b>
|
||||||
|
|
||||||
|
* nova-api - responsible for managing requests/calls
|
||||||
|
* nova-compute - responsible for managing instance lifecycle
|
||||||
|
* nova-conductor - Mediates between nova-compute and the database so nova-compute doesn't access it directly
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What types of Nova proxies are you familiar with?</summary><br><b>
|
||||||
|
|
||||||
|
* Nova-novncproxy - Access through VNC connections
|
||||||
|
* Nova-spicehtml5proxy - Access through SPICE
|
||||||
|
* Nova-xvpvncproxy - Access through a VNC connection
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
#### OpenStack Advanced - Networking (Neutron)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Explain BGP dynamic routing</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What is the role of network namespaces in OpenStack?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
#### OpenStack Advanced - Horizon
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Can you describe Horizon in detail?</summary><br><b>
|
||||||
|
|
||||||
|
* Django-based project focusing on providing an OpenStack dashboard and the ability to create additional customized dashboards
|
||||||
|
* You can use it to access the different OpenStack services resources - instances, images, networks, ...
|
||||||
|
* By accessing the dashboard, users can use it to list, create, remove and modify the different resources
|
||||||
|
* It's also highly customizable and you can modify or add to it based on your needs
|
||||||
|
</b></details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>What can you tell about Horizon architecture?</summary><br><b>
|
||||||
|
|
||||||
|
* API is backward compatible
|
||||||
|
* There are three type of dashboards: user, system and settings
|
||||||
|
* It provides core support for all OpenStack core projects such as Neutron, Nova, etc. (out of the box, no need to install extra packages or plugins)
|
||||||
|
* Anyone can extend the dashboards and add new components
|
||||||
|
* Horizon provides templates and core classes from which one can build its own dashboard
|
||||||
|
</b></details>
|
||||||
|
|
||||||
## Security
|
## Security
|
||||||
|
|
||||||
@ -6784,6 +7194,12 @@ TODO: explain what is actually a Cookie
|
|||||||
<summary>What is DNS load balancing? What its advantages? When would you use it?</summary><br><b>
|
<summary>What is DNS load balancing? What its advantages? When would you use it?</summary><br><b>
|
||||||
</b></details>
|
</b></details>
|
||||||
|
|
||||||
|
#### Licenses
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Are you familiar with "Creative Commons"? What do you know about it?</summary><br><b>
|
||||||
|
</b></details>
|
||||||
|
|
||||||
#### Random
|
#### Random
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
@ -152,4 +152,4 @@ If you do, you should also play the interviewer role :)
|
|||||||
|
|
||||||
### One Last Thing
|
### One Last Thing
|
||||||
|
|
||||||
[Good luck](https://youtu.be/Xz-UvQYAmbg?t=29) :)
|
[Good luck](https://youtu.be/AFUrG1-BAt4?t=59) :)
|
||||||
|
Loading…
Reference in New Issue
Block a user