BLACK FRIDAY

осталось 3 дня

Скидка 10% и подарок на выбор — при покупке одной программы
При покупке двух программ  — вторая со скидкой 50%
Все статьи | Карьера

Что нужно знать программисту перед собеседованием и как успешно его пройти: рассказывает разработчик Александр Черников

Что нужно знать программисту перед собеседованием и как успешно его пройти: р... главное изображение

Руководитель разработки стрима новых бизнесов в Яндекс.Еде Александр Черников рассказывает, как программисту подготовиться к собеседованию, какие качества кандидатов нравятся рекрутерам и в чем главный секрет успешных интервью.

Всем привет! Меня зовут Александр Черников. За всю свою жизнь я провел более 500 собеседований, а еще помог многим своим друзьям пройти интервью в топовые компании, в том числе и в FAANG.

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

Реальная цель собеседования — узнать, подходит ли кандидат компании и, что еще важнее, подходит ли компания кандидату. Я, например, обращаю большее внимание на то, как человек мыслит и рассуждает, жаждет ли он знаний, умеет ли внимательно слушать. А технический минимум, индексы, сложности, базовые библиотеки и прочие знания я рассматриваю во вторую очередь.

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

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

Встреча с рекрутером

Встреча с рекрутером выглядит как обычное знакомство. Кандидату рассказывают о вакансии, качествах специалиста, которого ищут, и продукте компании. Разговор проходит в ламповой обстановке.

Работодатели знают, что собеседование — это стресс для кандидата и в начале пытаются разбавить интервью смол-током, чтобы человек вел себя максимально уверенно и спокойно.

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

После встречи рекрутер делится впечатлениями о кандидате с техническими специалистами и начинается следующий этап.

Техническая часть

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

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

Архитектурная часть — для более высоких позиций

Если кандидат претендует на высокую должность в компании, то на этом этапе работодатель проверяет его навыки общения и управления задачами. Кроме того, интервьюер должен понять, умеет ли разработчик самостоятельно вести проект, разбирать задачи, есть ли у него широкие познания в базах данных SQL и NoSQL.

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

Вот примерный список хардовых знаний, которые может проверить работодатель на этом этапе:

  • Балансировка нагрузки
  • Паттерны микросервисной архитектуры
  • Работа с очередями сообщений
  • Шардирование и реплицирование
  • Идемпотентность
  • Прогноз нагрузки на сервисы и избавление от «узких» мест: узлов в архитектуре систем, на которые падает сильно больше нагрузки, например, баз данных.

Так выглядит архитектурная часть собеседования:

Алгоритмическая часть

На алгоритмической секции проверяются алгоритмы и структуры данных. Тут все проще: как правило, разработчику нужно решить одну или две задачки либо на бумаге, либо онлайн без использования редактора кода. Эта часть собеседования обязательна в компаниях типа FAANG или «Яндекс». Также с недавних пор алгоритмическая секция стала обязательной частью в «Авито» и «Озоне».

Встреча с нанимающим менеджером

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

Далее менеджер принимает решение по кандидату. Если все хорошо, ему делают оффер.

Читайте также: Как джуну найти работу и где лучше начинать карьеру в IT: советы от Хекслета

Какие хард- и софт-скиллы проверяют работодатели

Хард-скиллы

К хард-скиллам обычно относят технические навыки разработчика. Вот список самых часто поднимаемых тем на собеседовании:

  1. Оценка алгоритмической сложности
  2. Знание алгоритмов базовой сортировки
  3. Структуры данных
  4. Различия между авторизацией и аутентификацией
  5. REST vs SOAP
  6. Различия между 301 и 302 статусами http-запросов
  7. Различия между http 2.0 и http 1.1
  8. Различие между PUT и PATCH запросами
  9. Многопоточность, многопроцессорность
  10. Мультизадачность
  11. Асинхронное программирование
  12. Event loop
  13. Что такое B-tree
  14. CAP-теорема
  15. Требования ACID
  16. Четыре уровня изоляции транзакций
  17. Отличие HAVING от WHERE в SQL-запросах
  18. Какие бывают типы NoSQL баз данных
  19. Базовые паттерны микросервисной архитектуры
  20. Плюсы и минусы монолита и микросервисов
  21. Отличия распределенного монолита от микросервисов
  22. Семь уровней модели OSI, на каких из них происходит балансировка нагрузки
  23. Что бывает, когда вводишь google.com в браузере
  24. Глубокое понимание базовых принципов своего основного языка программирования.

