Советы по собеседованию по программированию

Автор: Aaron Cao · Обновлено

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

Перед тем как писать код: сначала уточните, затем спланируйте

Если под давлением ваш инстинкт — сразу начать печатать, именно это исправляет данный раздел. Самые сильные кандидаты проводят первые несколько минут вообще не кодируя, и интервьюеры это замечают.

Начните с того, чтобы своими словами повторить задачу и подтвердить её с интервьюером. Спросите об ограничениях: размер входных данных, диапазоны значений, отсортированы ли входные данные, как обрабатывать пустой или некорректный ввод. Затем, прежде чем что-либо писать, назовите предполагаемый подход и его сложность. Этот короткий этап планирования позволяет рано выявить недопонимание и демонстрирует структурированное мышление, что составляет большую часть оценки.

Пока вы пишете код: думайте вслух и стройте решение поэтапно

Молчание — самый распространённый способ, которым сильный специалист по решению задач выглядит слабым. Постоянно комментируйте, что вы пишете и почему, чтобы интервьюер мог следить за вашей логикой и направлять вас, если вы отклонитесь.

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

После того как решение заработало: тестирование, граничные случаи и сложность

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

Представьте frontend-инженера, проходящего собеседование на позицию среднего уровня, который пишет рабочее решение с двумя указателями, а затем без подсказки прослеживает выполнение для пустого массива и массива из одного элемента и называет время выполнения как O(n). Эта последняя минута самопроверки и анализа сложности часто отделяет «нанять» от «может быть», потому что сигнализирует, что инженер будет замечать собственные ошибки в реальной работе. Называйте временную и пространственную сложность вслух, даже если вас не просят.

Превращаем советы в привычки перед настоящим собеседованием

Читать советы легко; выполнять их в состоянии нервозности — нет. Решение — репетиция в условиях, близких к реальным: включённый таймер, решение, проговариваемое вслух, и никаких пауз, чтобы что-то посмотреть. После каждой тренировочной задачи оценивайте не только то, решили ли вы её, но и то, уточнили ли вы условие, проговорили ли решение вслух и протестировали ли его, поскольку именно эти привычки оцениваются.

Хронометрированные устные раунды с ИИ-интервьюером — один из способов выработать этот навык; их можно проходить в инструменте пробного собеседования. Стоит повторить одно предостережение: реальные раунды по программированию часто проходят в наблюдаемом общем редакторе или записываются, поэтому никакой live-ассистент не безопасен во время них, а цель тренировки — в том, чтобы он вам не понадобился. Больше ответов о раундах по программированию — в тематическом хабе о типах собеседований, а руководство по тренировке — в тематическом хабе пробных собеседований.

Частые вопросы

Какой самый важный совет для собеседования по программированию?

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

Стоит ли сразу писать оптимальное решение?

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

Как справляться с ситуацией, когда я застрял?

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

Нужно ли называть временную и пространственную сложность?

Да, даже если вас не просят. Анализ по Big-O показывает, что вы понимаете компромиссы, и интервьюеры придают этому большое значение. Называйте сложность своего подхода до и после написания кода.

Похожие вопросы

← Подробнее: Типы собеседований