21 ноября в рамках митапа по С++ Константин Владимиров, Илья Шишков (@ishfb) и Елена Степанова — эксперты с многолетним «стажем» в собеседованиях — обсудят, как проводить технические интервью, говорить про алгоритмы без синтетических задач и оценить знания кандидата. Регистрируйтесь и присоединяйтесь к дискуссии в Москве или онлайн.
А сейчас знакомим вас с модераторами и задаем им три каверзных вопроса про собеседования. На чем проваливаются кандидаты и нужно ли проходить собеседования, чтобы лучше их проводить? Ответы под катом.
Нужно ли тому, кто проводит собеседования, самому их проходить?
Константин Владимиров
Ведущий инженер в Syntacore. Проводит собеседования 13 лет и много преподает.
Я всегда любил ходить по интервью, это увлекательно и полезно — побывать по ту сторону стола. К сожалению, года два назад меня начали узнавать — я довольно популярный лектор на YouTube. Прихожу на интервью, а мне говорят: «Константин Игоревич, а мы учились по вашим курсам».
Последнее интервью, на котором мне задавали интересные вопросы, было в 2018 году. Тогда еще модно было ездить на интервью «погулять» — в моем случае это было собеседование в Amazon в Стамбуле. Компания оплатила билеты и гостиницу, а я приехал, прошел собеседование и еще пару дней осматривал город.
Поскольку я чувствовал себя обязанным хорошо отработать, отвечал серьезно — это было зря. Я ехал развлечься, а они мне потом еще несколько месяцев писали и предлагали оффер. Оффер мне был не нужен, но само интервью было прекрасно организовано. Одно из лучших собеседований, на которых я был, — много почерпнул у профессионалов по вопросам работы с кандидатами и организации процесса.
Илья Шишков
Экс-разработчик в Яндексе, автор курса «Алгоритмический фундамент программиста». Провел более 250 технических интервью.
Мне кажется, чтобы быть хорошим интервьюером, необязательно самому проходить собеседования. Оценивать, насколько кандидат подходит команде, требует другого навыка — не того, который демонстрируют на собеседовании.
Изредка полезно оказаться в кресле кандидата и пройти собеседование, чтобы откалибровать навыки. Например, понять, как выглядишь со стороны как интервьюер. Были моменты, когда я в роли кандидата выделял поведенческие аспекты интервьюеров, которые казались неудачными, и отмечал, что не буду так делать, потому что это вызывало дискомфорт.
Елена Степанова
Техлид в YADRO. Последние 8 лет проводит до нескольких собеседований в неделю.
Раньше я много ходила на собеседования, интересно было узнать, какие знания нужны в компании, какие технологии используются. Последние года три потеряла к этому интерес.
Проходить собеседования полезно, но не нужно ожидать, что это поможет эффективнее собеседовать. Зато точно становишься терпеливее к кандидатам.
Собеседование неотделимо от вакансии, и нельзя просто взять и использовать какие-то приемы с технических интервью в других компаниях. Чтобы лучше проводить собеседования кандидатов, полезнее сходить на обсуждение бэклога и на код-ревью, быть в курсе текущих задач.
Бывало ли такое, что ответ кандидата ставил вас в тупик?
Константин Владимиров: Десять лет назад я собеседовал кандидата с хорошими рекомендациями, в том числе от Microsoft. В начале интервью задал простой вопрос: чем отличается указатель на массив от массива указателей. Парень растерялся и не ответил. В этом нет ничего страшного: в такие моменты можно посмеяться с интервьюером и пойти дальше.
Однако реакция кандидата меня поразила: он напрягся и предложил мне ответить на его вопрос. Я люблю такие игры, поэтому согласился. Он спросил, что произойдет, если вызвать функцию main рекурсивно из функции main. «Именно в С++ будет что угодно», — ответил я.
Дальше мы спорили об исчерпании стека, проверяли его утверждение через консоль, меняли уровень оптимизации. С этим разработчиком я быстро попрощался. Как итог ставит в тупик в первую очередь напряженная реакция: когда человек на что-то не ответил и чувствует себя задетым.
Илья Шишков: У меня был период, когда я помогал стартапу нанимать разработчиков — проводил алгоритмические секции.
Однажды кандидат в самом начале интервью сказал, что не хочет тратить время на решение алгоритмических задач, так как не собирается работать в Яндексе. Мы закончили разговор через 3-4 минуты после этой реплики. Я был в ступоре и не знал, как себя вести. Я предоставляю услуги стартапу, а человек отказывается проходить собеседование. Сначала растерялся, а затем попытался убедить его, что есть ценность в решении задачек и работе в этом стартапе и что стоит продолжить собеседование. Но он был непреклонен и отказался. Алгоритмические задачи Яндекса ему не интересны — на этом все и закончилось.
Елена Степанова: Бывает. Чаще всего — когда кандидат абсолютно уверен в неправильном ответе. Порой приходилось судорожно искать цитату из стандарта C++, чтобы переубедить человека. Иногда специалист глубоко погружен в предметную область и начинает рассказывать про какие-то тонкости, где ты не можешь поддержать разговор. Остается только задумчиво кивать.
На каких задачах чаще всего проваливаются кандидаты?
Константин Владимиров: Заваливать на интервью — это совсем не мой метод. Считаю это неспортивным. По языку С++ я сам себя могу завалить за три вопроса: первый «пристрелочный», второй «глубинный», третий «похоронный». На третий никто не ответит, в том числе я. Нет ничего сложного в том, чтобы завалить вопросами по языку, у которого в стандарте более 1800 страниц. На интервью же надо понять, что человек знает, а не наоборот. Но если брать статистику, то заваливаются чаще на задачах вида «напиши код» — там все сразу видно.
Илья Шишков: В Яндексе была задача: удалить смайлики из текстовой строки. Суть в том, чтобы определить, какие символы являются смайликами. На первый взгляд, выглядит крайне просто, но со временем я понял, что многие кандидаты проваливаются. Чтобы ее решить, нужно быть уверенным в своих программистских навыках.
Елена Степанова: Обычно я даю очень простые задачи, на основании которых можно поговорить об общих принципах computer science. Собственно, на самом базовом computer science у кандидатов больше всего пробелов. Среди «болевых точек» — вопросы про представление данных в памяти и области памяти; про то, как работает выравнивание, приведение типов, кэширование. Оценка сложности алгоритмов, обоснование выбора структур данных и тому подобное также нередко ставят в тупик.
Если хотите задать вопросы экспертам вживую или в чате онлайн-трансляции, регистрируйтесь на бесплатный митап по С++, который пройдет 21 ноября. На встрече будет еще больше контента по «плюсам»: о болях нового стандарта языка, lifetime extension и собеседованиях на С++.