Собеседование — это одно из ключевых этапов трудоустройства. Работодатели задают стандартные и технические вопросы. Если хотите получить приглашение на работу, то стоит подготовиться к собеседованию. Как раз об этом поговорим в статье.
Опытом поделился Максим Гусев. Он руководил командами DevOps-инженеров и разработчиками. Знает всю кухню профессии.
Дисклеймер: в статье опираемся на опыт Максима. У технических директоров разные подходы к отбору и собеседованию кандидатов. Если у вас другой опыт, напишите в комментариях, с радостью почитаем.
Как происходит отбор кандидатов
Есть два основных варианта: кандидат приводит HR и кандидат приходит к нам напрямую (откликнулся, передали его резюме). В чем разница?
Когда кандидата ищет HR, то тимлид передает специалисту информацию по основным навыкам. Например, необходимо найти DevOps-инженера, который разбирается в Docker, Kubernetes и GitLab. Рекрутер просматривает резюме специалистов и выбирает по ключевым навыкам.
Если сотрудника ищет тимлид, то он опускает этап отбора по ключевым навыкам. Он сразу смотрит резюме тех кто откликнулся, чтобы понять, подходит кандидат или нет.
Что есть в любой вакансии
В тексте каждой вакансии есть основные блоки. Кандидат сможет понять, что от него требуется, соотнести свой опыт и знания. Наниматель сможет соотнести требования из вакансии с резюме кандидата.
Основные блоки:
Минимальные требования, которым человек должен соответствовать: Docker, ansible, linux-base, GIT.
Рекомендуемые требования. Те вещи, которые сильно хотят видеть в кандидате. Это построение и понимание CI/CD проектов, определенный CI/CD-инструмент, инструменты мониторинга.
Будет плюсом. Например, K8S, Hashicorp Vault + Consul, Service Mech, языки программирования.
Еще есть такая вещь, как дроп-поинты. Особенности, из-за которых кандидат отклоняется на должность (их нет в вакансии). Максим выделяет следующие дроп-поинты: частая смена работы, должность, не совпадающая с задачами, переход из маркетинга в DevOps.
Как наниматель готовится к собеседованию
Наниматель, как и кандидат, готовится к собеседованию. Это необходимо, чтобы понять, чем кандидат занимался, какие технологии использовал, какой у него опыт и т.д.
Основные этапы (опыт Максима Гусева):
Отсматриваю резюме: отсекаю дроп-поинты, проверяю минимальные требования, соответствие рекомендуемым требованиям, смотрю раздел «Обо мне». Также надеюсь увидеть репозиторий или информацию о пет-проектах.
Формирую вопросы по прошлому опыту.
Формирую блок базовых и дополнительных вопросов по навыкам.
Подбираю устные кейсы под кандидата, на основе его опыта и нашего стека.
Составляю практические задачи, если необходимо и кандидат согласен.
Технические вопросы на собеседовании
Ответы на вопросы помогают узнать о реальных знаниях и опыте кандидата. Наниматель может задавать любые технические вопросы. Есть люди, которые основательно подходят к этой части. Расскажем об основных направлениях, по которым задают вопросы.
Linux-base и администрирование. Нанимателю необходимо точно понять, насколько хорошо кандидат разбирается в сетях, ядре Linux, как работает память и процессы. Какие команды знает, как применяет на практике и так далее.
Знание GIT: какие flow бывают, чем отличаются, как с ними работать. Например, чем отличается GitHub Flow от GitLab Flow. Как тот или иной flow влияет на процесс разработки.
Docker. Вопросы начинаются с понимания работы: чем виртуализация отличается от контейнеризации, как работает Docker и какие инструменты Linux он использует.
Наниматель проверяет такие моменты, как знание аргументов dockerfile. Как они работают, какие команды порождают слои, как можно их уменьшить и так далее. Кандидат должен знать, что в Docker за что отвечает.
Еще учитывается знание Best Practice и работа с compose: правильное построение сервисов, зависимости, override. Важно понимать, что человек умеет работать с compose, а не просто копирует с GitHub готовое решение.
Рассмотрим несколько вопросов и ответы на них:
Какие есть best practices по работе с Dockerfile?
Ответ: достаточно, чтобы кандидат озвучил несколько best practices из официальной статьи.
Что делает entrypoint? Что происходит когда его пишем?
Ответ: формируется точка входа в приложение.
Какие команды порождают слои?
Ответ: run.
Ansible. Как и с Docker, проверяется понимание работы: какие модели бывают, в чем их разница, что такое идемпотентность, разница моделей работы, основные примитивы, показать примеры своих плейбуков - будет хорошим плюсом.
Если у человека нет возможности показать какие-то свои плейбуки, просят зачитать плейбук. Для этого берется заранее подготовленный плейбук. Затем просят кандидата рассказать, что происходит в примере.
Примеры вопросов по Ansible:
Опишите основные примитивы Ansible
Ответ: инвентарь, задание, сценарий, плейбук, роль, факты.
В чем разница между модулем и плагином?
Ответ: модуль выполняет что-либо на хостах, плагин — расширяет функционал Ansible.
Для чего нужны хендлеры?
Ответ: это обработчики, которые срабатывают тогда, когда задача что-то меняет.
Ansible — это объемный инструмент. По нему можно часами задавать вопросы. Выше базовые вопросы, которые задает Максим Гусев.
Другие работодатели могут и будут задавать любые технические вопросы. Примеры, какие могут быть вопросы:
Как работает ядро?
Что такое inodes?
Что такое LA и что значит LA 900, 900, 900?
Как работает DNS и зачем он нужен?
Что такое NAT и какой он бывает?
Теоретические кейсы
Кейсы делаются на основе бэкграунда кандидата. У человека не спрашивают то, о чем он физически не знает и не работал с конкретной технологией. Будет странно готовить кейсы по Kubernetes, если в резюме этого нет. Разберем два примеры.
1. Разрабы сломали докер файл, ввели entrypoint, которого нет, что будем делать?
Ответы:
Поменять entrypoint через docker run --entrypoint="/bin/sh"
Пересобрать докер файл с инсталом баша или исправлением entrypoint (если баш нам не критичен)
2. Упал сервис, но мы о нем ничего не знаем, кроме того, где он стоит и какую ошибку выдает по порту. Что будем делать?
Ответ: как такового ответа нет, суть — посмотреть как человек будет диагностировать проблему, какие команды будет использовать и что будет делать.
Практические задания
Если есть сомнения по теории, то опыт и знания проверяются на практике, с согласия кандидата. При этом практическая часть тоже основывается на бэкграунде кандидата.
Примеры практических заданий:
Совмещение знаний по Ansible + Docker + прикладной сервис.
Нарисовать пайплайн доставки кода до клиента, используя анализаторы кода, conf и cred manager и service mash.
Поднять миникуб, в него загнать пайплайн сборки приложения
и настроить argo CD.
Чтобы обойти других кандидатов, устроиться на желаемую должность, еще необходимо прокачивать хард скиллы. Наш курс «DevOps Upgrade» помогает готовиться к техническому интервью: вы систематизируете знания, раскладываете все по полочкам, работаете с Git, Ansible, Docker, Kubernetes, CI/CD и другими технологиями. Ещё вы получаете практику и пет-проекты, которые можно показать работодателям.
Новой поток стартует 15 сентября. Вы можете посмотреть программу и записаться на курс на нашем сайте.
Комментарии (9)
ky0
07.09.2023 06:24+5Половина ответов неточна или вовсе неверна. Извините, Максим — но на позицию миддла я бы вас, скорее всего, не нанял :)
Evgenym
07.09.2023 06:24+2"Какие команды порождают слои?
Ответ: run"Открываем документацию https://docs.docker.com/build/guide/layers/ и видим:
"Each instruction in a Dockerfile roughly translates to an image layer."
Hardcoin
07.09.2023 06:24+4Что делает entrypoint? Что происходит когда его пишем?
Ответ: формируется точка входа в приложение
Когда не знаешь ответ, но пытаешься выехать на интуиции и знании английского.
ALexhha
07.09.2023 06:24Какие команды порождают слои?
Ответ: run
Add/Copy ну да ну да, пошел я нафиг
Leetc0deMonkey
Мне кажется это интервьюер должен готовиться к собеседованию. Специалист он такой какой он есть, и он не должен ни к чему "готовиться". Это задача нанимающего разобраться подойдёт такой специалист или нет.
Hardcoin
Специалисту надо готовиться, если он хочет показать себя несколько лучше, чем есть. Если не хочет, то готовиться не нужно, вы правы.
Leetc0deMonkey
Специалист, несомненно, подготовится: и наврёт с три короба в резюме, и на собесе удалённом у него там "группа поддержки" за кадром.
Hardcoin
Я не говорил, что это хорошо. Для компании плохо, если она наймёт дилетанта за большие деньги.
Leetc0deMonkey
Ну вот, а компания не только ничего не делает чтобы обезопасить себя, но и ещё подталкивает "ну вы там подготовьтесь к собесу, чтоли".