Популярные вопросы на техническом DevOps интервью
При устройстве на работу почти всем приходится проходить техническое интервью как первый этап.
Следующим этапом может идти тестовое задание, а может быть еще одно или несколько технических собеседований. Процесс может отличаться в разных компаниях, но в любом случае ответы на популярные вопросы стоит изучить заранее.
Сегодня публикую некоторые из наиболее интересных вопросов:
- Какой системный вызов завершается успешно, хотя код его завершения ненулевой?
Ответ: системный вызов fork()
в Unix-подобных операционных системах, таких как Linux, создает новый (дочерний) процесс, дублируя текущий (родительский) процесс. У успешного выполнения этого системного вызова уникальное свойство отличается от большинства других системных вызовов: он возвращает разные коды в родительском и дочернем процессах. В родительском процессе fork()
возвращает PID
(идентификатор процесса) нового дочернего процесса, который является положительным числом. Это позволяет родителю идентифицировать и управлять его дочерними процессами.
- Что происходит на системном уровне, когда вы выполняете в терминале
ls -l
?
Ответ: коротко так: Запуск shell-интерпретатора - Разбор команды - Поиск исполняемого файла - Запуск нового процесса - Замена образа процесса - Выполнение команды - Вывод результатов - Завершение процесса.
- Сколько максимум процессов может быть в состоянии
Running
?
Ответ: максимальное количество процессов, находящихся в состоянии RUNNING (R)
в системе Linux, определяется архитектурой системы и конфигурацией ядра. В непрерывном режиме в системе может работать только один процесс на каждое ядро процессора. Все остальные процессы имеют состояние S/D
и ждут своей очереди на выполнение.
- Какие технологии лежат в основе контейнеризации?
Ответ: две ключевые технологии лежат в основе контейнерного подхода в Linux: Namespaces и Control Groups
. Пространства имен используются для изолирования рабочих процессов контейнера друг от друга и от хостовой системы. Технология control groups обеспечивает ограничение и изоляцию использования ресурсов (таких, как CPU, память, дисковое пространство, сеть и т. д.) каждым контейнером.
А теперь по кубу:
- Что такое
headless service
?
Ответ: Headless Service - это особый тип service в Kubernetes, который не имеет собственного IP-адреса для обращения к нему. Вместо этого он делегирует управление прямо к подам. Наиболее полезен для приложений, где информация может быть сразу на всех узлах, и нагрузка будет распределяться между всеми узлами.
- Сколько нод ETCD кластера оптимально запускать?
Ответ: часто используется конфигурация из трех нод, что позволяет кластеру терпеть одну ноду в состоянии отказа, и в то же время обеспечивает хороший уровень отказоустойчивости. Для очень высоких требований к доступности, вы можете рассмотреть пять нод, что позволяет двум нодам отказать, не препятствуя работе кластера. Для увеличения скорости обработки запросов нет смысла запускать больше нод etcd.
✅ Остальные популярные вопросы с подробными ответами можно посмотреть в моем Devops Roadmap.