Sunday, October 31, 2021

Вопросы на собеседовании DevOps инженера

Приветствую, ниже список вопросов которые я задавал devops инженеру на этапе собеседования (собеседование с командой). Зачастую, мы отыгрывали модель хороший-плохой коп :). Я старался быть хорошим, обычно более жесткую технику спрашивали на первом этапе собеседовании или же коллега из R&D/Производства. Вопросы уже неактуальны,  давались 2 года назад мной (я был еще более зеленым). Скорее просто нашел старую заметку - удалять жалко



Сразу оговорюсь, что нам на самом деле был нужен просто толковый админ с зачатками программирования и более-менее хорошей производственной культурой (тесты, воспроизводимость результата и т.д.).

Обычно адекватно оценить соискателя просто — «поговорить за жизнь». Т.е. о работе что делал, с какими проблемами сталкивался, как решали. А как бы он решил, если бы эти ограничения сняли?

Общий вопрос

  1. Расскажи, что такое CI и что такое CD? Что в себя включает каждый этап? А в чем разница между Continuous Deployment (деплой на бой по клику) и Continuous Delivery (все тесты прошли - автоматом деплой)?
  2. Какая любимая операционка? А почему?  Какие IDE используешь в повседневе? А инструменты?
  3. Что такое кеширование и почему это важно?
  4. Что такое statefull и stateless приложения? В чем плюсы последнего (Ответ: идеальное горизонтальное масштабирование - мы не сохраняем состояния. Пример stateefull-бд)
  5. Опиши,  что такое IaC? (Инфра как код, например  Ansible/Puppet/Chef и т.д).  С какими системами управления конфигурациями работал? Почему именно с ними, в чем между ними разница?
  6. Как ты управляешь артефактом после сборки ? Какие хранилища используешь?
  7. Вот у тебя NodeJS проект - стоит задача юзать на проекте ноду - необходимо обеспечить возможность быстрого обновления ноды - как ты это сделаешь? (Ответ - поставлю nvm)

    GIT и процессы
  8. Какой у вас git-flow был? А как апдейты выкатывали ? (Вдогонку уточняющий - Собирали ли отдельно каждый Pull Request, или уже после влития в dev. Если да - то как собирали, как гарантировали, что не поломаете dev после влития). Как вообще Git работает?
  9. А как бы построил CI/CD для группы программистов? Как бы ты осуществлял бы деплой билда и проверял его корректность? 
    На чем бы строил? (Jenkins, team city, bamboo, gitlab, что-нибудь другое).
    А почему? А как сине-зеленые билды делал? А что такое канореечные  релизы ? (Ответ - когда выкатываешь апдейт на прод рядом со старой версией и на новую сажаешь ограниченное количество пользователей и смотришь как оно себя ведет)
  10. Опиши TDD процесс, как ты тесты вплетал бы в CI процесс? Опиши свой идеальный по твоему мнению CI процесс. А статический анализатор внедрял и на каком этапе, а какой?

    Jenkins - вопросы в общем виде
  11. Если есть опыт работы с Jenkins - в дополнение, к предыдущему вопросу -  с какими способами описания пайплайна работал? (Groovy файл (?), Jenkinsfile, Обычная Джоба). Как организовать MultiBranch Pipeline и для чего он нужен? (Отсылка к 8-ому вопросу), тут можно еще спросить - как контролировал статус Pull request’a, что он ничего не ломает

  12. Из частной практики - вот у тебя Jenkins (стоит локально на машине) не может достучаться до Docker на этой же машины - вопрос почему? Вот он ругается на права доступа, что надо сделать? (Ответ: Добавить пользователя Jenkins в группу докера)
  13. Как бы сделал CD используя Jenkins ? (Лить билды под ssh, в хранилище docker образов и забирать оттуда, можно крутить сразу на Jenkins-Slave ноде).
  14. Как выполнять одну глобальную джобу на нескольких нодах (Jenkins-Slave)? (Ответ - глобальная джоба запускается, а поддждобы запускаются на нужных нодах).

     
  15. Есть ли опыт разработки плагинов для дженкинса?

    Docker
  16. У тебя стоит виртуалка - твоя задача максимально быстро развернуть на нее всю нужную инфру. Как ты это сделаешь ? Погонять про docker-compose. 
  17. Какие утилиты знаешь, для удобного управления доккер контейнерами? А с упором на неподготовленного пользователя - где есть GUI какой-нибудь, а не консоль. (Может быть несколько - я юзаю portioner - через веб интерфейс). 
  18. А есть готовые утилитка для организации CD на Кубер? Какие смотрел?

    Nginx и балансировка нагрузки
  19. Как ты сделаешь балансировку на хост ? Вводные у тебя 2 машины - трафик должен литься на них в зависимости от их нагрузки, что предложишь использовать в качестве балансёра (HaProxy, Nginx, X5). А чем они отличаются? (Nginx не учитывает нагрузку машины - HaProxy, учитывает, X5- не знаю)
  20. Чем плоха схема когда трафик льется сразу на ноду? (Ответ: Задержки, от конкретной ноды, тем более под нагрузкой).
    А в чем узкое место схемы с балансёром? (1 балансёром который пускает на себя трафик на 3 ноды, если балансёром приляжет - упадет все).
    Какие варианты организации тут ты можешь предложить? (Просто посмотреть, что предложит)

     
  21. Практическая задача на nginx: тебе по определенному адресу необходимо обеспечивать трафик на одну из машин как ты это сделаешь? (Задача на reverse proxy - должен рассказать кейс как у нас на sc.link был), а если необходимо отрабатывать частно все роуты api кроме api/docs, а если дефолтный роут - перекидывать на бекенд, а часть на фронтент? (Ответ: задачка на регулярку которая у нас на sc.link юзается. Есть второй способ из документации - nginx опрашивает все хосты и пытается найти адрес, но у нас не сработало на нашем кейсе и это фича Enterprise версии. Вообще, Ромыч переписал конфиг за мной и теперь регулярку нет необходимости юзать :) )
    .
    Что ты тут предложишь?
  22. Практический вопрос: У тебя Nginx крутится на хосте с ssl шифрованием, в режиме reverse proxy (мы прикидываем https) - по какому протоколу будешь делать reverse proxy на результирующие машинки (спрятаны за vpn). А что будет быстрее - результирующий трафик гнать на https спрятанной машины или по http? А почему?  (Правильный ответ: С результирующего хоста гнать на машинку по http, потому что гнать трафик по https->https более накладно по времени). Поспрашивать про HttpV2 - общую эрудированность
  23. <Всякие уже linux-specific вещи. Как на эрудированность, так и узкие моменты/способы подловить>
  24. <Вопросы по куберу>

No comments:

Post a Comment