Skip to content

Latest commit

 

History

History
196 lines (171 loc) · 17.5 KB

Middle.md

File metadata and controls

196 lines (171 loc) · 17.5 KB

Middle

Питання

Linux

  • Опишіть архітектуру ядра Linux.
  • Що таке ядро ​​і яке його призначення?
  • Опишіть загальні частини файлової системи Unix/Linux, архітектуру файлової системи.
  • У чому різниця між RedHat і Debian?
  • У чому різниця між /proc and /sys?
  • Ситуація: показує, що на диску зайнято 50% місця, а створити файл навіть під root користувачем не можемо. У чому проблема?
  • Ми видалили файл, який відкрив застосунок. Як нам його відновити?
  • Як знайти PID процесу, його стартові параметри?
  • Як перевірити, чи відкритий порт на віддаленому хості, локальному хості?
  • Як шукати файл за його вмістом?
  • Що таке SSH, як організувати доступ на сервер без пароля або з певних хостів? Як обмежити доступні для виконання команди?
  • Як перевірити спожиті ресурси під час сеансу SSH?
  • Що означає дозвіл на файл 755?
  • Що таке SELinux і навіщо він потрібен?
  • Як визначити PCI-пристрій у системі, наприклад RAID controller?
  • Як перейменувати пристрій, наприклад мережеву карту чи диск?
  • Що таке LVM? Які знаєте приклади використання?
  • Що таке root reserved space?
  • Що таке exit code та як його дізнатися?
  • Чому вивід df -h показує, що на диску зайнято мало місця, але система не дає записати файл із повідомленням no space left on device?
  • У чому різниця між command1 & command2 та command1 && command2, а також command1 && command2 || command3?
  • З мережі різко зріс вихідний трафік на 25-й порт. Як, маючи доступ на гейтвей, виявити шкідника з внутрішньої мережі?
  • Як затюнити параметри Linux Kernel?
  • Що таке ulimits?
  • У чому різниця між символічними та hard links?
  • Що таке фрагментація ext3 and ext4?
  • Навіщо файлові системи ext* резервують 5% місця?
  • Як збільшити розмір файлової системи?
  • Чи можемо ми зменшити розмір файлової системи?
  • Що таке chroot і навіщо він потрібний?
  • У нас є Linux box з 2 Гб оперативної пам’яті та Java-застосунок, який намагається виділити 4 Гб під час запуску. Чи вдасться це?
  • Є програма, яка читає файл, який користувач намагається видалити. Що трапиться? Чи можна видалити цей файл? Чи можна відновити цей файл?
  • Які механізми створення процесів у Linux ви знаєте?
  • Порівняйте systemd та init system.
  • У вас є папка з великою кількістю файлів, і ви хочете видалити всі файли з іменами, що починаються на A (велика літера). Але команда rm -f A* видає Argument list too long. Як можна видалити ці файли?
  • Ви починаєте видаляти файли першим методом з попереднього питання, але кожен rm запитує підтвердження. Це дуже довго. Як можна прискорити цю операцію?

Networks

  • Розкажіть про модель OSI. Опишіть функції та призначення кожного рівня.
  • Які мережеві топології ви знаєте? Опишіть різницю між ними.
  • Навіщо потрібна IP-адреса, якщо MAC-адреса унікальна? Хіба ми не можемо спілкуватися тільки за MAC-адресою?
  • У чому різниця між концентратором і комутатором L2 у мережах Ethernet?
  • Що таке Vlan і навіщо існує поділ на віртуальні локальні мережі?
  • Який номер порту використовують для PING-комунікації?
  • Що таке сеанс зв’язку? Який алгоритм використовує TCP для доставки?
  • У чому основна відмінність між TCP і UDP?
  • Навіщо нам маршрутизатор за замовчуванням?
  • Як хост вирішує DNS за замовчуванням?
  • Комп’ютер почав отримувати IP-адресу з іншої мережі (є підозра, що в мережі працює інший DHCP-сервер): як його знайти і від’єднати? Які є методи захисту від такої проблеми?
  • Ми будемо мігрувати сайт на нову IP-адресу. Як зробити, щоб користувачі цього практично не помітили?
  • Що таке socket?
  • Як дізнатися, які віддалені хости під’єднуються до хосту через порт 8888? (за допомогою команд і не використовуючи /proc чи /sys).
  • Ми маємо кілька мережевих карт. Як збільшити пропускну спроможність сервера?
  • Як перевірити відкриті порти на віддаленому сервері без команди Netcat чи Nmap Linux?