Такое многообразие вопросов сперва может напугать, но, опять же, страшного в них ничего нет. Технические вопросы нужны не для того, чтобы самоутвердиться за счет кандидата или унизить его. Их задают, чтобы проверить, горят ли глаза у разработчика при ответе, было ли у него желание глубоко разбираться в этих темах при подготовке, в каких направлениях он хочет расширять свои знания и хочет ли вообще.

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

Софт-скиллы

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

Кстати, попробуйте ради интереса провести эксперимент: объясните кому-нибудь вслух, что вообще значит слово «ответственность» без использования Google и однокоренных слов. Результат покажет потенциальному работодателю, как вы позиционируете себя с профессиональной точки зрения, важно ли вам просто работать или достигать результатов, все равно ли вам на свои обещания или нет.

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

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

Как подготовиться к собеседованию

Собрать резюме

Рекрутеры из Google написали лучшую статью-методичку о том, как разработчику составить резюме. Основная мысль — кандидат должен качественно оценивать свой вклад на предыдущих местах работы или учебы. Например, вы сделали Х и это изменило Y до Z. Если вы просто пишете, что реализовывали какую-то фичу, работодателю непонятно, какой результат это дало, сколько времени заняло и как это вообще оценивать. Например:

Прокачать хард- и софт-скиллы

Пройдитесь по техническим вопросам и досконально изучите их. Подумайте, как будете отвечать, если вдруг попадется сложная тема. Честно признавайтесь, если чего-то не знаете, но поразмышляйте, как та или иная технология должна работать. А еще иногда можно пропустить вопрос, но попросить время, чтобы записать его и изучить на досуге.

Чтобы подготовиться к алгоритмической части собеседования, советую много практиковаться. Есть отличная книга-самоучитель «Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих» Адитьи Бхаргавы, которая научит решать задачи с помощью алгоритмов. А применить знания на практике можно на LeetCode.

Читайте также: Как разработчику улучшить свое тестовое задание

Пройти другие собеседования

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

Круто, если первое же собеседование будет успешным, и вы получите оффер. Но ни в коем случае не расстраивайтесь, если вам откажут. Попросите у компании обратную связь и проведите работу над ошибками.

После трех-пяти провальных собеседований у вас будет:

  • отточенный рассказ о себе
  • проделанная работа над ошибками по ответам на часто задаваемые вопросы
  • уверенность в себе.

Несколько советов, как успешно пройти собеседование

  1. На подготовку к собеседованию просите у рекрутера столько времени, сколько вам нужно
  2. Составьте собственный план подготовки к интервью и старайтесь его придерживаться
  3. На собеседовании ведите себя максимально расслабленно, а если все же стрессуете — боритесь с этим состоянием. Например, вспомните, какие обряды помогали вам успокоить нервы еще во времена учебы в университете
  4. Здорово, если на собеседовании вы спросите работодателя, какими навыками должен обладать кандидат, которого ищет компания — это покажет вашу заинтересованность
  5. Также неплохо узнать, какие интересные проекты реализовывала команда в последнее время и зачем компания расширяется
  6. Не стесняйтесь просить обратную связь у рекрутеров. Спрашивайте, какие знания стоит подтянуть и чему уделить особое внимание
  7. Время от времени проходите разные собеседования не ради смены работы, а чтобы узнать, где у вас есть пробелы и какие знания нужно подтянуть
  8. Помогайте готовиться к собеседованиям своим знакомым. Обучая кого-то, вы сами учитесь.

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

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

Аватар пользователя Александр
Александр 14 ноября 2022
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
с нуля
Разработка фронтенд-компонентов для веб-приложений
1 декабря 10 месяцев
Иконка программы Онлайн-буткемп. Фронтенд-разработчик
Профессия
Новый с нуля
Интенсивное обучение профессии в режиме полного дня
15 декабря 4 месяца
Иконка программы Python-разработчик
Профессия
с нуля
Разработка веб-приложений на Django
1 декабря 10 месяцев
Иконка программы Java-разработчик
Профессия
с нуля
Разработка приложений на языке Java
1 декабря 10 месяцев
Иконка программы PHP-разработчик
Профессия
с нуля
Разработка веб-приложений на Laravel
1 декабря 10 месяцев
Иконка программы Инженер по тестированию
Профессия
с нуля
Ручное тестирование веб-приложений
дата определяется 4 месяца
Иконка программы Node.js-разработчик
Профессия
с нуля
Разработка бэкенд-компонентов для веб-приложений
1 декабря 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
с нуля
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
1 декабря 16 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
c опытом
Создание веб-приложений со скоростью света
1 декабря 5 месяцев
Иконка программы Верстальщик
Профессия
с нуля
Верстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Аналитик данных
Профессия
В разработке с нуля
Сбор, анализ и интерпретация данных
дата определяется 8 месяцев