«Первое техническое интервью как первый секс»: как избежать ошибок и подготовиться
Бонус – примеры задач с решениями и советы от сеньора-разработчика.
Техническое интервью — самый сложный этап при приеме на работу в ИТ-компании. Сравнить можно с первым сексом: ты вроде что-то знаешь, смотрел видео и обсуждал с друзьями, но в реальности все не так, как ты себе представляешь. История усложняется тем, что второго шанса произвести первое впечатление не будет.
Привет, мы команда Skillscanner. Наш продукт — агрегатор онлайн-курсов. Знаем, как быстро освоить новую профессию и хотим, чтобы опыт топовых специалистов рынка пригодился тем, кто только начинает свой путь.
Во время технического интервью у разработчика две задачи — максимально показать свои знания и навыки, справиться с волнением, которое часто зашкаливает. Человек без опыта в собеседованиях от волнения может забыть элементарные вещи, например, что такое ООП или в чем разница между классом и интерфейсом.
Поговорили с синьор-разработчиком команды «Конвертум» Александром Корзуном, как подготовиться к техническому собеседованию, избежать распространенных ошибок и не облажаться.
Как проходит техническое интервью?
К техническому интервью кандидат подходит после знакомства с HR-ом. То есть вы уже рассказали о своих сильных сторонах, показали резюме и портфолио, если оно есть. Теперь предстоит познакомиться с одним из синьоров-разработчиков и тимлидом. Иногда они могут проводить интервью вместе. Это нужно, чтобы точно проверить технические знания кандидата и убедиться, что он «потянет» работу на проекте.
Техническое интервью состоит из нескольких этапов:
1 этап: Кандидат рассказывает про свой опыт и знания.
2 этап: Интервьюер задает общие вопросы по резюме, которое он просмотрел перед собеседованием. Например, где учился, какие курсы проходил, в каких проектах участвовал, если такое было, с каким сложностями столкнулся и как их решал.
3 этап: Техническая часть, которая включает в себя ответы на теоретические вопросы и решение практических задач. Вопросы касаются технологий, которые указаны в резюме. Практические задачи связаны с базовым пониманием основного языка программирования — синтаксиса и внутреннего движка. Практические задачи также бывают логическими, примеры будут дальше по тексту.
4 этап: Обратная связь. Один или несколько интервьюеров рассказывают, какие ошибки допустил кандидат, если они были. После разбора ошибок, стороны договариваются о дате, когда разработчик узнает, прошел он на следующий этап или нет. Если да, его ждет интервью с руководителем компании или кем-то из старших менеджеров.
«В нашей компании джуниор всегда получает тестовое задание и
попадает на техническое собеседование, только если успешно
справился с ним. Есть компании, где джун получает тестовое после
технического интервью. Он выполняет его и приходит на еще одно
техническое, где объясняет решение, узнает о своих ошибках, если
они есть», — поясняет Александр Корзун.
Мидлы vs джуны vs синьоры: чем отличается техническое интервью для разных уровней
Описанная выше схема применяется для проверки разработчиков всех уровней. Отличается сложность вопросов и глубина погружения в предыдущий опыт. Например, опыт джунов — это чаще всего pet-проекты, которые они выкладывают на Git либо выполненные задания со стажировок и курсов. Вопросы более поверхностные, ответы на них можно найти в Google по запросу «Вопросы для собеседований и название языка».
Если кандидат — мидл, его опыт — это конкретные проекты. Значит вопросы чаще касаются их: какой функционал реализовал разработчик, участвовал ли он в создании архитектуры вместе с командой, оценивал ли сроки, как настраивал взаимодействие между разными модулями и так далее.
Если кандидат — сеньор, ему, как и мидлу, задают технические вопросы о проектах. Кроме этого он рассказывает про архитектуру и релизы языка, про глобальные изменения в языке, которые произошли с выпуском новых версий. Также ему задают вопросы про паттерны программирования: синьор должен знать их больше, чем мидл, а мидл — больше чем джун.
Примеры задач с решениями
Задачи, которые дают разработчикам на собеседовании в «Конвертум», мы привести не можем — это внутренняя информация. Александр подобрал примеры задач из своей практики — он не раз проходил собеседования в другие компании, когда был джуном.
Задача по SQL
Есть таблица Employee с колонками (Id, Name,Salary). Нужно вывести сотрудников, у которых зарплата выше средней.
Ответ: SELECT * FROM Employee
WHERE salary > (SELECT AVG (salary) FROM Employee)
Примечание: в этой задаче кандидаты чаще всего забывают про агрегатные функции.
Задача по алгоритмам
Как найти средний элемент односвязного списка за один проход?
Примечание: Решение задачи можно дать либо в виде алгоритма, либо в виде кода. На собеседованиях чаще просят описать именно алгоритм.
Решение: Можно использовать два указателя — p1 и p2. Сначала оба указателя указывают на начало списка. Затем перемещаем p2 на 2 узла вперед. А p1 на 1. Когда p2 дойдет до конца списка, p1 будет указывать на нужный нам элемент.
Логическая задача про поезд
Есть замкнутая по окружности железная дорога, по которой движется поезд. Последний вагон скреплен с первым так, что внутри можно спокойно ходить по вагонам. Представьте, что вы попали в один из вагонов и должны подсчитать, сколько их всего. В каждом вагоне можно включать или выключать свет, но начальное положение переключателей случайное и заранее неизвестно.
Все вагоны внутри выглядят одинаково, окна закрыты так, что невозможно посмотреть наружу, поезд движется равномерно. Помечать вагоны другим способом, кроме включения или выключения света, нельзя.
Решение: Включите свет в вагоне, где находитесь, если он не горит. Затем идите в одну любую сторону до тех пор, пока не встретите следующий вагон с включенным светом, при этом считайте пройденные вагоны. Выключите в найденном вагоне свет и идите обратно к первому. Если в нём свет всё ещё горит, то повторите операцию. Если же нет, значит вы прошли полный круг и знаете ответ.
Логическая задача про кувшинки
В озере есть участок, заросший кувшинками. Каждый день этот участок увеличивается в размере в 2 раза. Известно, что кувшинки покроют всю поверхность озера за n дней. За сколько дней кувшинки покроют ровно половину поверхности озера?
Решение: За n-1
И еще один бонус — тренажеры для подготовки к техническому собеседованию
Codewars — онлайн-тренажёр с задачами на разные темы, здесь можно отрабатывать синтаксис языка, решать алгоритмические задачи или что-то более продвинутое, например, шаблоны проектирования.
Leetcode — онлайн-платформа с алгоритмическими задачами по программированию.
Больше по теме:
и там и там тебя могут вы*бать
Ну в одном случае, ты этого хотел, а в другом нет)
Мое первое собеседование это групповое изнасилование 😂
Может он про то, как робко и стеснительно отдавался процессу -вкладывал. А вы такие пошлые.