Співбесіда з DevOps. 300+ запитань для Junior, Middle, Senior
Можна сперечатися про популярність DevOps, а можна просто готуватися до співбесіди та отримати омріяні 9K :) Щоб допомогти вам зорієнтуватись у питаннях, які ставлять на інтерв’ю, ми поспілкувались з тими, хто їх проводить, і склали список можливих запитань.
Якщо ви не DevOps, то перегляньте інші добірки питань.
Junior
Загальні
1.Що таке DevOps?
2.Ви набираєте google.com у браузері. Розкажіть якомога детальніше, що відбувається в цей час?
3.Як працює HTTPS?
4.Поясніть концепцію Infrastructure as Code, для чого це потрібно і які проблеми вирішує?
Linux
5.Опишіть загальну архітектуру операційної системи.
6.Опишіть основне призначення операційної системи.
7.Навіщо потрібні файлові системи? Які існують?
8.У чому різниця між віртуалізацією і контейнеризацією?
9.У чому переваги контейнерів?
10.Яка файлова структура у Linux (UNIX) систем, що розташовані в / etc, / dev, / proc, / sys, / lib, / var (кілька директорій на вибір)?
11.Що таке Load Average?
12.У чому різниця між soft та hard symlink?
13.Як працюють file permissions, навіщо директорії права виконання (+x)?
14.Що таке zombie process?
15.За допомогою чого можна зібрати інформацію про поточний стан процесора, пам’яті, диска, мережі?
16.Що таке swappiness?
17.Як подивитися вільне місце на диску?
18.Що таке inode?
19.Розкажіть поетапно процес завантаження Linux від моменту ввімкнення живлення комп’ютера.
20.Що станеться під час виконання команд:
1. cat file1 > file2
2. cat file1 >> file2
21.У чому різниця між Ctrl+C та Ctrl+Z?
22.Як перенаправити одночасно stderr та stdin?
23.Як вбити процес? Які є типи сигналів?
24.Що робить команда grep?
25.Що таке скрипт bash?
26.Які типи змінних використовують у bash?
27.Що виведуть команди:
1. echo ${hostname};
2. echo $(hostname);
Networks
28.Що таке модель OSI, TCP/IP?
29.Для чого потрібні network masks?
30.Структура IP-пакета. З чого складається? Що таке фрагментація та чому вона відбувається?
31.Що таке колізія? Чому виникає?
32.Що таке проксі?
33.Що таке firewalls і навіщо вони потрібні?
34.Що таке NAT і навіщо він потрібен?
35.Які типи IP-адрес ви знаєте?
36.За яким портом і протоколом працюють Ping і Traceroute?
Clouds
37.У чому різниця між IaaS, PaaS та SaaS?
38.Що таке VPC і з яких компонентів має складатись?
39.Що таке cloud-init? init/systemd/upstart configs?
Automation
40.Що таке IaaC і навіщо він потрібний?
41.Що таке Terraform?
42.Які інструменти автоматизації ви знаєте?
Information Security
43.У чому різниця між аутентифікацією та авторизацією?
44.Сертифікати. Як працює HTTPS? Що таке certificate ciphers?
45.Як безпечно передати дані своєму колезі?
46.Що таке MFA, TOTP?
Віртуалізація
47.У чому різниця між віртуалізацією та контейнеризацією? У чому плюси та мінуси?
48.Як для при запуску Docker-контейнера «повісити» його з
49.Як передати у віртуальну машину USB device?
50.Docker-контейнер споживає багато SWAP. Що робити?
CI/CD
51.Що таке Continuous Integration та Continuous Deployment? У чому різниця між Continuous Deployment і Continuous Delivery?
52.Опишіть основні етапи CI/CD.
53.Опишіть приклад процесу CI (та/або CD), який починається з моменту, коли розробник запушив зміни/PR до Git?
54.Розкажіть про різновиди тестів, які ми можемо використовувати в CI пайплайні.
55.Які інструменти CI ви використовували? Чи є досвід роботи з Jenkinsfile?
56.Які види тестів ви знаєте і навіщо вони потрібні?
Development
57.Git. Як вирішити merge conflict? Що таке rebase, cherry-pick?
58.У чому різниця між git merge та git rebase?
59.Які UI використовували?
60.Яка різниця між GitLab/GitHub/Bitbucket?
61.Яка різниця між Git pull/Git fetch?
62.Що таке Git-flow?
63.Версіонування. Яка різниця між SemVer та CalVer?
64.Тестування. Які існують види? Як писати тести, TDD?
65.У чому різниця між компільованими та інтерпретаційними мовами програмування?
Monitoring/Logging
66.Які метрики треба збирати? Різниця між infrastructure та application monitoring.
67.Яка різниця між pull та push model у системах моніторингу?
68.Яка різниця між Black box та White box monitoring?
69.Розкажіть про підходи до збору application логів.
Практичні завдання
71.Напишіть просту програму мовою на ваш вибір. Програма має отримувати повідомлення з сервісу черг і друкувати його в stdout. Сервіс черг — на ваш розсуд.
72.Розберіть структуру сервісу (на прикладі Docker-compose).
73.Практична сесія роботи з Git (Git command line: fetch, push, pull, rebase, checkout, submodules).
Middle
Linux
1.Опишіть архітектуру ядра Linux.
2.Що таке ядро і яке його призначення?
3.Опишіть загальні частини файлової системи Unix/Linux, архітектуру файлової системи.
4.У чому різниця між RedHat і Debian?
5.У чому різниця між /proc and /sys?
6.Ситуація: показує, що на диску зайнято 50% місця, а створити файл навіть під root користувачем не можемо. У чому проблема?
7.Ми видалили файл, який відкрив застосунок. Як нам його відновити?
8.Як знайти PID процесу, його стартові параметри?
9.Як перевірити, чи відкритий порт на віддаленому хості, локальному хості?
10.Як шукати файл за його вмістом?
11.Що таке SSH, як організувати доступ на сервер без пароля або з певних хостів? Як обмежити доступні для виконання команди?
12.Як перевірити спожиті ресурси під час сеансу SSH?
13.Що означає дозвіл на файл 755?
14.Що таке SELinux і навіщо він потрібен?
15.Як визначити PCI-пристрій у системі, наприклад RAID controller?
16.Як перейменувати пристрій, наприклад мережеву карту чи диск?
17.Що таке LVM? Які знаєте приклади використання?
18.Що таке root reserved space?
19.Що таке exit code та як його дізнатися?
20.Чому вивід df -h показує, що на диску зайнято мало місця, але система не дає записати файл із повідомленням no space left on device?
21.У чому різниця між command1 & command2 та command1 && command2, а також command1 && command2 || command3?
22.З мережі різко зріс вихідний трафік на
23.Як затюнити параметри Linux Kernel?
24.Що таке ulimits?
25.У чому різниця між символічними та hard links?
26.Що таке фрагментація ext3 and ext4?
27.Навіщо файлові системи ext* резервують 5% місця?
28.Як збільшити розмір файлової системи?
29.Чи можемо ми зменшити розмір файлової системи?
30.Що таке chroot і навіщо він потрібний?
31.У нас є Linux box з 2 Гб оперативної пам’яті та Java-застосунок, який намагається виділити 4 Гб під час запуску. Чи вдасться це?
32.Є програма, яка читає файл, який користувач намагається видалити. Що трапиться? Чи можна видалити цей файл? Чи можна відновити цей файл?
33.Які механізми створення процесів у Linux ви знаєте?
34.Порівняйте systemd та init system.
35.У вас є папка з великою кількістю файлів, і ви хочете видалити всі файли з іменами, що починаються на A (велика літера). Але команда rm -f A* видає Argument list too long. Як можна видалити ці файли?
36.Ви починаєте видаляти файли першим методом з попереднього питання, але кожен rm запитує підтвердження. Це дуже довго. Як можна прискорити цю операцію?
Networks
37.Розкажіть про модель OSI. Опишіть функції та призначення кожного рівня.
38.Які мережеві топології ви знаєте? Опишіть різницю між ними.
39.Навіщо потрібна IP-адреса, якщо MAC-адреса унікальна? Хіба ми не можемо спілкуватися тільки за MAC-адресою?
40.У чому різниця між концентратором і комутатором L2 у мережах Ethernet?
41.Що таке Vlan і навіщо існує поділ на віртуальні локальні мережі?
42.Який номер порту використовують для PING-комунікації?
43.Що таке сеанс зв’язку? Який алгоритм використовує TCP для доставки?
44.У чому основна відмінність між TCP і UDP?
45.Навіщо нам маршрутизатор за замовчуванням?
46.Як хост вирішує DNS за замовчуванням?
47.Комп’ютер почав отримувати IP-адресу з іншої мережі (є підозра, що в мережі працює інший DHCP-сервер): як його знайти і від’єднати? Які є методи захисту від такої проблеми?
48.Ми будемо мігрувати сайт на нову IP-адресу. Як зробити, щоб користувачі цього практично не помітили?
49.Що таке socket?
50.Як дізнатися, які віддалені хости під’єднуються до хосту через порт 8888? (за допомогою команд і не використовуючи /proc чи /sys).
51.Ми маємо кілька мережевих карт. Як збільшити пропускну спроможність сервера?
52.Як перевірити відкриті порти на віддаленому сервері без команди Netcat чи Nmap Linux?
Container orchestration
53.У чому переваги Kubernetes як платформи?
54.Що таке control plane та з яких компонентів складається?
55.Які CNI ви використовували та чим вони відрізняються?
56.Чим відрізняється managed Kubernetes від self-deployed?
57.Яким чином можна контролювати розміщення подів у кластері? (taints/tolerations, affinities, topologies etc)
58.Скейлінг кластеру. Cluster autoscaler vs HPA vs VPA? Як зробити zero-downtime node decommission/cluster upgrade? PDB? Lifecycle hooks?
59.Які існують способи для зовнішнього доступу до кластеру? ingress, node port, port-forward тощо.
60.З яким PID запускається процес у контейнері?
61.Що краще використовувати для ізоляції оточення — Vagrant чи Docker?
62.Який інструмент оркестрування контейнерів використовували? (Swarm, Kubernetes, Openshift, Rancher тощо.)
63.Що відбувається в Kubernetes після запуску kubectl (API, ReplicaSet Controller, storage back-end, scheduler, kubelet, worker node, pod)?
64.Яка різниця між pod та контейнером у K8s?
65.Як ми можемо зробити будь-який мікросервіс, який працює на K8s, доступним із зовнішнього середовища?
Віртуалізація і контейнеризація
66.Які типи віртуалізації ви знаєте?
67.Як працює Docker на macOS/Windows?
68.Що таке Docker-image і Docker-контейнер? Як вони між собою пов’язані?
69.Які основні відмінності між контейнерами докерів і віртуальними машинами?
70.Що таке image layer? Яка максимальна кількість layers можлива? Чому треба намагатися мати малу кількість layers? Яка оптимальна кількість?
71.Як у віртуальній машині змінити розмір диска після створення? Що треба зробити з гостьовою ОС?
72.Як у Docker реалізовано обмеження ресурсів?
73.Існує віртуальна машина, до якої втрачено доступ. Як, маючи доступ до її диска, відновити root пароль/SSH-ключ?
74.Оптимізувати Dockerfile, пояснити, що і чому так:
FROM golang RUN apt install -y pkg1 pkg2 pkgN # Dependencies for app COPY. . RUN go build -o app main.go CMD ./app
75.Що таке IPVS та який функціонал у нього є?
76.Яка структура API у Kubernetes?
77.Що таке operators і для чого вони потрібні?
CI/CD
78.Які стадії мають бути в будь-якому пайплайні (lint, test, build, deploy etc)?
79.Як і де зберігати build artifacts?
80.Що таке артефакт?
81.Є два бренчі: dev і stage. Ми закинули Dockerfile у dev, а потім збілдили у dev і stage. Це буде одним артефактом чи різними?
82.Що ви використовували для автоматизації налаштування Jenkins and GitLab CI?
83.Порівняйте CI інструментів: Jenkins, GitLab CI, AWS Code Pipeline, GCP cloudbuild, GitHub actions, Circle CI.
84.Deployment strategies. Які існують і чим відрізняються (recreate, blue-green, canary etc)?
85.Яким чином реалізувати СI/CD для програми, яка залежить від кількох інших програм?
86.GitOps. В чому його переваги та недоліки?
Clouds and Automation
87.Яка роль і переваги хмарних сервісів для DevOps?
88.Що таке immutable infrastructure? Як досягти? У чому переваги та недоліки? Packer, AMI тощо.
89.Структура Terraform. Як організувати multi-environment project? Terraform workspaces?
90.Найкращі практики з використання багатьох Terraform states.
91.Як організувати доступ розробницькій команді до AWS/GCP/Azure? Role-based access, assume role, SSO.
92.Що таке Terraform provider, module?
93.Як версіонувати Terraform modules?
94.Коли потрібно використовувати local-exec та remote-exec?
95.Що таке golden image та як його створити?
Monitoring/Logging
96.Як моніторинг допомагає підтримувати всю архітектуру системи?
97.Які інструменти моніторингу ви використовували?
98.Що таке медіана та процентиль?
99.Що таке SLI, SLO, SLA? Навіщо це потрібно?
100.Архітектура системи для збору логів, ELK, EFK etc. Як зберегти логи у разі відмови сховища? Чи потрібно використовувати для цього брокер повідомлень? Чи потрібно робити throttling/rate limits?
101.Prometheus long-term storage. Які варіанти?
102.Як працює Prometheus?
103.У чому принципова відмінність між Grafana і Kibana?
104.В чому головна відмінність між Ansible and Terraform?
105.Що таке SAAS monitoring та які види знаєте?
106.Якщо ви використовуєте Datadog/NewRelic, то як нам відстежувати падіння інструментів моніторингу?
107.Що таке distributed tracing та error tracking systems? Як ви думаєте, коли варто їх використовувати?
Information Security
108.У чому різниця між RBAC та ABAC?
109.У чому полягає XSS атака? SQL injection? Що таке CSP?
110.Які базові заходи можна вжити для захисту SSH-з’єднання?
111.Root-пароль невідомий чи загублений. Яка процедура відновлення?
112.Як керувати правами на файловій системі в Linux?
113.Що таке Firewall?
114.Чим відрізняється stateless від stateful фаєрволів?
115.Скільки таблиць у iptables?
116.Чи можна налаштувати трансляцію NAT за допомогою iptables? Яку таблицю варто використати?
117.Яку таблицю використовують для зміни заголовків пакетів?
118.Якщо вам ламають Linux-сервер, то як більш ефективно блокувати трафік з IP-адрес?
119.Принцип роботи GCP Firewall: чи можемо ми профільтрувати трафік на Load Balancer?
120.Що таке SELinux?
121.Чи можна повністю від’єднати SELinux на льоту?
122.З якими secrets management systems ви працювали?
123.У нас є сервер NAT, і ми хочемо забезпечити доступ за ІР до сервера зовні. Як нам це реалізувати?
123.Щоб потрапити на сервер клієнта, треба залогінитись на 4+ jump хоста. Як це автоматизувати? Де ми зберігатимемо наш SSH-ключ?
Development
125.Що таке cookies? Для чого потрібні? JWT?
126.Що таке feature toggles та навіщо вони?
127.Що таке TDD (Test Driven Development) та BDD (Behaviour Driven Development)?
Databases
128.Що таке індекс і що таке ключ?
129.Які переваги та недоліки індексів?
130.Уявіть, що ви розробляєте систему білінгу, яка має обробляти тисячі рахунків. Яку стратегію оновлення даних ви б обрали?
131.Які методи найчастіше використовують для масштабування реляційних баз даних?
132.Опишіть механізм транзакцій БД.
133.Як ми можемо видалити таблицю чи базу даних?
134.Як знайти повільні запити у MySQL/PostgreSQL?
135.Які SQL-оператори маніпулювання даними ви знаєте?
136.Чи можна вивести список баз даних/таблиць через CLI? Як ми можемо перемикатися між базами даних MySQL/PostgreSQL?
137.Які storage engines в MySQL ви знаєте? Які відмінності?
138.Як реалізовано реплікацію MySQL master-master? Скільки серверів MySQL може бути залучено в такій взаємодії?
139.Як працює реплікація MySQL/PostgreSQL? Які параметри мають бути налаштовані для реплікації?
140.Порівняйте SQL і NoSQL.
141.Sharding vs replication?
142.Які є види індексів? Коли і для чого використовувати?
143.Вимоги до схеми БД. Character sets, collations, default, not null тощо.
144.Ми мігруємо MySQL/PostgreSQL з on-prem у хмару. Як нам зробити це з мінімальним даунтаймом?
145.Навіщо та як тестувати перформанс баз даних?
Практичні завдання
146.Напишіть Terraform module для інфраструктури тестового сервісу у AWS.
147.Напишіть hello-world програму мовою на ваш вибір і сформуйте для неї helm chart/kustomize.
148.Як організувати деплой без downtime?
149.Опишіть способи troubleshooting для Docker-контейнера.
150.Розібрати і пояснити структуру CI/CD pipeline (на прикладі gitlab.yml).
151.Продемонструйте навички роботи з GitOps, опишіть деплоймент простенької програми.
152.Як організувати деплой вебзастосунку, запущений на кількох серверах без (або з мінімальним) downtime?
153.Як за допомогою Ansible дізнатися default gateway для пулу серверів, і якщо він відрізняється від бажаного, записати рядок «hostname: gateway» у файл на локальній машині?
Senior
Linux
1.Що може створювати високе навантаження на CPU (процеси застосунків споживають дуже мало ресурсів CPU)?
2.У нас немає команд ifconfig, ip, і поставити ми їх не можемо. Як нам дізнатися ip address, mask, network, routes?
3.Що таке suid, sgid та sticky?
4.Що тюнилося з системою для навантаження трафіку 1GB, 10G, 40G+?
5.Що тюнилося з системою для високого навантаження на диск?
6.Що таке Linux namespaces?
7.Що таке Ceph, як працює?
8.Що потрібно тюнити для Ceph?
9.Що станеться, якщо /dev/sda1 перенесемо в /root?
10.Ми видалили /dev/sda1. Як нам його відновити? Що таке pseudo-devices?
11.Нам хакнули сервер, і в директорії /var/www створили два мільйони файлів невеликого розміру. Якщо використовувати команду cd /var/www і потім rm -rf*, то у нас зависне термінал. Як видалити файли?
12.На якому рівні працює iptables?
13.Що таке eBPF та навіщо потрібен?
14.У вас є файл, який містить IP-адреси серверів (по одному в рядку). Є SSH-доступ до цих машин, і вам потрібно виконати завдання (наприклад, встановити список пакетів на всі вузли). Поясніть, як це можна зробити.
Networking
15.У чому відмінності між IPv4 та IPv6? Навіщо ми мігруємо на IPv6?
16.Співіснування IPv4 та IPv6: що це означає?
17.Чи справді працюють міжмережеві екрани з підтримкою IPv6?
18.Як працює DHCPv6? Чим він відрізняється від DHCPv4?
19.Як фрагментуються пакети IPv6 і чим це відрізняється від IPv4?
20Чи з IPv6 треба більше використовувати NAT?
21.Що таке DPDK?
22.Що таке SR-IOV? У чому різниця між DPDK та SR-IOV?
23.Що таке NetFlow та навіщо потрібен?
24.Що таке OpenFlow?
25.Що таке SDN і які контролери ви знаєте? Порівняйте контролери.
Різне
26.Що таке SDLC?
27.Розкажіть про останній досвід реалізації архітектури для сервісу.
28.Який найважчий скрипт писали?
29.Що таке configuration drift? Чому це відбувається і як це ускладнює життя інженерам\SRE\Ops?
30.Розкажіть про архітектуру, за яку ви наразі відповідаєте, і вкажіть, як вона масштабована та відмовостійка.
31.Назвіть три важливі KPI для DevOps-фахівця.
32.Як працює Kafka (clusters(brokers, controllers), topics, partitions)?
33.GitOps: Rancher Fleet vs Flux vs Argo?
34.Як використовувати GitOps для оновлення документації DevOps-застосунків?
35.Розкажіть про особливості проєктування Kubernetes on-premise.
36.Як організувати On-call процес для команди DevOps?
37.Опишіть основні кроки завантаження операційної системи Linux.
Container orchestration
38.Service mesh. Що це таке та для чого потрібно?
39.Cluster federation. Що це таке та для чого потрібно?
40.Pod fine-grained access. Як реалізувати? IRSA vs kube2iam vs kiam?
41.Як реалізовані послуги в кубернетах?
42.Як дебажити трафік контейнера?
43.Що таке unikernel і навіщо він потрібний?
44.Чому ком’юніті переїжджає з Docker containerd?
Clouds and Automation
45.Які переваги і недоліки cloud-провайдерів?
46.Cost optimization. Які є інструменти? Spot/preemptible instances, reservations?
47.Як організувати multi-account, multi-region cloud setup?
48.У чому полягає різниця між приватними та публічними мережами в AWS?
49.AWS Lambda: чи мали досвід роботи?
50.Коли варто переходити на AWS Lambda? Коли не варто? Аналогічні рішення в GCP чи Kubernetes?
51.Коли краще використовувати CloudFormation, а коли Terraform?
CI/CD
52.Що таке state в контексті використання Terraform?
53.Які існують branching strategy? На що опиратись при виборі?
54.Яким чином реалізувати feature/dynamic environments?
55.Як зробити емуляцію ресурсів cloud-провайдера для локального тестування та прискорення розробки?
56.Що таке MultiCloud?
57.Що таке Cloud-Agnostic і коли він буде потрібний?
58.Що таке Hybrid-Cloud та з якими рішеннями ви працювали?
Information Security
59.Як мають зберігатися паролі в базах даних (Salt&Pepper, Rainbow Tables, Adaptive Hashing)?
60.Як передавати секрети в application (Secrets management)?
61.Порівняйте CI/CD SAST та DAST?
62.Які ви знаєте Kubernetes security practices? RBAC? OPA? Які недоліки RBAC та які кейси знаєте?
63.Розкажіть про захист від DDOS атак, WAF.
64.Що таке Rootless containers і навіщо він потрібний?
65.Що таке AppArmor та Seccomp і навіщо вони потрібні?
66.Чи доводилося працювати з Falco? Якщо так, то що реалізовували?
67.HashiCorp Vault і як правильно передати нам секрети в контейнер і CI pipeline?
68.Що таке Admission Controllers та які ви використовували?
69.Як зберігаються секрети etcd? Як переглянути ресурси в etcd?
70.Чим перевіряєте на вразливості ваш Kubernetes cluster?
71.Що таке Secure SDLC?
72.Що ви знаєте про Cloud Infrastructure Attack via a Pull Request і як цього уникнути?
Observability
73.Що таке observability та чим відрізняється від звичайного моніторингу? Які особливості необхідно враховувати у мікросервісній архітектурі (tracing)?
74.Що таке SLI, SLO, SLA та для чого вони потрібні? Навіщо використовують error budget?
Databases
75.Що таке теорема CAP? Навіщо це треба?
76.Як працювати з міграціями? Що робити у випадку rollback? Як перевірити, що міграція backward-compatible?
77.Опишіть, як би ви оптимізовували роботу бази данних? (БД за вибором кандидата) Slow queries, buffers, thread pools?
78.Навіщо потрібно тестувати перформанс бази даних та якими інструментами?
Практичні завдання
79.Уявіть, що ви CTO Booking чи Airbnb. Які б ви ухвалювали рішення щодо:
- Мови програмування.
- Infrastructure as a Code.
- Архітектури інфраструктури.
- Налаштування CI/CD.
80.У вас є файл, який містить патчі в директорії. Наприклад:
/var/tmp/temp/file1.c
/var/tmp/file.ext
/var/tmp/temp/
etc... один шлях у рядку. Якщо шлях закінчується на ’/’ , це шлях до каталогу. Вам потрібно відновити це дерево каталогів із порожніми файлами в іншій файловій системі. Напишіть bash-скрипт.
81.Уявіть, що вам треба переконати Spotify, що використовує AWS, перейти на GCP. Як ви мотивуєте Spotify мігрувати на GCP?
82.Є сервісна компанія, яка надає сервіс трекінгу перевезень. Є клієнти, які не хочуть, щоб їхні дані процесувалися в AWS. Як нам реалізувати multi-cloud solution?
Дякуємо за матеріал Владу Волошину, Павлу Петриченку, Віталію Гарбулинському (BrightLocal), Євгену Думі, Сергію Яремчуку, Вадиму Шкілю, Олександру Білюку, Олександру Нежинському, Владиславу Граму, Станіславу Коленкіну, Олегу Миколайченку, Антону Гаврилову.
Найкращі коментарі пропустити