Холодная статистика говорит, что каждый этап собеседования в Google успешно проходят лишь 15-20% кандидатов. Это значит, что есть шанс в 80% завалить кодинг. Как не проволить этап с задачками и на что смотрит интервьюер?
На секции с алгоритмами есть 4-5 критерия оценки кандидата, в зависимости от компании они могут меняться, но основные обычно одни и те же. По каждому критерию, после собеседования интервьюер ставит отметку: от «Горячий пирожок» до «Гнать в шею».
Так какие же есть критерии?
Алгоритмы 💭
Здесь интервьюер пытается понять, насколько хорошо кандидат умеет придумывать решения.
Сюда же входят оценка сложности, плюсы и минусы разных подходов.
Проверяется теоретическая часть по структурам данных и алгоритмам.
❌Многие торопятся быстрее пройти эту стадию и начать писать код, "поспешишь - Яндексоида рассмешишь".
Начинаем с глупого решения и приходим к самому оптимальному, попутно объясняя плюсы и минусы.
Написание кода 👩💻
Здесь проверяют на умение писать код. Чистый и опрятный код, желательно придерживаться кодстайла выбранного языка.
Баги и синтаксические ошибки тоже не стоит допускать. Ошибки в названиях методов обычно некритичны.
❌Здесь иногда кандидаты начинают уходить в дичайший рефакторинг, пытаясь каждые три строчки выносить в новую функцию. Лучше написать немного грязно, убедиться что работает, а потом постараться почистить код. Старый работающий метод лучше новых двух.
Коммуникация 🤬
Интервьюер тут оценивает, как легко уследить за ходом мыслей. Есть ли очевидные проблемы в общении. Адекват или неадекват 🙃. Рассуждает ли кандидат вслух или подолгу молчит. Насколько вы последовательны и понятны.
Можно попросить подумать пару минут в тишине. Можно попросить подсказку. Можно шутить, если конечно умеете.
❌Отмечу, что не стоит сверять каждый свой шаг у интервьюера, если он/она/они заметят ошибку, то сами остановят вас. Просто не молчите.
Тестирование 🚴
Как кандидат будет проверить работоспособность своего кода. Умеет ли выявлять угловые случаи. Как будет дебажить и сможет ли самостоятельно найти ошибки.
❌Самая распространенное заблуждение, которое я видел - изначально предполагать, что ваш код работает. Например бесконечный цикл
for (int i = 0; i > 100; i++) и кандидат будет слепо пропускать ошибку, концентрируясь на основной логике. Забудьте, что это вы написали, теперь вы компилятор и впервые увидели код 🤖. Дебажим каждую точку с запятой, не предполагаем, а тупо исполняем программу.Сохраните, чтобы не потерять и использовать при подготовке к интервью 😉