From c66780275c4ff517d376c4858ea52bc534d70d49 Mon Sep 17 00:00:00 2001 From: abregman Date: Sat, 20 Feb 2021 02:25:40 +0200 Subject: [PATCH] Add a couple of answers --- README.md | 224 +++++++++++++++++++++++++++++------------- images/infraverse.png | Bin 0 -> 43409 bytes 2 files changed, 156 insertions(+), 68 deletions(-) create mode 100644 images/infraverse.png diff --git a/README.md b/README.md index 8e7f502..dca9e30 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,9 @@ :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 -:thought_balloon:  If you wonder "How to prepare for a DevOps interview?", you might want to read some of my suggestions [here](prepare_for_interview.md) +:busts_in_silhouette:  [Join](https://www.facebook.com/groups/538897960007080) our [DevOps community](https://www.facebook.com/groups/538897960007080) where we have discussions and resources on DevOps -:busts_in_silhouette:  [Join](https://www.facebook.com/groups/538897960007080) our [Facebook group](https://www.facebook.com/groups/538897960007080) for additional exercises, articles and more resources on DevOps - -:pencil:  You can add more questions and exercises by submitting pull requests :) You can read more about it [here](CONTRIBUTING.md) +:pencil:  You can add more questions and exercises by submitting pull requests :) Read about contribution guidelines [here](CONTRIBUTING.md) **** @@ -122,6 +120,8 @@ Google: * Not allowing someone to push to production on Friday ;) +#### CI/CD +
What is Continuous Integration?
@@ -130,26 +130,6 @@ A development practice where developers integrate code into a shared repository Each piece of code (change/patch) is verified, to make the change is safe to merge. Today, it's a common practice to test the change using an automated build that makes sure the code can integrated. It can be one build which runs several tests in different levels (unit, functional, etc.) or several separate builds that all or some has to pass in order for the change to be merged into the repository.
-
-Can you describe an example of a CI (and/or CD) process starting the moment a developer submitted a change/PR to a repository?
- -There are many answers for such question as CI processes vary depending on the technologies used and the type of the project to where the change was submitted. -Such processes can include one or more of the following stages: - -* Compile -* Build -* Install -* Configure -* Update -* Test - -For example: - -A developer submitted a pull request to a project. The PR (pull request) triggered two jobs (or one combined job). One job for running lint test on the change and the second job for building a package which includes the submitted change, and running multiple api/scenario tests using that package. Once all tests passed and the change was approved by a maintainer/core, it's merged/pushed to the repository. If some of the tests failed, the change will not be allowed to merged/pushed to the repository. - -A complete different CI process can describe how a developer pushes code to a repository, a workflow then triggered to build a container image and push it to the registry. Once in the registry, the k8s cluster is applied with the new changes. -
-
What is Continuous Deployment?
@@ -158,6 +138,27 @@ A development strategy used by developers to release software automatically into For more info please read [here](https://www.atlassian.com/continuous-delivery/continuous-deployment)
+ +
+Can you describe an example of a CI (and/or CD) process starting the moment a developer submitted a change/PR to a repository?
+ +There are many answers for such a question, as CI processes vary, depending on the technologies used and the type of the project to where the change was submitted. +Such processes can include one or more of the following stages: + +* Compile +* Build +* Install +* Configure +* Update +* Test + +An example of one possible answer: + +A developer submitted a pull request to a project. The PR (pull request) triggered two jobs (or one combined job). One job for running lint test on the change and the second job for building a package which includes the submitted change, and running multiple api/scenario tests using that package. Once all tests passed and the change was approved by a maintainer/core, it's merged/pushed to the repository. If some of the tests failed, the change will not be allowed to merged/pushed to the repository. + +A complete different answer or CI process, can describe how a developer pushes code to a repository, a workflow then triggered to build a container image and push it to the registry. Once in the registry, the k8s cluster is applied with the new changes. +
+
What is Continuous Delivery?
@@ -166,13 +167,6 @@ A development strategy used to frequently deliver code to QA and Ops for testing For more info please read [here](https://www.atlassian.com/continuous-delivery/continuous-deployment)
-
-Would you prefer a "configuration->deployment" model or "deployment->configuration"? Why?
- -Both have advantages and disadvantages. -With "configuration->deployment" model for example, where you build one image to be used by multiple deployments, there is less chance of deployments being different from one another, so it has a clear advantage of a consistent environment. -
-
What CI/CD best practices are you familiar with? Or what do you consider as CI/CD best practice?
@@ -190,13 +184,20 @@ With "configuration->deployment" model for example, where you build one image to There are multiple approaches as to where to store the CI/CD pipeline definitions: -1. App Repository - store them in the same repository of the application they are building or testing -2. Central Repository - store all organization's/project's CI/CD pipelines in one separate repository -2. CI repo for every app repo - you separate CI related code from app code but you don't put everything in one place +1. App Repository - store them in the same repository of the application they are building or testing (perhaps the most popular one) +2. Central Repository - store all organization's/project's CI/CD pipelines in one separate repository (perhaps the best approach when multiple teams test the same set of projects and they end up having many pipelines) +3. CI repo for every app repo - you separate CI related code from app code but you don't put everything in one place (perhaps the worst option due to the maintenance)
-What systems and/or tools are you using for the following areas/tasks? Why? +Would you prefer a "configuration->deployment" model or "deployment->configuration"? Why?
+ +Both have advantages and disadvantages. +With "configuration->deployment" model for example, where you build one image to be used by multiple deployments, there is less chance of deployments being different from one another, so it has a clear advantage of a consistent environment. +
+ +
+What tooling are you using for the following areas/tasks? Why? * CI/CD * Provisioning infrastructure @@ -283,7 +284,7 @@ Read more [here](https://en.wikipedia.org/wiki/Software_repository)
What is caching? How does it works? Why is it important?
- Caching is fast access to frequently used resources which are computationally expensive or IO intensive and do not change often. There can be several layers of cache that can start from CPU caches to distributed cache systems. Common ones are in memory caching and distributed caching.
Caches are typically data structures that contains some data, such as a hashtable or dictionary. However, any data structure can provide caching capabilities, like set, sorted set, sorted dictionary etc. While, caching is used in many applications, they can create subtle bugs if not implemented correctly or used correctly. For example,cache invalidation, expiration or updating is usually quite challenging and hard. +Caching is fast access to frequently used resources which are computationally expensive or IO intensive and do not change often. There can be several layers of cache that can start from CPU caches to distributed cache systems. Common ones are in memory caching and distributed caching.
Caches are typically data structures that contains some data, such as a hashtable or dictionary. However, any data structure can provide caching capabilities, like set, sorted set, sorted dictionary etc. While, caching is used in many applications, they can create subtle bugs if not implemented correctly or used correctly. For example,cache invalidation, expiration or updating is usually quite challenging and hard.
@@ -429,13 +430,17 @@ This situation might lead to bugs which hard to identify and reproduce.
-Explain Declarative and Procedural styles. Give examples for each style
+Explain Declarative and Procedural styles. The technologies you are familiar with (or using) are using procedural or declarative style?
-Declarative - You can write code that specifies the desired end state +Declarative - You write code that specifies the desired end state Procedural - You describe the steps to get to the desired end state Declarative Tools - Terraform, Puppet, CloudFormation Procedural Tools - Ansible, Chef + +To better emphasize the difference, consider creating two virtual instances/servers. +In declarative style, you would specify two servers and the tool will figure out how to reach that state. +In procedural style, you need to specify the steps to reach the end state of two instances/servers - for example, create a loop and in each iteration of the loop create one instance (running the loop twice of course).
@@ -457,10 +462,9 @@ Note: cross-dependency is when you have two or more changes to separate projects
What SRE team is responsible for?
-One can argue whether it's per company definition or a global one but at least according to a large companies, like Google for example, the SRE team is responsible for availability, latency, performance, efficiency, change management, monitoring, emergency response, and capacity planning of their services +Google: "the SRE team is responsible for availability, latency, performance, efficiency, change management, monitoring, emergency response, and capacity planning of their services"
- ## Jenkins
@@ -483,6 +487,13 @@ Jenkins integrates development life-cycle processes of all kinds, including buil
What are the limitations or disadvantages of Jenkins?
+ +This might be considered to be an opinionated answer: + +* Old fashioned dashboards with not many options to customize it +* Containers readiness (this has improved with Jenkins X) +* By itself, it doesn't have many features. On the other hand, there many plugins created by the community to expand its abilities +* Managing Jenkins and its piplines as a code can be one hell of a nightmare
@@ -493,6 +504,11 @@ Jenkins integrates development life-cycle processes of all kinds, including buil * Plugin * Slave/Node/Worker * Executor

+ + * Job is an automation definition = what and where to execute once the user clicks on "build" + * Build is a running instance of a job. You can have one or more builds at any given point of time (unless limited by confiugration) + * A worker is the machine/instance on which the build is running. When a build starts, it "acquires" a worker out of a pool to run on it. + * An executor is variable of the worker, defining how many builds can run on that worker in parallel. An executor value of 3 means, that 3 builds can run at any point on that executor (not necessarily of the same job. Any builds)
@@ -500,7 +516,7 @@ Jenkins integrates development life-cycle processes of all kinds, including buil
-Explain CI/CD and how have you implemented it in Jenkins
+Have you used Jenkins for CI or CD processes? Can you describe them?
@@ -508,11 +524,26 @@ Jenkins integrates development life-cycle processes of all kinds, including buil
-How did you report build results to users? What ways are you familiar with for reporting results?
+How did you report build results to users? What ways are there to report the results?
+ +You can report via: + * Emails + * Messaging apps + * Dashboards + +Each has its own disadvantages and advantages. Emails for example, if sent too often, can be eventually disregarded or ignored.
You need to run unit tests every time a change submitted to a given project. Describe in details how your pipeline would look like and what will be executed in each stage
+ +The pipelines will have multiple stages: + + * Clone the project + * Install test dependencies (for example, if I need tox package to run the tests, I will install it in this stage) + * Run unit tests + * (Optional) report results (For example an email to the users) + * Archive the relevant logs/files
@@ -1390,7 +1421,7 @@ Read more about it [here](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec Allows you to connect your corporate network to AWS network.
-#### Identify the service or tool +#### AWS - Identify the service or tool
What would you use for automating code/software deployments?
@@ -3871,8 +3902,8 @@ It would support the following: * Program's bytes are loaded into the memory or more specifically, into the address space of the process. * Memory is allocated for program's stack (aka run-time stack). The stack also initialized by the OS with data like argv, argc and parameters to main() * Memory is allocated for program's heap which is required for data structures like linked lists and hash tables -* I/O initialization tasks like in Unix/Linux based systems where each process has 3 file descriptors (input, output and error) -* OS is running the program, strarting from main() +* I/O initialization tasks are performed, like in Unix/Linux based systems where each process has 3 file descriptors (input, output and error) +* OS is running the program, starting from main() Note: The loading of the program's code into the memory done lazily which means the OS loads only partial relevant pieces required for the process to run and not the entire code.
@@ -6126,6 +6157,29 @@ The average performance of the above algorithm is O(log n). Best performance can * Some programming languages don't have linked lists as a built-in data type (like Python for example) but it can be easily implemented +
+Describe (no need to implement) how to detect a loop in a Linked List
+ +There are multiple ways to detect a loop in a linked list. I'll mention three here: + +Worst solution:
+Two pointers where one points to the head and one points to the last node. Each time you advance the last pointer by one and check whether the distance between head pointer to the moved pointer is bigger than the last time you measured the same distance (if not, you have a loop).
+The reason it's probably the worst solution, is because time complexity here is O(n^2) + +Decent solution:
+ +Create an hash table and start traversing the linked list. Every time you move, check whether the node you moved to is in the hash table. If it isn't, insert it to the hash table. If you do find at any point the node in the hash table, it means you have a loop. When you reach None/Null, it's the end and you can return "no loop" value. +This one is very easy to implement (just create a hash table, update it and check whether the node is in the hash table every time you move to the next node) but since the auxiliary space is O(n) because you create a hash table then, it's not the best solution + +Good solution:
+Instead of creating a hash table to document which nodes in the linked list you have visited, as in the previous solution, you can modify the Linked List (or the Node to be precise) to have a "visited" attribute. Every time you visit a node, you set "visited" to True.
+Time compleixty is O(n) and Auxiliary space is O(1), so it's a good solution but the only problem, is that you have to modify the Linked List. + +Best solution:
+You set two pointers to traverse the linked list from the beginning. You move one pointer by one each time and the other pointer by two. If at any point they meet, you have a loop. This solution is also called "Floyd's Cycle-Finding"
+Time complexity is O(n) and auxiliary space is O(1). Perfect :) +
+
Implement Hash table in any language you would like
@@ -7326,15 +7380,15 @@ What would be the result of is_int(2) and is_int(False)?
-#### Python Data Structures & Types +#### Python - Linked List
-Can you implement linked list in Python?
+Can you implement a linked list in Python?
The reason we need to implement in the first place, it's because a linked list isn't part of Python standard library.
-To implement a linked list, we have to implement two concepts: The linked list itself and a node which is used by the linked list. +To implement a linked list, we have to implement two structures: The linked list itself and a node which is used by the linked list. -Let's start with a node. A node has some value and it also points to the next node +Let's start with a node. A node has some value (the data it holds) and a pointer to the next node ``` class Node(object): @@ -7365,16 +7419,51 @@ What we have is: ---- ----- ---- | 1 | -> | 2 | -> | 3 | ---- ----- ----- + +Usually, more methods are implemented, like a push_head() method where you insert a node at the beginning of the linked list + +``` +def push_head(self, value): + new_node = Node(value) + new_node.next = self.head + self.head = new_node +```
+
+Add a method to the Linked List class to traverse (print every node's data) the linked list
+ +def print_list(self): + node = self.head + while(node): + print(node.data) + node = node.next +
+ +
+Write a method to that will return a boolean based on whether there is a loop in a linked list or not
+ +Let's use the Floyd's Cycle-Finding algorithm: + +``` +def loop_exists(self): + one_step_p = self.head + two_steps_p = self.head + while(one_step_p and two_steps_p and two_steps_p.next): + one_step_p = self.head.next + two_step_p = self.head.next.next + if (one_step_p == two_steps_p): + return True + return False +``` +
+ +#### Python - Stack +
Implement Stack in Python
-
-Implement Hash table in Python
-
- #### Python Testing
@@ -7395,10 +7484,6 @@ PEP8 is a list of coding conventions and style guidelines for Python 5. Use 4 spaces per indentation level
-
-How would you check if two strings are equal? What about booleans?
-
-
How to test if an exception was raised?
@@ -9549,11 +9634,13 @@ A list of services and their endpoints
-What DevOps security best practices are you familiar with?
+What security techniques are you familiar with? (or what security techniques have you used in the past?)
-What security techniques are you familiar with? (or what security techniques you used in the past?)
+What the "Zero Trust" concept means? How Organizations deal with it?
+ +[Codefresh definition](https://codefresh.io/security-testing/codefresh-runner-overview): "Zero trust is a security concept that is centered around the idea that organizations should never trust anyone or anything that does not originate from their domains. Organizations seeking zero trust automatically assume that any external services it commissions have security breaches and may leak sensitive information"
@@ -9564,15 +9651,13 @@ Authorization is the process of identifying what level of access the service or
-How do you manage passwords in different tools and platforms?
+How do you manage sensitive information (like passwords) in different tools and platforms?
Explain what is Single Sign-On
SSO (Single Sign-on), is a method of access control that enables a user to log in once and gain access to the resources of multiple software systems without being prompted to log in again. - -
@@ -10684,19 +10769,21 @@ The server didn't receive a response from another server it communicates with in What is an Application Load Balancer?
+
+At what layers a load balancer can operate?
+ +L4 and L7 +
+
What is DNS load balancing? What its advantages? When would you use it?
-What are sticky sessions?
+What are sticky sessions? What are their pros and cons?
Recommended read: * [Red Hat Article](https://access.redhat.com/solutions/900933) -
- -
-What are the cons and pros of sticky sessions?
Cons: * Can cause uneven load on instance (since requests routed to the same instances) @@ -10705,7 +10792,7 @@ Pros:
-Explain the following load balancing techniques: +Explain the following load balancing algorithms: * Round Robin * Least Connection @@ -11540,6 +11627,7 @@ Below you can find several exercises

+

## Credits diff --git a/images/infraverse.png b/images/infraverse.png new file mode 100644 index 0000000000000000000000000000000000000000..fa1f0784db70f4b2432f006013db0c3d60ef8239 GIT binary patch literal 43409 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≈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