0
Обложка: Какие ошибки допускают начинающие айтишники во время интервью 

Какие ошибки допускают начинающие айтишники во время интервью 

Как начинающему айтишнику не наломать дров и избежать распространённых ошибок на собеседовании, рассказывает Денис Кутуков — руководитель Школы бэкенд-разработки Академии Яндекса. Денис работает в компании с 2011 года: он прошёл длинный путь от стажера до управленца, а в компанию попал с восьмой (!!) попытки. За время своей работы он провел более 700 собеседований на начальные и сеньорские позиции.

Денис Кутуков
Денис Кутуков
Руководитель Школы бэкенд-разработки Академии Яндекса

Собеседования на стартовые и стажёрские позиции, как правило, похожи и состоят из двух этапов. Первый этап — секция с написанием кода или решением алгоритмической задачи в режиме реального времени, на втором этапе более пристальное внимание уделяется опыту соискателя и soft skills. Для каждого из этапов характерны типичные ошибки — сегодня я расскажу о том, как можно их избежать.

Ошибка #1: решать задачу молча и с наскока

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

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

Как действовать? Прочитайте условие несколько раз, подумайте о том, какие ограничения могли остаться «за кадром»: например, повторяются ли в массиве числа, есть ли пустые строки и т. п. Спросите интервьюера о возможных подводных камнях и вслух проговорите, как вы планируете решать задачу.

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

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

Подсказка: Потренируйтесь писать код заранее (на бумаге и в онлайне), чтобы избежать возможного ступора перед новой задачей. HackerRank и Codeforces в помощь!

Ошибка #2: не проверять валидность кода

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

Почему это плохо? Отсутствие самопроверки сразу демонстрирует неаккуратность и недостаточно осознанный подход к работе.

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

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

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

Ошибка #3: не делать работу над ошибками

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

Как действовать? Важно не молчать и продолжать генерировать идеи, предлагать те или иные способы решения возникшей проблемы.

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

Подсказка: Чтобы чувствовать себя более уверенно во время код-интервью, прочитайте книгу «Карьера программиста» (Cracking the Coding Interview) Макдауэлла Лакмана. В ней собраны реальные вопросы и тестовые задания, которые получают соискатели на собеседованиях в самых известных IT-компаниях мира.

Ошибка #4: предлагать решения, в которых вы не уверены

Часто кандидаты не пытаются разобраться в сути технологий, о которых говорят. Если вас спрашивают, как построить хранение метаданных для почтового сервера, недостаточно ответить: «Мы это всё просто поместим в PostgreSQL, и он сам разберется. Я слышал, что PostgreSQL — хорошая и эффективная база данных». Дело в том, что существует множество нюансов и ограничений: в одних случаях PostgreSQL работает хорошо (например, в случае быстрого поиска по ключу), в других — нет (если речь идет о хранении документов, pdf-файлов или картинок).

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

Как действовать? Тренируйте дотошность и data-driven подход, опирайтесь не на прочитанное, а на посчитанное. Приведу еще один пример: если вас спросят, хватит ли одного железного сервера, чтобы обслужить всю нагрузку поиска в Web Mapping Service, то плохой ответ — тот, что будет дан наобум. Хорошая тактика в этой ситуации — взять калькулятор, ручку и бумагу и произвести приблизительные расчеты. Прикинуть, сколько запросов делают пользователи в сутки, учесть скорость их обработки и сколько времени «живет» на процессоре каждый из них.

Отвечая на вопрос, объясняйте свой выбор, подкрепляйте его данными и демонстрируйте понимание того, как технология работает «под капотом». Покажите, что вы подготовились к интервью. 

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

Ошибка #5: не интересоваться процессами внутри компании и будущей позицией

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

Как действовать? Продумайте перечень вопросов заранее и посмотрите на описание позиции критически. Какой информации вам не хватает? Быть может, вам хочется получше узнать, как устроены внутренние процессы, как проводится код-ревью, применяется ли попарное программирование, есть ли DevOps, какой уровень автоматизации процессов в отделе.

Подсказка: Чтобы лучше понимать, чем живут компании изнутри, можно почитать блоги сотрудников, недавние публикации в СМИ. А некоторые компании сами готовы делиться своей «внутрянкой». Например, Яндекс 24 августа организует День стажера — можно будет прийти в офис компании, узнать о работе в ней, а также пройти пробные контесты и тренировки.

Начинать что-то новое всегда непросто и даже страшно, но однозначно стоит того! Чтобы меньше переживать перед интервью и чувствовать себя более уверенно, выделите время на подготовку или редактирование вашего текущего резюме, поработайте пару часов над написанием кода, почитайте как можно больше о компании и сформулируйте дополнительные вопросы к интервьюеру. И ещё один важный лайфхак — обязательно выспитесь перед собеседованием, приходите на очную встречу или в Zoom в хорошем настроении и всё обязательно получится!