Вы когда-нибудь задумывались о том, какие вопросы задают DevOps инженеру на собеседовании? Да, есть вполне обоснованное мнение, что таких инженеров в принципе быть не может (или все инженеры команды являются проводниками методологии DevOps), но все же на рынке хватает вакансий «DevOps Engineer» разных уровней. Сегодня мы рассмотрим вопросы DevOps инженерам высшего (без пипл менеджмента) уровня – Senior.
Пояснение №1
Данный материал собирает воедино опыт хороших людей, искавших работу с начала текущего (2023) года. Все собеседования были самые что ни на есть настоящие. Как сказал один хороший человек после пяти встреч – «Пострадала только моя гордость».
Пояснение №2
Вы не встретите в обзоре наименования компаний или указания на конкретные вакансии — соблюдаем элементарную этику. По этой же причине придется исключить несколько весьма интересных, но очень авторских вопросов.
Пререквизиты
Итак, небольшие вводные:
Формат работы
Удаленный с проживанием в определенной локации (например в нескольких часах езды от крупных городов или на территории РФ). Проживание на территории РФ для кандидатов из РФ сейчас во многих вакансиях обязательно. Предложения с офисным и гибридным форматом кандидатами не рассматривались, а жаль – это сразу отрезало до четверти вакансий. Увы, в 2023 многие работодатели решили вспомнить старый-добрый офис.Вилка
Senior DevOps на открытом рынке может рассчитывать за заработную плату от 280 до 420 тыс. руб. Меньше найти легко, больше – как правило только по знакомству. При этом кажется, что потолок технических специалистов в некоторых компаниях может спокойно составлять и миллион рублей. По крайней мере, 500-600 тыс. руб. в месяц – реальность.Условия
Как правило можно рассчитывать на возможность (не обязательство!) посещать офис для отвлечения от домашних забот, хороший ноутбук (с яблоком, если очень хочется) и ДМС со стоматологией. Кофе, печеньки, смузи – опционально.Работодатель
В основном рынок вакансий формируют бадишопы (кадровые агенства), банки, госуха (государственные и около государственные учреждения). Однако справедливости ради стоит отметить, что есть устойчивый спрос со стороны отечественных ИТ-гигантов и иностранных компаний.
Вопросы
Вот мы и подошли к самому главному – вопросам на собеседовании! Вопросы разобьем на две части – знакомство и техническое собеседование.
Знакомство (HR)
Занимает от 15 до 60 мин. и обычно проходит один на один с HR. Фактически целью знакомства является заполнение анкеты кандидата, однако зачастую также проверяется адекватность собеседуемого и иногда задаются технические вопросы-маркеры. Развернуто отвечать на технические вопросы здесь совершенно не обязательно – ответ просто должен хотя бы немного пересечься с эталонным.
Итак, вопросы (в некоторых я таки не удержался от комментария):
Что нравится и не нравится на текущем месте работы? Почему вышли на рынок труда?
Что ожидаете от нового места работы?
Подразумеваются ожидания по вилке, условиям, стеку технологий и задачам.Расскажите интересную или сложную задачу, которую приходилось решать?
Расскажите о Вашем опыте работы с <...>?
Kubernetes, Ansible, системы CI/CD, БД и очереди всех мастей, публичные облака – спрашивается максимальное количество слов, перечисленных в вакансии.Что такое GitOps? Применяете ли Вы его на практике?
Что такое GitFlow? Применяете ли Вы его на практике?
Что такое load average?
Что такое DevOps? Какие практики DevOps Вы знаете и применяете?
Чем отличаются коды сигналов 9 и 15 в ОС семейства Unix?
Слабовато – на память надо спрашивать отличия между 5, 12, 30 и 31.Что такое IaC (инфраструктура как код)? Как Вы применяете его на практике?
Техническое собеседование
Занимает от 1 до 3 часов и проходит с одним или двумя техническими специалистами; иногда присутствует также потенциальный руководитель. Для эффективной проверки опыта и знаний собеседуемого хотя бы один собеседующий технический специалист также должен быть уровня Senior. Многие вопросы предполагают проверку хода мыслей для решения той или иной проблемы и зачастую сопровождаются уточнениями, которые формируют граничные условия.
Вопросы (и снова кое-где я оставил комментарий):
Расскажите о своем опыте работы с <...>?
HR на вводной части так же задает подобные вопросы, но при разговоре с техническим специалистом подразумевается гораздо более глубокое погружение. ОС, виртуализация и контейнеризация, оркестрация приложений, БД и очереди, IaC, CI/CD, логгирование, мониторинг, программирование...Как работает стек протоколов TCP/IP? В чем отличия между UDP и TCP?
Как оцениваете свой уровень знания ОС Linux по десятибальной шкале?
Вопрос с подвохом. Ответ «на десять» для заядлого линуксоида все равно что красная тряпка для быка, поэтому вы рискуете провести следующие два часа своей жизни максимально увлекательно.Что такое systemd и зачем он нужен? Что такое systemd unit? Как написать systemd unit?
Что такое дистрибутив Linux? С какими дистрибутивами приходилось работать?
Фраза «Дистрибутив Дубунту отстой, я люблю Красную Звезду» может привести ко второму Большому взрыву, так что рекомендую быть политкорректным :)Как оценить утилизацию ресурсов в Linux?
Чем отличается виртуализация от контейнеризации?
Еще один вопрос с подвохом, есть что обсудить :)Какие механизмы контейнеризации Вы знаете?
Очень легкий вопрос, не правда ли? Ну да, ну да. Пространства имен еще ладно, но вот пробраться сквозь дебри реализации контрольных групп будет уже не так просто.Как собрать образ контейнера?
Слои и размер важны, не забывайте.Как запустить контейнер с БД и контейнер с веб-приложением?
Предполагается, что вы догадаетесь о необходимости сохранить данные на случай перезагрузки контейнера, а также опубликуете порты для запросов.Как с помощью Ansible опубликовать несколько инфраструктурных systemd сервисов на несколько групп серверов?
Какие модули будете использовать? Где будете хранить код, как организовывать зависимости? Ну и раз уж начали – расскажите про приоритет переменных (precedance), особенности импорта плейбуков, стратегии выполения, а также...Какие компоненты есть в Kubernetes?
API server, scheduler, controller manager, kubelet и прочее, с подробностями и особенностями.Как опубликовать приложение в Kubernetes?
Интересует все – от знания нативных ресурсов (сущностей) до аспектов практического написания манифестов.Как организовать маршрутизацию трафика извне на пул приложений в Kubernetes?
Что такое ingress и ingress controller? Istio? А он Вам точно нужен?..Как организовать асинхронную передачу данных между системами с помощью Kafka?
Есть о чем поговорить – кластеризация, продюсеры и консюмеры, топики, партиции.С какой БД приходилось работать плотнее всего? Как помогали оптимизировать производительность?
Дисковая подсистема, индексы, может быть помощь в оптимизации запросов? А что насчет бекапов? А что насчет высокой доступности?Вы пришли в компанию и обнаружили, что публикация осуществляется путем отправки jar в личку админу. Как будете выстраивать процесс CI/CD?
Jenkins, TeamCity, Gitlab CI? А расскажите подробнее...Какие языки программирования знаете и как применяете в работе?
Python и Go – скучно... А что же Groovy? А как насчет bash? Является ли bash языком программирования?
Ставь ↑ , если понравилось и хочется продолжения! Можно рассмотреть вопросы с собеседований DevOps инженеров уровней Junior, Middle и Team Lead, а также дать несколько бесполезных советов собеседующим и собеседуемым :)