Работа — это обмен затрачиваемой силы и времени на материальные средства путем вкалывания как Папа Карло. Чтобы к нему приобщиться, нужно проехать катком по паре мини-боссов. В их ролях — эйчары и действующие специалисты, обитающие на локациях «интервью» и «техническое собеседование».
Оговорюсь сразу — в материале не будет списков типовых вопросов, условий алгоритмических задач и руководств по зарплатным переговорам. Эксперты школы TMS дадут тебе удочку — расскажут о самой концепции прохождения техсобесов, порекомендуют темы для повторения и поделятся своим коммерческим опытом.
Интервью с эйчаром и техническое собеседование — ху из ху
Последнее внятное исследование о количестве собеседований перед приемом на работу было проведено в мохнатом 2012 году ребятами из
Work It DAILY. Тогда эксперты выяснили, что для заветного джоб-оффера специалистам из разных областей приходится проходить через ноги руки по меньшей мере девяти эйчаров и рекрутеров.
Удивительно, но эта статистика неплохо бьется с нынешним айти-рынком. Конечно, есть и исключения — Гуру от мира
автоматизации тестирования часто ищет работу дольше, чем начинающий, но подающий надежды падаван-девопс. Однако здесь проблема кроется, скорее, в количестве вакансий и числе соискателей.
Интервью с эйчарами и менеджерами проводят, чтобы оценить, насколько компания подходит сотруднику, а сотрудник — компании. Задача рекрутера заключается в получении информации о кандидате: что для него важно в работе, какими знаниями он обладает и что ожидает от бренда. Техсобесы используют для оценки прикладных навыков. В рамках таких бесед эксперты проверяют твои хардовые и софтовые скилы.
На технических собесах и интервью ждут джунов:
- с хорошей технической базой и желающих учиться, чтобы вылепить из них высококлассных специалистов;
- не боящихся говорить, рассуждать и спрашивать, ведь разработка — это командный процесс, невозможный без регулярного взаимодействия с другими;
- хотя бы немного задумывающихся о бизнесе и его процессах, а также о том, какую пользу они могут принести компании;
- готовых нести ответственность на своем уровне, проявлять инициативность и заинтересованность.
Готовность к собеседованиям — это навык, который можно развивать. Кандидат, вложивший пару очков в «интеллект», «хитрость» и «технические скилы», практически не будет слышать стандартных фраз-отписок вроде «мы вам перезвоним».
Как пройти техническое собеседование
Сегодня каждое второе техническое собеседование проходит онлайн и представляет собой созвон с включенной камерой. Тебя спрашивают о предыдущем опыте, могут предложить решить задачу, написать программу или найти ошибку в коде. Вопросы разнятся в зависимости от уровня вакансии. Джунам нужна теория с терминами и формулировками, мидлам и сеньорам — практические навыки и понимание процессов.
— Технический собес предполагает решение задач. Есть какие-то секреты подготовки? Может быть, сайты или ультимативные книжки?
— «Сервис с задачками по программированию LeetCode уже превратился в стандарт для подготовки к алгоритмическим собеседованиям. Меня это бесит, ведь упражнения там часто не имеют никакого отношения к практической разработке. Крупная и привлекательная компания может позволить себе извращаться над кандидатами любыми способами, но далеко не каждый бренд будет строить из себя Google. В фирмах из СНГ задачи есть, но они достаточно легкие», — Олег Григорьян, преподаватель курса Java-разработчик в TMS. — Как быть соискателю, который при прохождении технического собеседования понял, что он чего-то не знает?
— Ткните пальцем в того, кто знает все. Чем глубже копаешь в программировании, тем лучше понимаешь, что дна нет. Соискателю нужно держать лицо — если не можешь дать четкий ответ, порассуждай, сделай пару предположений и постарайся их обосновать. В разработке нет смысла заучивать что-то наизусть, как стихи — важно осознавать, почему и для чего все работает так, а не иначе. Твоя способность думать и искать выход из ситуации окажется ценнее, чем верные, но сухие ответы
Позиция эксперта по автоматизации тестирования
Автоматизатор — это эксперт по проверке работоспособности софта, отвечающий за создание сценариев для автоматической проверки программ и приложений. Его хардовые скилы варьируются в зависимости от направления работы. Писать скрипты опытные QA-инженеры (от англ. quality assurance — «обеспечение качества») предпочитают на таких языках, как Java, Python, JavaScript и C#.
На техническом собесе у начинающего автоматизатора обязательно спросят о видах тестирования, техниках тест-дизайна, методологиях разработки и критериях качества требований. Будут и задачи формата:
- протестировать общедоступный API;
- составить баг-репорт по реальной или вымышленной ошибке;
- сформировать тест по реальным требованиям;
- создать тест для учебного проекта.
Автоматизация тестирования — тема обширная, и разбирать ее нужно в отдельном порядке. Поэтому мы записали целый
Натив, посвященный вопросам на технических собеседованиях QA-инженеров, владеющих языком Java.
— Существуют ли какие-то основные критерии, выдвигаемые к кандидатам на позицию начинающего автоматизатора тестирования?
— «Я всегда говорил, что хороший автоматизатор должен обладать четырьмя качествами. Первое — он должен быть хорошим тестировщиком. Второе — он должен хорошо знать язык программирования. Третье — это автоматизация тестирования. Четвертое — английский язык и коммуникативные навыки. Есть люди, которые все схватывают на лету, но не умеют общаться. Во многих компаниях собеседование — это поговорить о жизни. Если человек не проявляет софт-скилы, он не получит работу. Берем эти четыре ингредиента, смешиваем воедино и получаем идеального кандидата», — Дмитрий Рак, преподаватель курса автоматизированное тестирование на Java в TMS. Должность Java-разработчика
Чтобы понять, как проходят интервью и техсобесы Java-девелоперов, будем двигаться от обратного — прошерстим блоги эйчаров и рекрутеров. Судя по веткам на
«Хабре», владеющих «Жабой» экспертов собеседуют в рамках плюс-минус одного сценария. Выглядит он так: вопросы по языку → предыдущий опыт → поиск мотивации соискателя → рассказ о проектах → ответы на вопросы.
На техническом собеседовании новичка, желающего занять должность Junior Java backend developer, проверяют на знание:
- базовых алгоритмов;
- структур данных;
- принципов и шаблонов программирования;
- устройства сетей;
- реляционных баз данных и SQL;
- Java Core;
- Java Persistence API;
- Spring Core + Boot + Web + Data + самых основ Security.
Вопросы — вот первое, что будет ждать эйчар или технический специалист от новичка на собеседовании. Они становятся признаком лояльности и заинтересованности как в отдельной вакансии, так и в самой компании в целом. Когда бренд нанимает джуна, он делает своеобразную инвестицию — вкладывает время в человека, который деньги на старте приносить не будет. Поэтому организация сначала поймет, насколько кандидат благонадежен и заинтригован, и только потом вышлет джоб-оффер (или не вышлет????).
— Нужно ли изучать проекты компании перед собеседованием? Какой в этом смысл и стоит ли тратить время?
— «Я бы не сказал, что это необходимо. В целом, дополнительная информация о бренде может оказаться полезной. В рамках собеседования не только компания выбирает тебя, но и ты выбираешь компанию. Да, джуниор-разработчик находится не в такой сильной позиции, как сеньор-девелопер, но соглашаться на любой треш-вариант — не лучшая идея. Предварительный анализ — это способ собрать вопросы, которые стоит задать нанимателю. Проведя мини-исследование, ты убьешь двух зайцев — сложишь картинку об организации в своей голове и покажешь потенциальному работодателю свое небезразличие», — Олег Григорьян, преподаватель курса Java-разработчик в TMS. Место девопс-инженера
DevOps-инженер — это человек-автоматизатор. Он автоматизирует все, что движется, а что не движется — двигает и автоматизирует. В своей подготовке специалист такого профиля изучает ряд тем, связанных как с разработкой, так и с внедрением различного софта. Став на ступеньку мидла, он может обнаружить себя, занимающегося написанием автотестов, изучением «шарпов» или созданием serverless-функций для управления всей инфраструктурой проекта.
В списке тем, освещаемых в рамках технического собеседования с кандидатом на позицию junior DevOps:
- Вопросы о методологии DevOps. Что такое DevOps, зачем нужна эта концепция, как она связана с Agile, Scrum и Kanban — ты же должен знать, чем предстоит заниматься на работе.
- Навык программирования на любом популярном языке. Знание Python, Bash, Ruby или Go, умение писать простенькие алгоритмы и скрипты для автоматизации.
- Технологии Docker и Kubernetes. Соискатель должен быть готов к тому, чтобы написать Dockerfile или Helm chart, а также рассказать, чем Deployment отличается от Daemonset'a.
- CI/CD инструменты + IaC (Ansible/SaltStack/Terraform) — Gitlab CI, Jenkins, Azure DevOps, либо что-то другое. Здесь будет достаточно иметь опыт с одним инструментом из каждой категории.
- Linux и облака (AWS/GCP/Azure Cloud) — вспоминаем о том, как включается операционка, что отражает показатель load average и чем плохи дочерние зомби-процессы.
- Знание сетей. Полезно уметь рассказать про TCP/IP, DNS и объяснить, что такое маска подсети. В ту же копилку — вопросы по HTTP-протоколам и различиям между TCP и UDP.
На техническом собеседовании часто поднимаются и другие вопросы — их обязательно прописывают в вакансиях. К счастью, все перечисленные темы студенты школы TMS разбирают на практических занятиях, в рамках курса
DevOps-инженер.
— Можешь дать несколько советов по прохождению технического собеседования на позицию junior DevOps?
— «Если не знаешь ответа на очередной вопрос, попробуй поразмышлять вслух и прийти к выводам. Если совсем с технологией не работал или вопрос оказался слишком сложным — прямо так и скажи. Ты не «Super Ultra DevOps Lead 3000 lvl», что-то не знать — абсолютно нормально! Проси фидбэк сразу после собеседования. То есть, еще до того, как отключишься от звонка с эйчаром, рекрутером или техническим специалистом. Лучше хорошо знать сети, операционные системы и веб-серверы, чем уметь работать с Docker и Kubernetes, но плавать в «базе». Прохождение собеседований — это навык, который можно и нужно тренировать. С каждым разом у тебя будет получаться все лучше», — Максим Разумов, преподаватель курса DevOps-инженер в TMS.