EngX Code Review: начни писать код еще лучше и построй эффективный процесс код-ревью.

время чтения: 3 мин

Как пройти техническое интервью: советы эксперта

Что такое техническое собеседование? По какому алгоритму оно строится? Каких типичных ошибок можно избежать при его прохождении? Senior Machine Learning Scientist и владелец телеграм-канала Boris Again Борис Цейтлин рассказал, как проходит техническое интервью и как к нему подготовиться.

Senior Machine Learning Scientist и владелец телеграм-канала Boris Again Борис Цейтлин

Что такое техническое интервью и зачем оно нужно

— Техническое интервью — это один из этапов найма технических специалистов в IT-компании, — объясняет Борис, — На этом этапе инженер из компании тестирует знания кандидата. Во время технического интервью проверяют, насколько навыки кандидата соответствуют позиции, на которую человека планируют нанять. Именно на технических интервью отсеивается большинство кандидатов.

Технических интервью, как правило, несколько, и они бывают разных типов.

Типичный процесс найма включает два технических интервью:

  1. Первое интервью напоминает экзамен по теоретическим и прикладным знаниям.
  2. Второе — про system design с открытыми вопросами типа: «Как бы вы построили сервис видеостриминга?», «У вас есть сервис с большой нагрузкой и базой данных, которая больше не помещается на диске одного сервера. Как бы вы решили такую проблему?» и т. д.

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

Как проходит техническое собеседование

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

Стандартная структура первого технического интервью следующая: первые 10-15 минут кандидату задают несложные вопросы про язык программирования и технологии. Про Python, например, часто спрашивают: «Что такое декоратор?», «Что такое GIL и как он работает?», «Как Python работает с памятью?». Здесь интервьюер пытается оценить уровень кандидата.

Также популярна другая структура, где кандидату задают вопрос про его прошлый опыт, а затем углубляются дополнительными вопросами в упомянутые выше темы. Детали зависят от позиции:

  • Программиста обычно спрашивают про язык и алгоритмы, структуры данных и технологии из стека компании.
  • Для аналитика будет больше вопросов про SQL и базы данных, теорию вероятностей и матстатистику.
  • На собеседованиях ML специалистов спрашивают про статистику и теорию вероятностей, теорию машинного обучения и детали работы моделей.

Осташиеся 30-45 минут в любой из структур — это лайф-кодинг задача. Интервьюер и кандидат подключаются в коллаборативную среду, где можно совместно писать код, но нельзя его исполнять. Интервьюер дает условие задачи, а кандидат задает вопросы, уточняет условие, пишет код и оценивает асимптотическую сложность решения в O(N) нотации.

Советы, как пройти техническое собеседование

— Самое важное — это отказаться от ментальности студента на экзамене, — считает Борис, — Интервью стоит воспринимать как общение двух специалистов. Плохие интервьюеры создают впечатление допроса, но не стоит на это поддаваться. Волнуясь и защищаясь, вы, скорее всего, провалитесь. Простой лайфхак для правильного настроя — это представить, что вы с интервьюером уже коллеги и находитесь на одной стороне.

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

Практические советы

— Чтобы пройти первый этап с простыми вопросами, нужно подготовиться. Здесь интервьюер, как правило, пытается отсеять совсем ничего не знающих людей. Обычно все задают одни и те же вопросы, их список можно найти в интернете, — продолжает Борис, — Если вы не знаете ответа на вопрос, который можно найти в интернете за пять минут, то это ваш «прокол». Также будьте готовы, что вам будут задавать вопросы о технологиях, которые вы упоминали в резюме.

Алгоритмическая часть — самая сложная. Подготовка к ней раскладывается на два этапа:

  • Изучение правильного процесса прохождения интервью;
  • Практика в решении задач.

Процесс проведения интервью стандартный. Знание правил этой «игры» сильно помогает. Алгоритм следующий:

  1. Интервьюер рассказывает условие задачи. Здесь необходимо задать вопросы про условие и выяснить все ограничения, которые часто специально не упоминаются. Например: «Что если массив пустой?», «Все элементы уникальные?», «Какие ограничения по памяти и скорости?». Самая популярная причина провала этого этапа — это неверно понятое условие.
  2. Ни в коем случае не писать код решения, пока интервьюер не даст «зеленый свет». Лучший способ завалить собеседование — это начать писать неверное решение, «забуксовать» и выйти за временные рамки. Бинго провала — это еще и задержать собеседующего.
  3. Устно обсуждаем с интервьюером проблему и решение. Важно мыслить вслух и задавать вопросы. На этом же этапе можно написать в коде тесты. Постарайтесь обнаружить все уникальные случаи, которые надо обработать. Часто, сделав это, вы понимаете, что все же не совсем верно поняли условие.
  4. Ваша задача — придумать оптимальное решение. Если не получается, то, как правило, интервьюер даст вам подсказку. Это, конечно, минус, но лучше решить с подсказкой, чем не решить совсем.
  5. После получения разрешения на написание кода, начинаем реализацию.
  6. Написав код, обязательно проверьте его. Часто от волнения пропускают простые вещи. Например, забывают вернуть результат исполнения. Здесь пригодятся написанные раньше тесты: покрывает ли реализация все случаи? Пробегитесь глазами и проговорите основные моменты вслух. Такие небольшие ошибки, как, например, перепутать знаки «больше» и «меньше» не страшны, но, отловив их, вы получите дополнительные очки.

— Зная структуру, остается только практиковаться решать задачи и писать код без исполнения и помощи IDE, — подытоживает Борис, — Открываем leetcode, сортируем задачи по сложности или популярности и решаем. Скорее всего для подготовки к типичным собеседованиям достаточно прорешать задачи уровня Easy.

Смотреть вакансии в разделе Работа.

Материалы по теме