Container orchestration

  • У чому переваги Kubernetes як платформи?
  • Що таке control plane та з яких компонентів складається?
  • Які CNI ви використовували та чим вони відрізняються?
  • Чим відрізняється managed Kubernetes від self-deployed?
  • Яким чином можна контролювати розміщення подів у кластері? (taints/tolerations, affinities, topologies etc)
  • Скейлінг кластеру. Cluster autoscaler vs HPA vs VPA? Як зробити zero-downtime node decommission/cluster upgrade? PDB? Lifecycle hooks?
  • Які існують способи для зовнішнього доступу до кластеру? ingress, node port, port-forward тощо.
  • З яким PID запускається процес у контейнері?
  • Що краще використовувати для ізоляції оточення — Vagrant чи Docker?
  • Який інструмент оркестрування контейнерів використовували? (Swarm, Kubernetes, Openshift, Rancher тощо.)
  • Що відбувається в Kubernetes після запуску kubectl (API, ReplicaSet Controller, storage back-end, scheduler, kubelet, worker node, pod)?
  • Яка різниця між pod та контейнером у K8s?
  • Як ми можемо зробити будь-який мікросервіс, який працює на K8s, доступним із зовнішнього середовища?

Віртуалізація і контейнеризація

  • Які типи віртуалізації ви знаєте?
  • Як працює Docker на macOS/Windows?
  • Що таке Docker-image і Docker-контейнер? Як вони між собою пов’язані?
  • Які основні відмінності між контейнерами докерів і віртуальними машинами?
  • Що таке image layer? Яка максимальна кількість layers можлива? Чому треба намагатися мати малу кількість layers? Яка оптимальна кількість?
  • Як у віртуальній машині змінити розмір диска після створення? Що треба зробити з гостьовою ОС?
  • Як у Docker реалізовано обмеження ресурсів?
  • Існує віртуальна машина, до якої втрачено доступ. Як, маючи доступ до її диска, відновити root пароль/SSH-ключ?
  • Оптимізувати Dockerfile, пояснити, що і чому так:

FROM golang RUN apt install -y pkg1 pkg2 pkgN # Dependencies for app COPY. . RUN go build -o app main.go CMD ./app

  • Що таке IPVS та який функціонал у нього є?
  • Яка структура API у Kubernetes?
  • Що таке operators і для чого вони потрібні?

CI/CD

  • Які стадії мають бути в будь-якому пайплайні (lint, test, build, deploy etc)?
  • Як і де зберігати build artifacts?
  • Що таке артефакт?
  • Є два бренчі: dev і stage. Ми закинули Dockerfile у dev, а потім збілдили у dev і stage. Це буде одним артефактом чи різними?
  • Що ви використовували для автоматизації налаштування Jenkins and GitLab CI?
  • Порівняйте CI інструментів: Jenkins, GitLab CI, AWS Code Pipeline, GCP cloudbuild, GitHub actions, Circle CI.
  • Deployment strategies. Які існують і чим відрізняються (recreate, blue-green, canary etc)?
  • Яким чином реалізувати СI/CD для програми, яка залежить від кількох інших програм?
  • GitOps. В чому його переваги та недоліки?

Clouds and Automation

  • Яка роль і переваги хмарних сервісів для DevOps?
  • Що таке immutable infrastructure? Як досягти? У чому переваги та недоліки? Packer, AMI тощо.
  • Структура Terraform. Як організувати multi-environment project? Terraform workspaces?
  • Найкращі практики з використання багатьох Terraform states.
  • Як організувати доступ розробницькій команді до AWS/GCP/Azure? Role-based access, assume role, SSO.
  • Що таке Terraform provider, module?
  • Як версіонувати Terraform modules?
  • Коли потрібно використовувати local-exec та remote-exec?
  • Що таке golden image та як його створити?

