Вопросы с DEVOPS собеседований. 350 вопросов для JUNIOR, MIDDLE, SENIOR
Можно спорить о популярности DevOps, а можно просто готовиться к собеседованию и получить желанные оффер на 10к долларов. Чтобы помочь вам сориентироваться в вопросах, которые задают на интервью, мы поговорили с теми, кто их проводит, и составили список возможных вопросов.
http://t.me/DevOPSitsec – канал, который поможет вам освоить DevOps профессию.
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);
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?
40. Что такое IaaC и зачем он нужен?
41. Что такое Terraform?
42. Какие инструменты автоматизации вы знаете?
Information Security
43. В чем разница между аутентификацией и авторизацией?
44. Сертификаты. Как работает HTTPS? Что такое certificate ciphers?
45. Как безопасно передать данные своему коллеге?
46. Что такое MFA, TOTP?
47. В чем разница между виртуализацией и контейнеризацией? В чем плюсы и минусы?
48. Как при запуске Docker-контейнера «повесить» его из 80-го порта в контейнере на 8081 на хост?
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. В чем разница между компилируемыми и интерпретационными языками программирования?
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).
Вопросы Docker
Docker, первый выпуск которого был еще в 2013 году, — весьма удобный инструмент для сборки пакетов, поставки и запуска приложений в «контейнерах». Большинство крупных компаний, например, Google, Amazon и VMware рассматривают Docker как зрелую технологию для контейнеров, поэтому сейчас самое время изучить этот инструмент и в результате продвинуться по карьерной лестнице. Хотите? В статье будут приведены вопросы по Docker, ответы на которые нужно знать, если вы идете на собеседование.
Что такое контейнер Docker?
Контейнер — базовая единица программного обеспечения, покрывающая код и все его зависимости для обеспечения запуска приложения прозрачно, быстро и надежно независимо от окружения. Контейнер Docker может быть создан с использованием образа Docker. Это исполняемый пакет программного обеспечения, содержащий все необходимое для запуска приложения, например, системные программы, библиотеки, код, среды исполнения и настройки.
Опишите составные части архитектуры Docker
Основные составные части архитектуры Docker — это:
- сервер, содержит сервис Docker, образы и контейнеры. Сервис связывается с Registry, образы — метаданные приложений, запускаемых в контейнерах Docker.
- клиент, применяется для запуска различных действий на сервере Docker.
- registry, используется для хранения образов. Есть публичные, доступные каждому, например, Docker Hub и Docker Cloud.
Опишите Registry подробнее
Docker Registry служит для хранения образов Docker. Есть два публичных сервиса хранения: Docker Hub и Docker Cloud. Docker Hub — наиболее значимая публичная система хранения образов контейнеров, полностью поддерживаемая множеством разработчиков и другими участниками сообщества.
Расскажите кратко о жизненном цикле контейнера Docker
Жизненный цикл контейнера:
- Создание контейнера
- Работа контейнера
- Приостановка контейнера
- Возобновление работы контейнера
- Запуск контейнера
- Остановка контейнера
- Перезапуск контейнера
- Принудительная остановка контейнера
- Удаление контейнера
Назовите наиболее важные команды Docker
Наиболее важные команды Docker:
- build, сборка образа для Docker
- create, создание нового контейнера
- kill. принудительная остановка контейнера
- dockerd, запуск сервиса Docker
- commit, создание нового образа из изменений в контейнере
Что такое пространства имен в Docker?
Пространства имен Docker — это технология обеспечения изолированных рабочих пространств, известная как контейнер. Как только контейнер запускается, создается набор пространств имен для этого контейнера. Они обеспечивают уровень изоляции для контейнеров, поскольку каждый контейнер работает в отдельном пространстве имен, с ограничением доступа к другим пространствам.
Что такое Docker Swarm?
Docker Swarm (теперь это уже swarm mode, прим. переводчика) — встроенный инструмент Docker, используемый для организации кластеризации и планирования контейнеров. Разработчики и системные администраторы с его помощью могут легко собрать несколько узлов в единую виртуальную систему Docker и управлять ею.
Как определить состояние контейнера Docker?
Чтобы определить состояние, надо запустить команду:
docker ps -a
Эта команда выведет список всех доступных контейнеров с их состоянием на сервере. Из этого списка нужно выбрать требуемый контейнер и узнать его состояние.
Что такое образ Docker, что делает команда Docker run?
Образ Docker — это набор файлов, соединенный с настройками, с помощью которого можно создать экземпляры, которые запускаются в отдельных контейнерах в виде изолированных процессов. Образ строится с использованием инструкций для получения полной исполняемой версии приложения, зависящей от версии ядра сервера. Команда Docker run используется для создания таких экземпляров, называемых контейнерами, запускаемыми с использованием образов Docker. При запуске одного образа пользователь может создать несколько контейнеров.
Опишите функции и случаи применения Docker
С помощью Docker можно:
- Сделать процесс настройки проще и упростить настройку на уровне инфраструктуры;
- Помочь разработчикам сосредоточиться исключительно на коде, сокращая время разработки и увеличивая продуктивность;
- Усилить возможности отладки с использованием встроенных функций;
- Изолировать приложения;
- Улучшить плотность использования серверов в форме контейнеризации;
- Делать быстрое развертывание на уровне операционной системы.
Что такое объекты Docker?
Под объектами понимают образы, сервисы и контейнеры.
Образы — шаблоны с инструкциями только для чтения для создания контейнеров.
Контейнеры — запущенные экземпляры образов.
Сервисы — можно запустить несколько контейнеров поверх нескольких сервисов Docker, работающих совместно как swarm.
Еще объектами можно назвать сети и тома.
Какой тип приложений больше подходит для контейнеров Docker: с хранением состояния (stateful) или без хранения (stateless)?
Приложения без хранения состояния (stateless) больше подходят для работы в Docker, чем приложения с хранением (stateful). Мы можем создать контейнер для нашего приложения и принять некоторые его настройки. Таким образом мы можем запускать один и тот же контейнер с разными настройками для различных окружений. Если мы не будем хранить состояние, сможем использовать один и тот же образ в разных сценариях. Также такие приложения проще масштабировать при их работе в контейнерах Docker.
Что такое Dockerfile?
Dockerfile содержит инструкции для сборки образов, которые передаются в Docker. Также его можно описать как текстовый документ, содержащий все возможные команды, с помощью которых пользователь, последовательно их запуская, может собрать образ.
Какие сети доступны по умолчанию в Docker?
По умолчанию есть:
- bridge, сеть, к которой подключаются контейнеры, если не указано иначе.
- none, сетевой стек без наличия сетевого интерфейса в контейнере.
- host, подключение к сетевому стеку сервера.
Приведите необходимые шаги для развертывания докеризированного приложения, сохраненного в репозитории Git
Шаги, необходимые для развертывания приложения зависят от окружения, основной процесс развертывания будет таким:
- Сборка приложения с использованием Docker build в каталоге с кодом приложения
- Тестирование образа
- Выгрузка образа в Registry
- Уведомление удаленного сервера приложений, что он может скачать образ из Registry и запустить его
- Перестановка порта в прокси HTTP(S)
- Остановка старого контейнера
Чем Docker отличается от остальных технологий контейнеризации?
Docker — одна из последних разработок в контейнеризации, он стал одной из наиболее популярных. Docker, созданный в облачную эру, сделал возможным использование новых функций, ранее отсутствующих в старых технологиях контейнеризации. Самая крутая функция Docker — это работа с использованием любой инфраструктуры, неважно, у вас дома, либо в облаке.
Посредством Docker все больше приложений могут работать на старых серверах, также с его помощью можно упаковывать и поставлять программы. Существует также DockerHub, Registry для контейнеров, откуда можно легко и просто скачать образы контейнеров для использования. Еще более интересная функция — общие контейнеры для таких приложений. Также Docker хорошо задокументирован, что делает его лучше остальных технологий контейнеризации.
Если вы остановите контейнер — потеряете данные?
Если контейнер Docker останавливается, потери данных не происходит, поскольку все данные, пишутся на диск приложением с единственной целью — хранение. Этот процесс повторяется до тех пор, пока контейнер не будет однозначно удален. Более того: файловая система контейнера хранит изменения даже после полной остановки контейнера.
Как выполняется мониторинг Docker в производственных окружениях?
Для мониторинга есть инструменты Docker stats и Docker events. С их помощью можно получить отчеты по важной статистике. Если запустить stats с некоторым идентификатором контейнера, он вернет использование оперативной памяти и процессорного времени в контейнере. Это схоже с использованием команды top. С другой стороны есть events, показывающая список активностей в процессе работы сервиса Docker. Вот некоторые из них: подключение к консоли контейнера, commit, переименование, удаление и т.п., а также есть возможность фильтрации нужных событий.
Расскажите о рабочем процессе использования Docker
Краткое пояснение рабочего процесса с использованием Docker:
- Все начинается c Dockerfile, поскольку это исходный код образа.
- Как только он создан, его можно использовать для сборки образа контейнера. Образ — собранная версия Dockerfile.
- Образ можно распространять, используя Registry, работающий как репозиторий образов.
- Далее образ используется для запуска контейнеров. Контейнер при работе весьма похож на виртуальную машину, но без гипервизора.
Поясните разницу между docker run
и docker create
Главная разница между этими командами заключается в том, что вторая создаст контейнер в остановленном состоянии. Также docker create
может быть использована для хранения и вывода идентификатора контейнера для будущего использования. Лучше всего это делать с помощью docker run
, добавляя --cidfile FILENAME
, поскольку повторный запуска не перезаписывает файл.
Что такое виртуализация?
Виртуализация, как только понятие появилось, обозначала способ логического разделения мейнфреймов для обеспечения одновременной работы нескольких приложений. Но со временем, с появлением в отрасли возможности одновременной работы нескольких операционных систем на одном сервере x86, смысл виртуализации значительно поменялся.
Что же в сухом остатке? С помощью виртуализации можно запустить две различных операционных системы на одном и том же оборудовании. Первая операционная система используется для административных целей, все остальные гостевые — загружаются как обычно, включая инициализацию, загрузку ядра и т.д. Это также идеально для безопасности, поскольку гостевая ОС не может получить полного доступа к управляющей (host) ОС, что могло бы привести к дырам в безопасности.
Есть три типа виртуализации:
- Паравиртуализация
- Эмуляция
- Контейнерная виртуализация
В чем разница между Registry и Repository?
Registry — это сервис хранения и распространения образов, также DockerHub — это Registry по умолчанию. Repository — это набор связанных образов. У них одно и то же имя, но разные метки.
Можно ли использовать JSON вместо YAML в файле для docker-compose, если да — как?
Да, так можно сделать. Для этого нужно явно указать имя файла, например так:
docker-compose -f docker-compose.json up
Расскажите о CMD и ENTRYPOINT в Dockerfile
Эти инструкции Dockerfile задают команду, исполняемую при запуске контейнера. При их использовании есть несколько правил, например:
- Должна быть минимум одна из них, CMD или ENTRYPOINT, в Dockerfile.
- Если контейнер используется как исполняемый файл — ENTRYPOINT должна быть определена.
- Если контейнер запускается с другими аргументами — CMD будет переопределена.
Опишите процесс запуска приложения внутри контейнера Linux, используя Docker
- Установите и запустите Docker;
- Скачайте базовый образ с Docker Hub;
- Загрузите ваше приложение в базовый образ;
- Запустите контейнер в интерактивном режиме, используя полученный образ;
- Проверьте контейнеры в системе;
- Запустите или остановите контейнер;
- Зайдите внутрь контейнера;
- Удалите контейнер и образ.
Что такое гипервизор?
Гипервизор, он же монитор виртуальных машин, — это программное обеспечение для создания и запуска виртуальных машин. С его помощью можно запустить на одном компьютере несколько гостевых операционных систем. Это достигается с помощью разделения ресурсов, например, оперативной памяти, процессорного времени и т.п., сокращая требования к памяти, дисковому пространству и обслуживанию. Есть два типа гипервизоров:
- первого типа, легковесная операционная система, запускаемая на оборудовании;
- второго типа, программное обеспечение, запускаемое из операционной системы.
Расскажите о ключевом различии между виртуализацией и контейнеризацией
Виртуализация позволяет запустить несколько операционных систем на одном физическом сервере. Контейнеризация работает на одной и той же операционной системе, в которой приложения упакованы в контейнеры и запускаются на одном сервере/виртуальной машине.
Расскажите об образах Docker, DockerHub, Dockerfile
Образы: файлы, содержащие несколько слоев, используемые для выполнения кода внутри контейнера. Они собираются по инструкциям для получения исполняемой версии приложения. Образы могут ускорить сборку в Docker с помощью кэширования каждого этапа.
DockerHub: сервис для поиска и совместного использования образов контейнеров. Вы можете выгружать туда свои образы, скачивать их оттуда, работать с частными репозиториями образов контейнеров, собирать автоматически образы с помощью GitHub (Bitbucket), а затем закачивать их в DockerHub. Этот сервис предоставляет компания Docker.
Dockerfile: текстовый файл, используемый для сборки образа. Он содержит инструкции и команды по сборке образа. Docker читает их и автоматически собирает образ.
Как проверить версии Docker client и Docker server?
Версию Docker можно проверить с помощью docker version [параметры]
. Если не указывать параметры, команда выдаст всю информацию, связанную с версией клиента и сервера. Чтобы получить только версию сервера, можно запустить такую команду:
docker version --format '{{.Server.Version}}'
Расскажите о процедуре входа в Docker Repository
Чтобы войти в Docker Repository, используется следующая команда:
docker login [OPTIONS] [SERVER]
Например, для входа в registry, размещенную на своих мощностях (локально), команда будет такой:
$ docker login localhost:8080
Расскажите о наиболее общих командах Docker
- docker push: Закачать репозиторий или образ в Registry;
- docker run: Запустить команду в новом контейнере;
- docker pull: Скачать репозиторий или образ из Registry;
- docker start: Запустить один или несколько контейнеров;
- docker stop: Остановить один или несколько контейнеров;
- docker search: Поиск образа на DockerHub;
- docker commit: Сохранить изменения в новый образ.
Чем отличается контейнеризация в виде Docker от других технологий?
Docker может быть легко развернут в любой облачной платформе. Также разработчики могут создать готовые к запуску контейнеризированные приложения быстрее, могут легко развертывать приложения и управлять ими. Кроме того, контейнеры могут быть общими для приложений. Эти функции не работают в других технологиях контейнеризации.
На каких платформах запускается Docker?
Docker работает на Windows (x86_64), Linux (x86_64, ARM, s390x, ppc64le).
Возможен ли самостоятельный перезапуск контейнера?
Да, возможен. Docker задает различные политики перезапуска контейнера:
- Off: контейнер не перезапускается, если он остановился или аварийно завершил работу;
- On-failure: перезапуск только в случае аварийной остановки, но не по команде пользователя;
- Unless-stopped: перезапуск будет работать до тех пор, пока пользователь его не остановит;
- Always: перезапуск в любом случае, независимо от ошибок или других проблем.
Политику можно задать так:
$ docker run -dit — restart [unless-stopped|off|on-failure|always] [CONTAINER]
Можно ли сравнить облака по возможностям контейнеризации с Docker?
Здесь можно высказать свое мнение, например, я думаю, что несмотря на то, что облака — хороший конкурент, они не смогут заменить контейнеризацию. Большинство компаний используют облака и контейнеризацию вместе, чтобы получить лучшее от обеих технологий.
Опишите все возможные состояния контейнера Docker
Created — контейнер создан, но не активен.
Restarting — контейнер в процессе перезапуска.
Running — контейнер работает.
Paused — контейнер приостановлен.
Exited — контейнер закончил свою работу.
Dead — контейнер, который сервис попытался остановить, но не смог.
Расскажите о средствах оркестрации и случаях их использования
Оркестрация позволяет управлять работой контейнеров, запущенных в больших и динамических окружениях. С ее помощью можно автоматизировать и управлять следующими задачами:
- Создание и развертывание контейнеров;
- Балансировка нагрузки;
- Разделение ресурсов между контейнерами;
- Мониторинг контейнеров и серверов;
- Масштабирование контейнеров;
- Перенос контейнеров с одного сервера на другой, если на первом возникает недостаток ресурсов.
Опишите параметр memory-swap
С помощью параметра memory-swap можно разрешить контейнеру записывать на диск данные, превышающие размер оперативной памяти, выделенной контейнеру. Он работает, только если используется одновременно с параметром memory. Например, если memory = “400m” и memory-swap = “1g”, то контейнер может использовать 400мб оперативной памяти и 600мб подкачки (1гб-400мб).
Где хранятся тома Docker?
Тома, создаваемые и управляемые Docker (у не-Docker процессов к ним нет доступа), хранятся в файловой системе сервера Docker по пути /var/lib/docker/volumes/
. Тома — наиболее эффективный способ сохранения данных в Docker.
Назовите продвинутые команды Docker
Наиболее важные из них:
docker -version: узнать установленную версию Docker;
docker ps: перечислить все запущенные контейнеры вместе с дополнительной информацией о них;
docker ps -a: перечислить все контейнеры, включая остановленные, вместе с дополнительной информацией о них;
docker exec: войти в контейнер и выполнить в нем команду;
docker build: собрать образ из Dockerfile;
docker rm: удалить контейнер с указанным идентификатором;
docker rmi: удалить образ с указанным идентификатором;
docker info: получить расширенную информацию об установленном Docker, например, сколько запущено контейнеров, образов, версию ядра, доступную оперативную память и т.п.;
docker cp: сохранить файл из контейнера в локальную систему;
docker history: показать историю образа с указанным именем.
Расскажите о командах systemd для управления Docker
Для запуска Docker многие дистрибутивы Linux используют systemd. Для запуска сервисов используется команда systemctl
. Если ее нет, следует использовать команду service
.
$ sudo systemctl start docker
$ sudo service docker start
Чтобы добавить сервис в автозагрузку, либо убрать его:
$ sudo systemctl enable docker
$ sudo systemctl disable docker
Для проверки параметров запуска сервиса и их изменения:
$ sudo systemctl edit docker
Просмотра связанных с сервисом журналов:
$ journalctl -u docker
Опишите процесс масштабирования контейнеров Docker
Контейнеры могут быть масштабированы с использованием команды docker-compose scale
. Процесс масштабирования такой:
- Масштабируем контейнер и запускаем n экземпляров:
$ docker-compose --file docker-compose-run-srvr.yml scale <service_name>=<n>
В вышеприведенном примере имя сервиса задается в файле docker-compose-run-srvr.yml
, а также запускается n копий контейнеров, где n — любое целое положительное число.
- После масштабирования контейнера для проверки можно использовать такую команду:
$ docker ps -a
Что такое CNM?
CNM или Container Network Model — описание, формально определяющее шаги, требуемые для предоставления сети контейнерам, где обслуживающая абстракция применяется для поддержки нескольких сетевых драйверов. CNM основан на трех компонентах: sandbox (песочница), оконечная точка и сеть.
Какие типы монтирования доступны в Docker?
- Bind mount: подключаются к любой точке файловой системы сервера;
- Volume mount: управляются Docker и хранятся как часть файловой системы сервера;
- tmpfs mount: хранятся в оперативной памяти сервера, поэтому никогда не пишутся на реальную файловую систему сервера.
Расскажите о Docker Trusted Registry
Это хранилище образов для безопасного хранения и управления образами Docker. Его можно установить на своих мощностях, либо в частном облаке. DTR применятся в процессах CI/CD для сборки, поставки и запуска приложений. Его также можно развернуть в отказоустойчивом варианте, есть встроенная система управления доступом.
Каково назначение docker_host?
Он задает URL или путь к сокету unix, используемые для соединения с API Docker. Значение по умолчанию — unix://var/run/docker.sock
Для подключения к удаленному серверу обычно используется TCP, например:tcp://192.0.1.20:3230
Возможен ли запуск нескольких копий одного и того же compose файла на одном и том же сервере? Как именно?
Это можно сделать с помощью docker-compose, использующего файл YAML для настройки сервисов приложения. После его создания вы можете в одну команду создать и запустить все сервисы. Для того, чтобы начать им пользоваться:
- Задайте окружение приложения в Dockerfile, так что оно сможет быть реплицировано везде
- Определите все сервисы вашего приложения в файле docker-compose.yml
- Запустите docker-compose up для создания и запуска приложения целиком
Объясните метки объектов в Docker
Метки объектов Docker — это пары ключ-значение, сохраняемые в виде строк. Мы можем применить метаданные с их помощью. Метки могут быть применены к любому объекту, например, образу, контейнеру, тому, сети, локальным сервисам, узлам swarm и непосредственно сервисам. Каждая пара должна быть уникальной для объекта, сами метки не меняются динамически на протяжении существования объекта.
1. Опишите архитектуру ядра Linux.
2. Что такое ядро и каково его предназначение?
3. Опишите общие части файловой системы Unix/Linux, архитектуру файловой системы.
4. В чем разница между RedHat и Debian?
5. В чем разница между /proc и /sys?
6. Ситуация: указывает, что на диске занято 50% места, а сделать файл даже под root юзером не можем. В чем проблема?
Тема связана со специальностями:
С чего начать? Frontend Developer Верстальщик сайтов
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. Из сети резко вырос исходящий трафик на 25-й порт. Как, имея доступ на гейтвей, обнаружить вредителя из внутренней сети?
23. Как затюнить параметры Linux Kernel?
24. Что такое ulimits?
25. В чем разница между символическими и hard links?
26. Что такое фрагментация ext3 и 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 запрашивает подтверждение. Это очень долго. Как можно ускорить эту операцию?
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?
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 и зачем они нужны?
78. Какие стадии должны быть в любом пайплайне (lint, test, build, deploy etc.)?
79. Как и где хранить build artifacts?
80. Что такое артефакт?
81. Есть два бренча: dev и stage. Мы забросили Dockerfile в dev, а затем сбилдили в dev и stage. Это будет одним артефактом или разными?
82. Что вы использовали для автоматизации настройки Jenkins и 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 и как его создать?
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? Как вы думаете, когда следует их использовать?
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, и мы хотим обеспечить доступ по IP к серверу снаружи. Как нам это реализовать?
123. Чтобы попасть на сервер клиента, нужно залогиниться на 4+ jump хоста. Как автоматизировать? Где мы будем хранить наш SSH-ключ?
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» в файл на локальной машине?
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 доступ к этим машинам, и вам нужно выполнить задание (например, установить список пакетов на все узлы). Объясните, как можно это сделать.
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.
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 оптимизация. Какие инструменты? Spot/preemptible instances, reservations?
47. Как организовать multi-account, multi-region cloud setup?
48. В чем разница между частными и публичными сетями в AWS?
49. AWS Lambda: имели ли опыт работы?
50. Когда следует переходить на AWS Lambda? Когда не стоит? Аналогичные решения в GCP или Kubernetes?
51. Когда лучше использовать CloudFormation, а когда Terraform?
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 и как этого избежать?
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?