forked from bregman-arie/devops-exercises
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
320 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
import pathlib | ||
|
||
p = pathlib.Path(__file__).parent.parent.joinpath('README.md') | ||
|
||
with open(p, 'rb') as f: | ||
file_list = [line.rstrip() for line in f.readlines()] | ||
|
||
details_final_count = 0 | ||
details_count = 0 | ||
print(len(file_list)) | ||
for q in file_list: | ||
if b'<details>' in q: | ||
details_count += 1 | ||
if b'</details>' in q: | ||
details_final_count += 1 | ||
print(details_count, details_final_count) | ||
|
||
# TODO Checkear que tenemos mismo numero de details tabs, aunque esto no asegura al 100% que esta bien formateado. | ||
# Una vez que tenemos un número par, podemos más o menos estar seguros de que la cosa va bien, y hacer ya entonces | ||
# el checkeo de las demás tags. | ||
# Problema: No obtenemos el lugar de donde esta mal el details, entonces; hacerlo. | ||
# IDEA: comprobar que despues de un detail va un /detail y mas o menos supongo que podremos acotar, hacer pruebas. | ||
|
||
|
||
def get_question_list(f): | ||
|
||
questions_list = [] | ||
temp = [] | ||
after_summary_tag = False | ||
|
||
for line in f: | ||
if line.startswith(b'<details>'): | ||
temp.append(line) | ||
after_summary_tag = True | ||
|
||
elif after_summary_tag and line != b'' and b'</details>' not in line: | ||
temp.append(line) | ||
|
||
elif after_summary_tag and b'</details>' in line: | ||
temp.append(line) | ||
after_summary_tag = False | ||
|
||
questions_list.append(temp) | ||
temp = [] | ||
|
||
return questions_list | ||
|
||
|
||
def get_answered_questions(question_list) -> int: | ||
c = 0 | ||
for q in question_list: | ||
index = 0 | ||
for i in q: | ||
if b'</summary>' in i: | ||
index = q.index(i) | ||
if q[index+1: len(q) - 1]: | ||
# print(q[2: len(q) - 1], '-->', q) | ||
c += 1 | ||
return c | ||
|
||
|
||
def check_even_tags(question_list): | ||
summary_count = 0 | ||
details_count = 0 | ||
# details count not necessary cus we already have that checked beforehand | ||
for q in question_list: | ||
print(q) | ||
for l in q: | ||
print(l) | ||
if b'<details>' in l: | ||
details_count += 1 | ||
if b'<summary>' in l: | ||
summary_count += 1 | ||
if b'</details>' in l: | ||
details_count += 1 | ||
if b'</summary>' in l: | ||
summary_count += 1 | ||
print(summary_count, details_count) | ||
if summary_count != 2 or details_count != 2: | ||
raise Exception(f'You are missing a tag in {q}') | ||
details_count = 0 | ||
summary_count = 0 | ||
|
||
|
||
# check_even_tags(get_question_list(file_list)) | ||
|
||
|
||
# if __name__ == '__main__': | ||
# q_list = get_question_list(file_list) | ||
# print(len(q_list)) | ||
# print(get_answered_questions(q_list)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import unittest | ||
import pathlib | ||
|
||
from scripts.main import get_answered_questions, get_question_list | ||
|
||
|
||
def open_test_case_file(n: int): | ||
p = pathlib.Path(rf'D:\PycharmProjects\devops-interview-questions\scripts\tests\testcase{n}.md') | ||
|
||
with open(p, 'rb') as f: | ||
file_list = [line.rstrip() for line in f.readlines()] | ||
return file_list | ||
|
||
|
||
class QuestionCount(unittest.TestCase): | ||
solutions = ( | ||
|
||
) | ||
|
||
def test_count_case_1(self): | ||
raw_list = open_test_case_file(1) | ||
question_list = get_question_list(raw_list) | ||
answers = get_answered_questions(question_list) | ||
|
||
self.assertEqual(len(question_list), 21) | ||
self.assertEqual(answers, 2) | ||
|
||
def test_count_case_2(self): | ||
pass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
<details> | ||
<summary>What objects in S3 consists of? | ||
* Another way to ask it: explain key, value, version id and meta data in context of objects</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>Explain data consistency</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>Can you host dynamic websites on S3?. What about static websites?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>What security measures have you taken in context of S3?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>What is a storage class? What storage classes are you familiar with?</summary><br><b> | ||
</b></details> | ||
|
||
##### EC2 | ||
|
||
<details> | ||
<summary>What is EC2? What is it used for?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>What EC2 pricing models are there?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>How to increase RAM for a given EC2 instance?</summary><br><b> | ||
|
||
Stop the instance, the type of the instance to match the desired RAM and start the instance. | ||
</b></details> | ||
|
||
<details> | ||
<summary>What is an AMI?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>How many storage options are there for EC2 Instances?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>What happens when an EC2 instance is stopped or terminated?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>What are Security Groups?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>How to migrate an instance to another availability zone?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>What are spot instances?</summary><br><b> | ||
</b></details> | ||
|
||
##### CloudFront | ||
|
||
<details> | ||
<summary>Explain what is CloudFront and what is it used for</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>Explain the following | ||
* Origin | ||
* Edge location | ||
* Distribution</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>What delivery methods available for the user with CDN?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>True or False?. Objects are cached for the life of TTL</summary><br><b> | ||
</b></details> | ||
|
||
##### Load Balancers | ||
|
||
<details> | ||
<summary>What types of load balancers are supported in EC2 and what are they used for?</summary><br><b> | ||
|
||
* Application LB - layer 7 traffic | ||
* Network LB - ultra-high performances or static IP address | ||
* Classic LB - low costs, good for test or dev environments | ||
</b></details> | ||
|
||
##### AWS Security | ||
|
||
<details> | ||
<summary>What is the shared responsibility model? In other words, what AWS is responsible for and what the user is responsible for in regards to Security?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>What is the AWS compliance program?</summary><br><b> | ||
</b></details> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
<details> | ||
<summary>Explain what each of the following services is used for | ||
|
||
* AWS Inspector | ||
* AWS Artifact | ||
* AWS Shield</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>What is AWS WAF? Give an example of how it can used and describe what resources or services you can use it with</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>What AWS VPN is usef for?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>What is the difference between Site-to-Site VPN and Client VPN?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>True or False? AWS Inspector can perform both network and host assessments</summary><br><b> | ||
|
||
True | ||
</b></details> | ||
|
||
#### AWS Databases | ||
|
||
<details> | ||
<summary>What is RDS?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>What are some features or benefits of using RDS?</summary><br><b> | ||
|
||
1. Multi AZ - great for Disaster Recovery | ||
2. Read Replicas - for better performances | ||
</b></details> | ||
|
||
<details> | ||
<summary>What is EBS?</summary><br><b> | ||
</b></details> | ||
|
||
#### AWS Networking | ||
|
||
<details> | ||
<summary>What is VPC?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>Explain Security Groups and Network ACLs</summary><br><b> | ||
</b></details> | ||
|
||
#### Misc | ||
|
||
<details> | ||
<summary>Explain what are the following services and give an use case example for each one them: | ||
|
||
* CloudTrail | ||
* CloudWatch | ||
* CloudSearch</summary><br><b> | ||
</b></details> | ||
|
||
|
||
## Network | ||
|
||
<a name="network-beginner"></a> | ||
#### :baby: Beginner | ||
|
||
<details> | ||
<summary>What is Ethernet?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>What is a MAC address? What is it used for?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>When is this MAC address used?: ff:ff:ff:ff:ff:ff</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>What is an IP address?</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>Explain subnet mask and given an example</summary><br><b> | ||
</b></details> | ||
|
||
<details> | ||
<summary>What is a private IP address? What do we need it for?</summary><br><b> | ||
</b></details> |
Empty file.
Empty file.
Empty file.