We use cookies to provide the best site experience.
Ok, don't show again
Close
Блог

Типичные ошибки на coding interview

1. Не знать, что тебя ждет

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

2. Не готовиться

Многие из людей которые приходят на мок-интервью (тренировочное интервью) формулируют запрос так: у меня интервью с Google/Facebook через неделю, как мне подготовится? Честный ответ: почти нереально. Большинство из людей, которые подписывают успешный офер, тратят около полгода на подготовку: решают задачи на все основные темы, тренируются делать тестовые интервью, учатся быстро думать вслух и понятно объяснять свои идеи.

3. Не эффективно использовать время интервью

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

4. Не выяснить, в чем задача

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

5. Не тестировать код

Раз за разом я слышу эту фразу на интервью: “Я написал код, я думаю все работает!”. Затем кандидат молчит и ждет действия от меня. Как правило, в коде, который написал кандидат, много поверхностных ошибок, которые кандидат бы заметил, если бы попытался протестировать код. Поэтому никогда не говорите так. Говорите: “Я закончил алгоритм, дайте мне его протестировать на простых примерах”.

6. Не знать язык программирования достаточно глубоко

Выбирайте язык для интервью, на котором вы часто пишете и который вы знаете глубоко, а не поверхностно. Вы должны знать: code style языка, как осуществляется управление памятью, где идет не явное копирование данных, какие типы в языке изменяемые а какие нет (mutable / immutable). Если вы этого не знаете, это будет достаточно очевидно для вашего интервьюера в ходе решения задачи.

7. Неправильно оценивать сложность алгоритма / не оценивать сложность вообще

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

String numbers = "";
for (int i = 0; i <= 100; i++) {
   numbers += i;
}

Кажется что эта строчка занимает линейное время - то есть если мы изменим цикл с 100 до 10 000, то время выполнения увеличится тоже в 100 раз. Но в языках, где строки неизменяемые (immutable) время исполнения может оказаться не линейным, а квадратным, так как на каждой итерации будет создаваться новая строка: 0 + 1 + 2 + .. n = n * (n - 1) / 2. А значит время выполнения увеличится не в 100, а в 10 000 раз.

Не предлагать альтернатив

Допустим, вы подготовились и придумали самое оптимальное решение задачи и написали код для его выполнения. Тут кажется, придраться не к чему. А нет! Даже самое лучшее решение не будет казаться таким впечатляющим, если его не с чем сравнить. Для этого предлагают начинать с самого очевидного и неоптимального решения (brute force) на фоне которого любая оптимизация выглядит выигрышно. Тем более разные решения подходят для разных ситуации: где-то пригодится медленное, но легко читаемое и понятное, а где-то где скорость и пространство критически важны.

На курсе Algorithms for Coding Interviews в течении 4 месяцев мы закладываем фундамент с которым можно уверенно чувствовать себя на интервью: решаем задачи на строки, массивы, рекурсию, обходим графы и применяем битовую манипуляцию. Каждая тема закрепляется решением 10 задач, на которые менторы дают индивидуальную обратную связь. Последний день, когда можно записаться на следующий поток -12 мая.

Photo by Charles Deluvio on Unsplash
Разработка