Конкретные знания и способность показать их на интервью – две совершенно разные вещи. Первое собеседование на должность программиста – источник постоянного стресса независимо от возраста. Во время собеседования начинают забываться элементарные вещи, а некоторые вопросы ставят в тупик.
Совсем убрать волнение невозможно, но подготовка к интервью может его уменьшить. В этом гайде мы разберем как лучше готовиться к собеседованию.
Учтите, что само интервью может длиться не один час. В некоторые компании нужно пройти 2 и более раундов. Иногда они идут подряд, превращаясь в многочасовой марафон, иногда разбиты на несколько дней.
Двух одинаковых интервью не бывает. Одни и те же люди, проводят каждое собеседование немного по разному. Очень многое зависит от того, в какую сторону пойдет диалог, какие ошибки совершит собеседующийся и куда приведут его размышления. Более того, даже в рамках одной специализации, разные компании могут спрашивать абсолютно разные вещи. Чем сильнее компания, тем больше фундаментальных вопросов и меньше прикладных. И наоборот. В совсем простых ситуациях, интересуются исключительно прикладными навыками, которые нужны конкретно на этой должности.
Процесс собеседования зависит от вашего предыдущего опыта. Если с вами можно поговорить о прошлых проектах, то, скорее всего, вас начнут расспрашивать про них. Если нет, то тогда пойдут в ход тесты на общую сообразительность.
Обычно собеседование начинается со знакомства. На этом этапе к вам присматриваются, оценивают общую адекватность и ищут зацепки для дальнейшего разговора. В идеале нужно иметь за плечами реальные проекты с вашим участием. Подойдут и учебные проекты, код которых выложен на гитхабе.
На этом этапе будьте готовы ответить на следующие вопросы:
Рекомендации
Ссылки
Существует категория задач, которые было модным задавать на собеседованиях раньше. Первыми, такое стали спрашивать в Microsoft, затем подтянулись и многие другие. Вот несколько примеров:
Сами по себе вопросы интересные. Над ними стоит поломать голову в кругу друзей. Проблема в том, что они слабо коррелируют с уровнем разработчика. Эти вопросы не являются логическими в строгом смысле, они больше опираются на воображение и "эврику", такое состояние, когда вы внезапно догадались до ответа. Правда ответов обычно больше чем один.
Считается что сам процесс рассуждения над этими вопросами, показывает как у человека работает мозг. С одной стороны показывает, но с другой, состояние стресса и внезапность таких вопросов обескураживает. Более того, интервьюируемый скорее всего не поймет что от него хотят услышать.
Крупные компании отказались от этих вопросов, но никто не застрахован. Всегда есть вероятность, что вас спросят про люки. Поэтому имеет смысл подготовиться заранее. Посмотреть список наиболее распространенных и порассуждать над ними в домашнем кругу или, например, в сообществе Хекслета.
Рекомендации
Ссылки
Это другой тип задач. Они имеют вполне конкретные ответы и опираются на формальную логику. Например:
Последняя задачка очень сильная и ее часто задают. Хотя она и выглядит мультяшно, внутри нее классная алгоритмическая задача.
Периодическое решение таких задач прокачивает алгоритмические навыки, работу с системами счисления, логическими операциями и математикой.
Рекомендации
Ссылки
На этом этапе могут попросить реализовать переворот односвязного списка или выполнить сортировку пузырьком. Более сложные вещи писать не просят, их могут спросить устно. Например:
Этого раздела не стоит пугаться, никто не требует от вас глубокого знания алгоритмов и всего прочитанного Кнута. Достаточно прочитать одну книгу и немного попрактиковаться. В любом случае этот опыт не будет лишним, правильно выбранная структура данных в коде, сделает вашу жизнь значительно легче.
Рекомендации
Ссылки
Сюда входит огромный перечень тем, например, владение командной строкой, понимание tcp/ip, http, dns, event loop и многое другое.
Как правило, эти вопросы не задают напрямую. В основном придумывают различные истории или ситуации. Примеры вопросов:
Рекомендации
Популярные задачи на системы счисления и битовые операции.
Рекомендации
Самый интересный тип задач. В этих задача моделируется реальная ситуация. Вам предстоит придумать способ решения в рамках каких-то ограничений. Например:
Чем меньше у вас опыта, тем выше вероятность того, что вас попросят написать код. Обычно просят написать его на листочке или в среде подобной repl.it. На задачу дают 10-20 минут. Пара примеров:
Во время решения могут попросить рассуждать над задачей вслух. Собеседующий хочет проследить за вашим ходом мыслей.
Эти задачи показывают насколько у интервьюируемого хорошо с логикой, алгоритмическим мышлением, как он владеет базовыми конструкциями языка. Они позволяют отсеять слабых кандидатов, но не помогают определить сильных.
В интернете созданы десятки сервисов, специализирующихся на подобных задачах. Обязательно включите их в свой список для подготовки. Научитесь проходить задачи уровня easy с закрытыми глазами. Этот навык поможет не только для прохождения собеседований, но и в реальном программировании.
Рекомендации
Ссылки
Сюда входит большая группа вопросов, по тем технологиям с которыми вам придется работать.
Здесь проверяется знание библиотек, фреймворков, каких-то особенностей языков. В интернете, особенно на гитхабе, созданы списки по каждому возможному стеку.