First commit syntax checker
This commit is contained in:
parent
5d1c2e0dfd
commit
051fea2c9b
17
README.md
17
README.md
@ -375,7 +375,7 @@ You can describe the UI way to add new slaves but better to explain how to do in
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
<summary>How would you implement an option of a starting a build from a certain stage and not from the beginning?<summary><br><b>
|
||||
<summary>How would you implement an option of a starting a build from a certain stage and not from the beginning?</summary><br><b>
|
||||
</b></details>
|
||||
|
||||
##### Jenkins Dev
|
||||
@ -589,9 +589,11 @@ Stop the instance, the type of the instance to match the desired RAM and start t
|
||||
<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>
|
||||
|
||||
@ -927,7 +929,8 @@ As to fix it there are serveral options:
|
||||
3. You would look for your distro default $PATH variable, copy paste using method #1
|
||||
|
||||
Note: There are many ways of getting errors like this: if bash_profile or any configuration file of your interpreter was wrongly modified; causing erratics behaviours,
|
||||
permissions issues, bad compiled software (if you compiled it by yourself)... there is no answer that will be true 100% of the time.</b>
|
||||
permissions issues, bad compiled software (if you compiled it by yourself)... there is no answer that will be true 100% of the time.
|
||||
</b>
|
||||
</p>
|
||||
</details>
|
||||
|
||||
@ -1241,7 +1244,7 @@ execution or run forever
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
<summary>What signal is used by default when you run 'kill <process id>'?</summary><br><b>
|
||||
<summary>What signal is used by default when you run 'kill *process id*'?</summary><br><b>
|
||||
<pre>
|
||||
The default signal is SIGTERM (15). This signal kills
|
||||
process gracefully which means it allows it to save current
|
||||
@ -1310,7 +1313,7 @@ You can also try closing/terminating the parent process. This will make the zomb
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
<summary>Can you explain how network process/connection is established and how it's terminated?><br></b>
|
||||
<summary>Can you explain how network process/connection is established and how it's terminated?></summary><br></b>
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
@ -2299,7 +2302,7 @@ Setting the replicas to 0 will shut down the process. Now start it with `kubectl
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
<summary>Explain recursion</summary<br><b>
|
||||
<summary>Explain recursion</summary><br><b>
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
@ -3130,7 +3133,7 @@ a = f()
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
<summary>Can you implement Linked List in Python?<br><b>
|
||||
<summary>Can you implement Linked List in Python?</summary><br><b>
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
@ -3962,7 +3965,7 @@ the pseudo table to retrieve the sum of the prices spent by each customer, then
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
<summmary>Describe in detail how you bring up an instance with an IP you can reach from outside the cloud</summary><br><b>
|
||||
<summary>Describe in detail how you bring up an instance with an IP you can reach from outside the cloud</summary><br><b>
|
||||
</b></details>
|
||||
|
||||
<details>
|
||||
|
@ -2,9 +2,10 @@
|
||||
|
||||
import random
|
||||
|
||||
rand_num_li = sorted([random.randint(1, 50) for iter in range(10)])
|
||||
rand_num_li = sorted([random.randint(1, 50) for _ in range(10)])
|
||||
target = random.randint(1, 50)
|
||||
|
||||
|
||||
def binary_search(li, le, ri, target):
|
||||
if le <= ri:
|
||||
mid = ri + le // 2
|
||||
|
91
scripts/main.py
Normal file
91
scripts/main.py
Normal file
@ -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))
|
29
scripts/tests/test.py
Normal file
29
scripts/tests/test.py
Normal file
@ -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
|
101
scripts/tests/testcase1.md
Normal file
101
scripts/tests/testcase1.md
Normal file
@ -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>
|
92
scripts/tests/testcase2.md
Normal file
92
scripts/tests/testcase2.md
Normal file
@ -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>
|
0
scripts/tests/testcase3.md
Normal file
0
scripts/tests/testcase3.md
Normal file
0
scripts/tests/testcase4.md
Normal file
0
scripts/tests/testcase4.md
Normal file
0
scripts/tests/testcase5.md
Normal file
0
scripts/tests/testcase5.md
Normal file
Loading…
Reference in New Issue
Block a user