1.26. Технические собеседования
Технические собеседования
Собеседование — это часть процесса найма, во время которой потенциальный работодатель оценивает кандидата на соответствие требованиям позиции. Это формальная процедура, в ходе которой HR-менеджеры и технические специалисты выясняют, подходит ли человек по уровню знаний, опыту, софт-скиллам и культурному соответствию.
Цель собеседования - проверить уровень квалификации, оценить коммуникабельность и поведение в стрессовых ситуациях, узнать мотивацию и цели кандидата и понять, насколько он готов к работе в команде и корпоративной культуре. Корпоративная культура есть, конечно, не везде, но всё же в высокооплачиваемых местах она присутствует.
Собеседование может быть одноэтапным или состоять из нескольких раундов, включая интервью с HR, технический этап, тестовое задание и финальное обсуждение с руководителем.
Процесс найма в IT-компаниях обычно состоит из нескольких этапов:
- Прелюдия - иногда этот этап называют «скринингом» от HR, когда происходит первый контакт с рекрутером, в ходе которого проверяются базовые данные, соответствие резюме требованиям, наличие необходимого опыта и навыков, получение информации о том, какие у кандидата ожидания по зарплате и графикам работы. В этот момент важно чётко и лаконично рассказать о себе, своих компетенциях и мотивации. Как правило, HR не сильно разбирается в технологиях, поэтому углубляться в них здесь смысла нет.
Важно - кадровику плевать на вас лично, ваши эмоции и цели. Он работает по шаблону, по кадровой методике, и получаемые ответы просто сравниваются с «правильностью» на соответствие. Главное - изучить резюме и дать понять, что вы решите проблему работодателя.
- Техническое интервью - самый ответственный этап, где оценивают по технической части. Сначала просят рассказать о себе - в этот момент важно не углубляться в свои размышления, а чётко перечислить опыт работы, рассказать о своих крупнейших проектах и также перечислить стек технологий. Важно понимать релевантность, и сообщать первой именно ту информацию, которая даст работодателю понимание что у соискателя есть и базовые, а для миддла или сеньора - продвинутые навыки.
Базовые навыки - это, как правило, понимание алгоритмов, структур данных, языков программирования и различных платформ. Продвинутые подразумевают сложные задачи, вопросы по системному проектированию, успешные проекты. Не нужно путать техническое интервью с техническим собеседованиям. По своей сути, интервью проводит именно кадровик, а он далеко не профессионал в части технической, поэтому он максимум уточнит ваш опыт и проверит вас как человека. Ваши хард-скиллы будут проверяться именно на техническом собесе.
- Практическое задание. Некоторые компании дают домашнее задание, чтобы оценить реальные навыки разработки - написать приложение, прочитать чужой код и доработать его, сделать pull request в существующий проект. Словом, на этом этапе проверяют, способен ли кандидат реально выполнять задачи. Важно отметить, что задания могут быть очень сложными и требовать нестандартного подхода - всё зависит от подхода собеседующих. Они могут быть изобретательными, потому что их цель не столько найти нужного человека, сколько отсеять ненужных.
- Финальное интервью. Здесь уже оценивают культурное соответствие, софт-скиллы, опыт работы в команде, понимание бизнес-задач. Для синьоров и лидов может быть и ещё один раунд архитектурного интервью.
Техническое собеседование — это этап, где акцент делается на профессиональные навыки кандидата. Оно направлено на то, чтобы понять, насколько человек умеет решать задачи, знает язык программирования, принципы разработки и работает в условиях давления времени. В отличие от обычного собеседования, здесь обсуждается именно профильная работа с технологиями, поэтому они длятся 45-90 минут, психологическая нагрузка здесь выше, требуется концентрация и навыки решения задач.
К сожалению, мне лично пришлось пройти множество технических собесов, пока я не разобрался в технологиях. Порой, после очередного собеседования, приходилось себе записывать очередной паттерн проектирования или библиотеку языка, о которой даже не слышал. Бывало и по три часа меня опрашивали по самым потёмкам технологий, с целью именно «завалить» и найти слабые места.
Для понимания - всё, что я изложил во всех томах, не поверите, но это всё и спрашивали. Либо мне так не везло, либо судьба так распорядилась. Поэтому я и решил рассказать как можно больше о вселенной IT, чтобы ничего не упустить.
Ещё много лет назад я собеседовался в разные места, и повидал разные подходы. Бывали даже трёхчасовые собеседования. Порой на место джуниора собеседовали такое, которое даже я даже не слышал. И главное, что я отметил из личного опыта - нередко спрашивают то, что на работе даже не пригодится. Допустим, ты понимаешь, что разработка в компании на проекте, к которому ты планируешь присоединиться, ведётся на Java, но могут спросить и C#, и JavaScript, и даже Python. Здесь всё зависит от техлида - порой они бывают довольно требовательными, поэтому рекомендую готовиться крайне ответственно, и изучать как можно больше технологий.
Если обычное собеседование можно пройти с хорошей самопрезентацией, то техническое требует реальных навыков. Без практики и подготовки пройти его сложно.
Что проверяют на техническом собеседовании?
Не поверите - всё. У вас могут спросить абсолютно случайные понятия.
К примеру, джуниора могут спросить, как работает принцип Барбары Лисков, что такое Kubernetes, что такое Garbage Collector. Хотя, скорее всего, это совсем не для новичка. А у сеньора могут спросить, что такое переменная или блок кода.
А может, и повезёт, и вопросы будут адекватными и более подходящими. Лично я сделал вывод, что лучше просто готовиться тщательно. Идеал - если перед собеседованиями вы пробежитесь по всем трём томам.
Но можно разделить на два ключевых момента - теория и практика (логично?).
- Теория:
- общее - индустрия, железо, ОС, навыки работы с ПК, инструменты и программы;
- термины и сокращения, к примеру, что такое интеграция или протокол;
- алгоритмы, структуры, типы данных;
- фреймворки и библиотеки (здесь релевантно - нужно отталкиваться от того, что указано в вакансии);
- методологии, принципы, жизненный цикл ПО;
- языки - SQL обязательно и хотя бы один язык программирования;
- ООП;
- ORM.
Джуну придётся знать их в теории как минимум на пятёрку. Миддлу/сеньору придётся уже разбираться в потоках, асинхронности, оптимизации, управлении памятью и конечно, паттернах проектирования.
- Практика. Здесь нужно уметь непосредственно работать - это может быть знание инструментов вроде Confluence, Jira, Azure, Git, Docker, а может быть и «ловящий вопрос», который можно ответить, поработав на практике.
Для совершенствования практики - надо поработать. Помимо стажировки, следует практиковаться задачами, пет-проектами, и конечно - регулярностью. В теории всё будет работать зашибись. А на практике приходится исправлять баги, сражаться с ошибками и заниматься отладкой. Начать практику можно с тренажёров.
Вот несколько вариантов:
- платформы - LeetCode, Codewars, Learn Git Branching;
- нейросети - можно использовать ChatGPT, DeepSeek или Qwen для того, чтобы ИИ дал задание, и проверил выполнение.
Лучше познакомиться со всеми бесплатными вариациями - попробовать, чтобы визуально запомнить. Но платные, конечно, получше.