понедельник, 14 мая 2018 г.

Вопросы на собеседовании на позицию DevOps-инженера

Опишу тут некоторые вопросы, которые мне задавали на эту позицию.
Я около месяца проходил собеседования в компании из России, Украины, Европы и некоторые из вопросов я запомнил. Конечно, по большей части вопросы задавали конкретно по моему опыту работы, который я описал в резюме, однако некоторые из них повторялись очень часто и их стоит выделить.

На всех собеседованиях на данную позицию в первую очередь проверяют уровень английского. Для каждой компании этот уровень разный, для некоторых достаточно того, чтобы ты понимал документацию на английском и мог в письменном виде как-то коммуницировать, для некоторых важен разговорный английский, так как либо общение с заказчиком, либо непосредственно с командой идет на этом языке.

При собеседовании с европейскими компаниями как правило достаточно знать английский на уровне Intermediate/Upper-Intermediate и бегло говорить на нем (понимать что говорит интервьюер и выразить свои мысли устно). Местные языки обычно не спрашивают, например при собеседовании в немецкие компании, знание немецкого не является обязательным.

Несколько пометок которые я для себя сделал после собеседований с европейцами:
1. Отвечать кратко и не говорить лишней информации
2. Улыбаться
3. Иметь веселую интонацию в голосе
4. Желательно узнать немного о компании в которую собеседуетесь
5. Быть готовым ответить на вопросы: сколько хотите зарабатывать, сколько времени понадобится на релокейт, почему решили переехать, где вы видите себя через N лет, имеется ли опыт работы с иностранным заказчиком

На английском языке обычно просят рассказать о себе, о своем опыте работы, о зарплатных ожиданиях, почему тебе нравится именно эта позиция и так далее.

Непосредственно вопросы технического характера:
— Что такое Load Average, SWAP, inode?
— Опишите модель OSI и все ее уровни?
— Чем отличается TCP от UDP, как устанавливается соединение TCP?
— Когда нужно использовать SWAP, а когда нет?
— Чем отличается git pull от git fetch?
— Чем отличается транзакция от запроса, в контексте БД?
— Как починить chmod -x /bin/chmod?
— Что такое DevOps, Agile?
— С какими методологиями разработки ПО работал? Что знаешь о Scrum, Kanban и т.д?
— Чем виртуалки отличаются от контейнеров?
— Клиенты жалуются на то, что веб-сервис стал медленно работать, как бы ты последовательно докапывался до проблемы? Как обнаружить bottleneck?
— Чем отличаются реляционные БД от нереляционных и key-value? С какими из них работал, как бы ты организовывал разгрузку баз, репликации, миграции, бекапы?
— Что такое балансировщик? Какие типы балансировки при деплое знаешь? Что такое blue-green deployment, канареечные релизы?
— Как бы ты организовал поднятие инфраструктуры в облаке, в случае если отвалилась целая зона или регион?
— Как налету мигрировать работающую базу из одного региона в другую?
— Как бы ты строил ту или иную архитектуру проекта?
— Работал ли с облаками, AWS, GCP, Azure, OpenStack?
— Что представляет собой докер-контейнер? Из каких двух базовых вещей состоят контейнеры (имеется ввиду namespaces и cgroups)?
— Какие инструменты оркестрации контейнеров использовал? Для чего нужен Kubernetes, Nomad, Swarm, Compose?
— Есть ли опыт работы со стеком ELK, со стеком ПО от Hashicorp (Vault, Consul, Nomad, Terraform и т.д)?
— С какими системами мониторинга работал? Есть опыт работы с Prometheus?
— С какими CI-системами работал? В чем отличия Jenkins от TeamCity и других аналогичных систем?
— Что такое Continuous Integration/Delivery/Deployment и чем они друг от друга отличаются?
— Есть ли опыт внедрения CI/CD в инфраструктуру java-приложений (ant/maven/gradle)?
— С какими системами управления конфигурациями работал (Ansible/Puppet/Chef и т.д)? Почему именно с ними, в чем между ними разница?
— Как в access-логе Nginx посмотреть самые активные IP-адреса за последние сутки с помощью BASH?
— Как отсортировать массив в Python? Написать код в реальном времени.

И напоследок.
Есть такой скрипт на баше, какие ошибки ты в нем видишь?
#!/usr/bin/env bash

include <stdio.h>
include <math.h>

trigger_counter = 1
data_dir="/var/test/dash"

curl --silent -h "Content-Type: application/json" "https://bitbucket.org/testproj/python/test.tar.gz" -o /test.tar.gz
tar -xf /test.tar.gz -C /opt/

uwsgi -d --ini /opt/main.py

3 комментария:

Anton комментирует...

а как же ответы на технические вопросы?)))

Anton комментирует...

и вообще получилось пройти собеседование на devops?)

Amet Umerov комментирует...

Конечно удалось :)
Ответы писать не интересно, можете нагуглить сами, в ходе гугления много новой информации узнаете.