21 ноября в рамках митапа по С++ Константин Владимиров, Илья Шишков (@ishfb) и Елена Степанова — эксперты с многолетним «стажем» в собеседованиях — обсудят, как проводить технические интервью, говорить про алгоритмы без синтетических задач и оценить знания кандидата. Регистрируйтесь и присоединяйтесь к дискуссии в Москве или онлайн.
А сейчас знакомим вас с модераторами и задаем им три каверзных вопроса про собеседования. На чем проваливаются кандидаты и нужно ли проходить собеседования, чтобы лучше их проводить? Ответы под катом.
Нужно ли тому, кто проводит собеседования, самому их проходить?
Константин Владимиров
Ведущий инженер в Syntacore. Проводит собеседования 13 лет и много преподает.
Я всегда любил ходить по интервью, это увлекательно и полезно — побывать по ту сторону стола. К сожалению, года два назад меня начали узнавать — я довольно популярный лектор на YouTube. Прихожу на интервью, а мне говорят: «Константин Игоревич, а мы учились по вашим курсам».
Последнее интервью, на котором мне задавали интересные вопросы, было в 2018 году. Тогда еще модно было ездить на интервью «погулять» — в моем случае это было собеседование в Amazon в Стамбуле. Компания оплатила билеты и гостиницу, а я приехал, прошел собеседование и еще пару дней осматривал город.
Поскольку я чувствовал себя обязанным хорошо отработать, отвечал серьезно — это было зря. Я ехал развлечься, а они мне потом еще несколько месяцев писали и предлагали оффер. Оффер мне был не нужен, но само интервью было прекрасно организовано. Одно из лучших собеседований, на которых я был, — много почерпнул у профессионалов по вопросам работы с кандидатами и организации процесса.
Илья Шишков
Экс-разработчик в Яндексе, автор курса «Алгоритмический фундамент программиста». Провел более 250 технических интервью.
Мне кажется, чтобы быть хорошим интервьюером, необязательно самому проходить собеседования. Оценивать, насколько кандидат подходит команде, требует другого навыка — не того, который демонстрируют на собеседовании.
Изредка полезно оказаться в кресле кандидата и пройти собеседование, чтобы откалибровать навыки. Например, понять, как выглядишь со стороны как интервьюер. Были моменты, когда я в роли кандидата выделял поведенческие аспекты интервьюеров, которые казались неудачными, и отмечал, что не буду так делать, потому что это вызывало дискомфорт.
Елена Степанова
Техлид в YADRO. Последние 8 лет проводит до нескольких собеседований в неделю.
Раньше я много ходила на собеседования, интересно было узнать, какие знания нужны в компании, какие технологии используются. Последние года три потеряла к этому интерес.
Проходить собеседования полезно, но не нужно ожидать, что это поможет эффективнее собеседовать. Зато точно становишься терпеливее к кандидатам.
Собеседование неотделимо от вакансии, и нельзя просто взять и использовать какие-то приемы с технических интервью в других компаниях. Чтобы лучше проводить собеседования кандидатов, полезнее сходить на обсуждение бэклога и на код-ревью, быть в курсе текущих задач.
Бывало ли такое, что ответ кандидата ставил вас в тупик?
Константин Владимиров: Десять лет назад я собеседовал кандидата с хорошими рекомендациями, в том числе от Microsoft. В начале интервью задал простой вопрос: чем отличается указатель на массив от массива указателей. Парень растерялся и не ответил. В этом нет ничего страшного: в такие моменты можно посмеяться с интервьюером и пойти дальше.
Однако реакция кандидата меня поразила: он напрягся и предложил мне ответить на его вопрос. Я люблю такие игры, поэтому согласился. Он спросил, что произойдет, если вызвать функцию main рекурсивно из функции main. «Именно в С++ будет что угодно», — ответил я.
Дальше мы спорили об исчерпании стека, проверяли его утверждение через консоль, меняли уровень оптимизации. С этим разработчиком я быстро попрощался. Как итог ставит в тупик в первую очередь напряженная реакция: когда человек на что-то не ответил и чувствует себя задетым.
Илья Шишков: У меня был период, когда я помогал стартапу нанимать разработчиков — проводил алгоритмические секции.
Однажды кандидат в самом начале интервью сказал, что не хочет тратить время на решение алгоритмических задач, так как не собирается работать в Яндексе. Мы закончили разговор через 3-4 минуты после этой реплики. Я был в ступоре и не знал, как себя вести. Я предоставляю услуги стартапу, а человек отказывается проходить собеседование. Сначала растерялся, а затем попытался убедить его, что есть ценность в решении задачек и работе в этом стартапе и что стоит продолжить собеседование. Но он был непреклонен и отказался. Алгоритмические задачи Яндекса ему не интересны — на этом все и закончилось.
Елена Степанова: Бывает. Чаще всего — когда кандидат абсолютно уверен в неправильном ответе. Порой приходилось судорожно искать цитату из стандарта C++, чтобы переубедить человека. Иногда специалист глубоко погружен в предметную область и начинает рассказывать про какие-то тонкости, где ты не можешь поддержать разговор. Остается только задумчиво кивать.
На каких задачах чаще всего проваливаются кандидаты?
Константин Владимиров: Заваливать на интервью — это совсем не мой метод. Считаю это неспортивным. По языку С++ я сам себя могу завалить за три вопроса: первый «пристрелочный», второй «глубинный», третий «похоронный». На третий никто не ответит, в том числе я. Нет ничего сложного в том, чтобы завалить вопросами по языку, у которого в стандарте более 1800 страниц. На интервью же надо понять, что человек знает, а не наоборот. Но если брать статистику, то заваливаются чаще на задачах вида «напиши код» — там все сразу видно.
Илья Шишков: В Яндексе была задача: удалить смайлики из текстовой строки. Суть в том, чтобы определить, какие символы являются смайликами. На первый взгляд, выглядит крайне просто, но со временем я понял, что многие кандидаты проваливаются. Чтобы ее решить, нужно быть уверенным в своих программистских навыках.
Елена Степанова: Обычно я даю очень простые задачи, на основании которых можно поговорить об общих принципах computer science. Собственно, на самом базовом computer science у кандидатов больше всего пробелов. Среди «болевых точек» — вопросы про представление данных в памяти и области памяти; про то, как работает выравнивание, приведение типов, кэширование. Оценка сложности алгоритмов, обоснование выбора структур данных и тому подобное также нередко ставят в тупик.
Если хотите задать вопросы экспертам вживую или в чате онлайн-трансляции, регистрируйтесь на бесплатный митап по С++, который пройдет 21 ноября. На встрече будет еще больше контента по «плюсам»: о болях нового стандарта языка, lifetime extension и собеседованиях на С++.
Комментарии (27)
fshp
09.11.2023 09:20+4чем отличается указатель на массив от массива указателя
Тоже затрудняюсь ответить, т.к. не знаю что такое массив указателя.
vvviperrr
09.11.2023 09:20тоже в глаз бросилось. я бы еще и первую часть уточнил, что имеется ввиду под "указателем на массив" - указатель на первый элемент массива, или действительно же указатель на статический массив.
freeExec
09.11.2023 09:20+1А статический массив как-то по другому указывается, не на первый элемент?
lllamnyp
09.11.2023 09:20При выделении памяти под статический массив куда-то ещё дописываются метаданные о нём, чтобы sizeof вернул правильный размер массива, а не размер указателя, но указатель, конечно же, тоже на первый элемент.
grmile
09.11.2023 09:20+1А разве sizeof не выполняется ещё на этапе компиляции?
lllamnyp
09.11.2023 09:20Вы, возможно, правы. Размер массива должен быть известен при компиляции, наверное и sizeof можно статически заменить. Я недавно интересовался этой темой, но я не C-разработчик, так что стандарт не процитирую.
yadro_team Автор
09.11.2023 09:20Спасибо, что заметили — это опечатка, на самом речь шла о массиве указателей.
fshp
09.11.2023 09:20+2Это меня заставило задуматься, что нам крупно повезло, что техническая документация в основном на английском.
Представьте, если бы наш родной язык был английский, а вся документация была бы на русском. Ужас.
orgus
09.11.2023 09:20только начал переживать что не понимаю "простой вопрос", а оказывается не одинок :)
Anarchist
09.11.2023 09:20+1С Амазоном у меня было худшее интервью. Во-первых, оно было по телефону (по телефону кодерское интервью, ага), во-вторых, телефон у собеседника пищал и хрипел подбирали, что ли?), в-третьих, разработчик говорил с мощным индийским акцентом, что вкупе с хрипами его умирающего телефона делало речь местами совсем неразборчивой. В общем, я уже даже не знаю, как ещё можно показать пренебрежение к собеседнику, не применяя прямых оскорблений.
Кстати, один из признаков гнилоты компании - отсутствие обратной связи. "Мы вам отказываем, но правила компании запрещают сообщать мотивацию отказа". Потом через полгода снова пишут и удивляются, почему именно с ними я не хочу взаимодействия.
ilyakovrov
09.11.2023 09:20+2Спасибо за наводку на Константина Владимирова и его канал на ютубе с лекциями по C/C++
Kelbon
нет
sabudilovskiy
Рубрика тестируем знание спецификации юникода в режиме реши за O(n) без доппамяти за полчаса
Tujh
Это если смайлы у них юникодовые, а если такой (в задании не сказано какие) :) ?
sabudilovskiy
Ну в теории здесь может появиться кто-то из авторов статьи и пояснить, но мы можем только догадываться. Поиск текстовых представлений смайлов - это кажется просто поиск подстрок(если мы, конечно, верим что случайно такая комбинация не может появиться), но тогда навряд-ли бы шла о смайлах.
ishfb
Автор появился =) Я не могу раскрывать всё детали задачи, потому что её всё ещё используют, насколько я знаю, но она довольна проста в постановке и не требует погружаться в Unicode. В постановке задачи описано, что смайлики состоят только из символов : - ( и ).
Ryder95
Я когда читал курсы давал такую задачку на самостоятельную работу в классе, правда в ней предполагалось использовать регулярные выражения: https://informatics.msk.ru/mod/statements/view.php?id=3163#1
mostodont32
Это именно смайлы вида :)) с произвольным количеством закрывающих скобочек
sYB-Tyumen
А ещё, если при удалении одного смайла из строки, предшествующие смайлу пара-тройка символов и следующий за удалённым смайлом символ образуют новый смайл...
freeExec
Но тогда результирующий текст будет содержать смайлы
sYB-Tyumen
В этом и был смысл комментария. И тут либо держать буфер, на тему размеров которого при желании минимум курсовик написать можно. Либо делать несколько проходов, что с файлом - нормально, хоть и расточительно, а с потоком не катит.
speshuric
(или наоборот - один смайл, но есть закрывающая скобка :-))
domix32
Так смайлики, а не эмоджи. всякие
:D O: :O :) (: :(
. А то и вовсе (╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻Вопрос, конечно, возникает сколько таких комбинаций придётся перебирать и вангую, что нормальное ТЗ яндекс предоставлять, конечно же, не планировал.