Monitoring/Logging

  • Як моніторинг допомагає підтримувати всю архітектуру системи?
  • Які інструменти моніторингу ви використовували?
  • Що таке медіана та процентиль?
  • Що таке SLI, SLO, SLA? Навіщо це потрібно?
  • Архітектура системи для збору логів, ELK, EFK etc. Як зберегти логи у разі відмови сховища? Чи потрібно використовувати для цього брокер повідомлень? Чи потрібно робити throttling/rate limits?
  • Prometheus long-term storage. Які варіанти?
  • Як працює Prometheus?
  • У чому принципова відмінність між Grafana і Kibana?
  • В чому головна відмінність між Ansible and Terraform?
  • Що таке SAAS monitoring та які види знаєте?
  • Якщо ви використовуєте Datadog/NewRelic, то як нам відстежувати падіння інструментів моніторингу?
  • Що таке distributed tracing та error tracking systems? Як ви думаєте, коли варто їх використовувати?

Information Security

  • У чому різниця між RBAC та ABAC?
  • У чому полягає XSS атака? SQL injection? Що таке CSP?
  • Які базові заходи можна вжити для захисту SSH-з’єднання?
  • Root-пароль невідомий чи загублений. Яка процедура відновлення?
  • Як керувати правами на файловій системі в Linux?
  • Що таке Firewall?
  • Чим відрізняється stateless від stateful фаєрволів?
  • Скільки таблиць у iptables?
  • Чи можна налаштувати трансляцію NAT за допомогою iptables? Яку таблицю варто використати?
  • Яку таблицю використовують для зміни заголовків пакетів?
  • Якщо вам ламають Linux-сервер, то як більш ефективно блокувати трафік з IP-адрес?
  • Принцип роботи GCP Firewall: чи можемо ми профільтрувати трафік на Load Balancer?
  • Що таке SELinux?
  • Чи можна повністю від’єднати SELinux на льоту?
  • З якими secrets management systems ви працювали?
  • У нас є сервер NAT, і ми хочемо забезпечити доступ за ІР до сервера зовні. Як нам це реалізувати?
  • Щоб потрапити на сервер клієнта, треба залогінитись на 4+ jump хоста. Як це автоматизувати? Де ми зберігатимемо наш SSH-ключ?

Development

  • Що таке cookies? Для чого потрібні? JWT?
  • Що таке feature toggles та навіщо вони?
  • Що таке TDD (Test Driven Development) та BDD (Behaviour Driven Development)?

Databases

  • Що таке індекс і що таке ключ?
  • Які переваги та недоліки індексів?
  • Уявіть, що ви розробляєте систему білінгу, яка має обробляти тисячі рахунків. Яку стратегію оновлення даних ви б обрали?
  • Які методи найчастіше використовують для масштабування реляційних баз даних?
  • Опишіть механізм транзакцій БД.
  • Як ми можемо видалити таблицю чи базу даних?
  • Як знайти повільні запити у MySQL/PostgreSQL?
  • Які SQL-оператори маніпулювання даними ви знаєте?
  • Чи можна вивести список баз даних/таблиць через CLI? Як ми можемо перемикатися між базами даних MySQL/PostgreSQL?
  • Які storage engines в MySQL ви знаєте? Які відмінності?
  • Як реалізовано реплікацію MySQL master-master? Скільки серверів MySQL може бути залучено в такій взаємодії?
  • Як працює реплікація MySQL/PostgreSQL? Які параметри мають бути налаштовані для реплікації?
  • Порівняйте SQL і NoSQL.
  • Sharding vs replication?
  • Які є види індексів? Коли і для чого використовувати?
  • Вимоги до схеми БД. Character sets, collations, default, not null тощо.
  • Ми мігруємо MySQL/PostgreSQL з on-prem у хмару. Як нам зробити це з мінімальним даунтаймом?
  • Навіщо та як тестувати перформанс баз даних?

Практичні завдання

  • Напишіть Terraform module для інфраструктури тестового сервісу у AWS.
  • Напишіть hello-world програму мовою на ваш вибір і сформуйте для неї helm chart/kustomize.
  • Як організувати деплой без downtime?
  • Опишіть способи troubleshooting для Docker-контейнера.
  • Розібрати і пояснити структуру CI/CD pipeline (на прикладі gitlab.yml).
  • Продемонструйте навички роботи з GitOps, опишіть деплоймент простенької програми.
  • Як організувати деплой вебзастосунку, запущений на кількох серверах без (або з мінімальним) downtime?
  • Як за допомогою Ansible дізнатися default gateway для пулу серверів, і якщо він відрізняється від бажаного, записати рядок «hostname: gateway» у файл на локальній машині?