Coding интервью
Алгоритмическая секция
Алгоритмическая (whiteboard) секция может быть разной сложности, зависит от компании.
Но к ней подготовиться просто, потому что задачи часто повторяются и похожи друг на друга.
Важен навык определять подход для решения — и решать задачу. Чтобы его прокачать, нужно решить много-много задач.
Во время решения важно показать, как ты рассуждаешь, как выбираешь путь решения, процесс тестирования и прочее.
Подготовка
Егор Бирюков предлагает такой путь:
- Пройти курс по алгоритмам, например Специализация Структуры и алгоритмы данных
- Изучить одну из книг:
- Полистать старую книжку Cracking the Coding Interview
- Решать задачи с ЛитКода или аналогов с целью научиться считывать паттерны и определять тип задач (например, прорешав набор задач) до понимания
- Можно провести мок-интервью на interviewing.io, Pramp, CodeSignal или со знакомыми.
Поведение на интервью
- Поздороваться, поговорить
- Выслушать задачу
- Задать вопросы и уточнить условия: в каком виде данные, сколько их, требования по памяти и времени, кто будет пользоваться функцией, можно ли препроцессить данные — никаких предположений
- Оптимальный способ vs в лоб
- Проговорить алгоритм
- Написать аккуратный код
- Во время написания кода говорим: продумываем решение вслух, размышляем об альтернативах и сложности
- Оцениваем сложность
- Обсудить альтернативы, плюсы и минусы
СОВЕТ
Постоянно говорить даже если непонятно, с чего начать, предлагать даже плохие решения и отметать их.
Ссылки
- Blind 75 LeetCode Questions — задачи, разбитые по группам (2019)
- Coding interview study plan — обновлённый список (2022)
- Grind 75 — Конструктор персонального плана
- Algorithms-Javascript — Algorithms resolution in Javascript. Leetcode - Geeksforgeeks - Careercup, Ignacio Chiazzo Cardarello, Github
- JavaScript Modern Interview Code Challenges — Sadanand Pai, GitHub (2022)
- Собеседования на JavaScript. Как не облажаться? — Реализация функций filter, map, some, Ivan Petrychenko (2021)
- Ihor Codes — LeetCode, YouTube Channel
- Telegram-чат «Leetcode heroes»
- Coding interview blog archive — Coding interview & system design problems (in Russian), Viktor Karpov, GitHub (2022)