Интервьюер
Первое, что нужно знать о собеседовании на должность программиста (или другой IT-вакансии) — вас будут собеседовать другие программисты — люди, с которыми вы будете работать. Возможно, изначально вы будете общаться с HR-ом компании, но в принятии финального решения почти всегда принимают участие ваши будущие (или несостоявшиеся) коллеги.
Это даёт вам превосходную возможность составить мнение о компании: хотелось бы вам работать с этими людьми? Кажутся ли они профессионалами своего дела? Смогли бы вы с ними поладить? Научиться у них чему-нибудь? У вас будет возможность узнать об используемых технологиях, рабочего процесса и условий работы.
Вас будут оценивать, и будете оценивать вы, так что вы сможете удержать хороший баланс власти в переговорной комнате. Вам не придётся ощущать себя так, словно всё давление собеседования упало только на вас, ведь компания заинтересована в том, чтобы произвести на вас хорошее впечатление, заинтересовать, вызвать желание работать именно в их компании. Ни в коем случае не стоит хамить собеседнику. В конце концов, если вам попался не слишком адекватный человек, вы ведь всё равно не захотите с ним работать, верно?
Ваше Резюме
Приготовьтесь говорить о вашем опыте и навыках. Вы можете потренироваться в объяснении различных пунктов вашего резюме, даже составить план, но не стоит готовить целый сценарий. Разговор должен протекать довольно свободно, вряд ли вы хотите сидеть и краснеть, потирая потные ладони, когда в пятый раз будете повторять одни и те же вещи.
Вопросы на собеседовании
Кроме основных вопросов, которые касаются вашего резюме, вы будете отвечать на вопросы, связанные с технической стороной вакансии. Часто в IT-компаниях работодатели задают вопросы, проверяющие ваше логическое мышление.
Головоломки
Головоломки для некоторых являются самой пугающей частью интервью. Подобные вопросы необходимы, чтобы выяснить вашу способность решать неоднозначные задачи на смекалку, а это, в свою очередь, собеседующие связывают с вашим IQ.
С репетициями тут сложнее. В сети есть популярные вопросы, например, «Почему крышки люков круглые?». Но вы никогда не знаете, какой вопрос вам готовят в этот раз.
Тем не менее, не лишним будет подготовиться и к этой части. Существуют три типа логических вопросов: «Агаааа!»-вопрос; проблемы, решаемые дедуктивными рассуждениями и вопросы с открытым концым.
Естественно, вам нужно проявить себя с самой лучшей стороны. Так что, даже если вы не знаете ответа, из ситуации можно выйти, показав, что вы понимаете, как можно решить поставленную задачу.
- Выскажите свои предположения
- Задавайте неглупые вопросы
- Проговаривайте мысли вслух, сделайте ваш мыслительный процесс более наглядным 🙂
- Рисуйте картинки или диаграммы
Сейчас мы рассмотрим каждую из этих техник подробнее.
Вопросы «Агааа!»-типа
Пример: Почему крышки люков круглые?
Подобного рода вопросы представляют собой ситуацию «всё-или-ничего»: либо вы заранее знаете ответ на этот вопрос, либо понятия о нём не имеете. Возможно, даже логические рассуждения не приведут вас к верному ответу.
Дедуктивные рассуждения
Пример: Дано 8 шаров, 7 из которых весят примерно одинаково. Как вы сможете найти шар с другим весом, если вы можете взвесить лишь три шара (любых)?
Задачи такого типа проверяют ваши способности работать с набором простейших предположений, которые должны привести вас к ответу. Задавая подобный вопрос, собеседник будет смотреть как на ваш процесс решения задачи, так и на ваш финальный результат. Неплохая возможность продемонстрировать свои навыки решения проблем: используйте диаграммы, проговаривайте решение. В этом случае, даже если вы не сможете найти правильный ответ, это не будет фатальным поражением.
Кстати, серьёзно: рассуждение вслух и прорисовка диаграм действительно существенно упрощают поиск ответа. Также это может показать вашему собеседнику, что вы на верном пути — может быть, вы допустили лишь небольшую ошибку в одной из своих теорий. Если вы будете записывать ваши предположения, это поможет вам получить более полную картину.
Вопросы на рассуждение
Пример: Как сдвинуть гору Фудзи?
Головоломки без правильного ответа созданы не для того, чтобы вы нашли одно единственноверное решение. Цель заключается в том, чтобы увидеть, как вы решаете нечётко сформулированные задачи. Фактически, они даже не являются головоломками, а скорее тестом на креатив. В любом случае, результат здесь снова должен показать, насколько хорошо вы справляетесь с решением проблем.
Так как задача не имеет конкретных условий, вам абсолютно точно следует выстраивать свои предположения, задавая вопросы собеседующему или высказывать собственные. Для начала постарайтесь собрать побольше информации, лишь затем приступайте к поиску решения. Если вы снова затрудняетесь дать более-менее вменяемый ответ, продолжайте делиться с собеседующим своими предположениями. Подобные вопросы нужны как раз, чтобы понять, как вы будете размышлять в сложных ситуациях? Попробуйте получить дополнительную информацию и на её основе выстроить разумные предположения.
Вопросы по коду
Пример: Напишите программу, которая перевернет связанный список
Вы должны ожидать вопросы по программированию. Вас попросят найти алгоритмические решения проблем.
Чтобы справиться с такими задачами, необходим практический опыт. В сети есть много примеров и упражнений для программистов. Часто такие задачи просят выполнить на бумаге или на доске. Стоит попрактиковаться в написании кода не используя IDE или компилятор.
Ваш собеседующий понимает, что без компилятора и без возможности протестировать вашу программу вы, вероятно, допустите ошибки. Если вы пишите кусок простого кода из основной части, это важнее, чем придумать нечто оригинальное. Успокойтесь и не переживайте слишком сильно по поводу мелких ошибок. Подобные вещи легко могут произойти, если вы работаете не на привычной клавиатуре.
Чтобы вы ни делали в рамках подготовки, убедитесь, что вы понимаете основные принципы, типа структуры данных, включая связанные списки, рекурсию и манипуляцию строками.
Вопросы по языку
Пример: В каких случаях необходим виртуальный деструктор?
Вас могут попросить объяснить принцип работы языка. Например, вы должны будете рассказать, почему важно для родительского класса использовать виртуальный деструктор.
Эти вопросы, как правило, достаточно прямые и нужны, чтобы проверить ваши теоретические знания языка. Не бойтесь отвечать «Я не знаю» или «Не помню» — особенно, если это касается языка, который не обязателен в этой вакансии.
Прочие вопросы
Вас могут попросить спроектировать систему или объяснить, за что отвечает определённые кусок кода. Сохраняйте уверенность в себе и помните: интервьюеры тестируют вашу способность размышлять. Один и тот же принцип лежит в основе головоломок, задач на проектирование систем и для других вопросов без правильного ответа.
Не было сложных вопросов?
Что, если вам не задали трудных вопросов? Означает ли это, что вас недооценивают? Скорее всего, нет. Вас не вызывают на собеседование от скуки — зачем работодателю тратить своё время? Не паникуйте, если вопросы не показались вам сложными или если интервьюер больше рассказывал о компании, вместо того, чтобы обсуждать вас и ваши навыки. Это означает, что они уже готовы принять вас (счастливчик!) и стараются убедиться, что вы хотите пойти к ним работать. Это, конечно же, лучшее, на что можно надеяться на собеседовании, так что постарайтесь не провалить всё на финальной стадии. Не ведите себя задиристо, но и не радуйтесь, как дитя, любым вещам, которые вам говорят. Ведите себя спокойно.
Совет на прощание
Лучший совет — получите удовольствие от интервью. Вам посчастливилось встретиться с кем-то по настоящему умным, готовым предоставить вам интересные вопросы. Поговорите немного о последних технологиях, которые вы изучаете. Спросие, что изучают они. Поделитесь головоломками. Рассматривайте собеседование как возможность узнать необычного человека, а не просто как скучную процедуру трудоустройства. Конечно, от вас потребуются определённые технические навыки, чтобы впечатлить интервьюера; вы (скорее всего) не получите предложение о работе только потому, что понравились как человек. Но, рассматривая собеседование как нечто нескучное и интересное, а не волнительное и пугающее, вы сможете успокоить нервы, что позволит с чистой головой подойти к решению заданных задач.
Актуальные вакансии программиста можно посмотреть здесь.