Этапы собеседования
Лайвкодинг на собеседовании: процесс, задачи и как не зависнуть
Содержание
Лайвкодинг это секция, где вы пишете код при интервьюере в общем редакторе и проговариваете решение вслух. Оценивают не только рабочий код, но и процесс: уточнили ли условие, разобрали ли примеры, назвали ли сложность, проверили ли краевые случаи. Задачи обычно небольшие, на 20-40 минут. Главный навык здесь говорить и писать одновременно, и его можно натренировать.
Что проверяют
- Понимаете ли вы задачу до того, как начали писать код
- Можете ли объяснить ход мысли так, чтобы его было легко проверить
- Пишете ли рабочий и читаемый код без подсказок среды
- Знаете ли сложность своего решения по времени и памяти
- Проверяете ли код сами, а не ждёте, пока ошибку найдёт интервьюер
- Как реагируете на подсказку и на смену условия
Как проходит
- 1
Условие
Интервьюер даёт задачу текстом или голосом. Перечитайте её и перескажите своими словами.
- 2
Уточнения и примеры
Спросите про входные данные, пустые значения, размеры, порядок. Разберите 2-3 примера руками, включая краевой.
- 3
Подход словами
Опишите идею решения и её сложность до кода. Если видите только наивный вариант, скажите это и предложите его как старт.
- 4
Код
Пишите и комментируйте вслух, что делает каждый блок. Имена переменных понятные, без однобуквенных загадок.
- 5
Проверка
Прогоните свой пример по коду глазами или запуском, затем краевые случаи. Найдите ошибку сами.
- 6
Развитие задачи
Часто следует «а если данных миллион» или «а если нельзя менять массив». Это продолжение, а не провал.
Типичные задачи по ролям
Задачи на лайвкодинге ближе к повседневной работе, чем на алгоритмической секции. Часто это утилита, которую вы встречали в коде, или обработка данных.
| Роль | Что часто дают | Пример в Техпрогоне |
|---|---|---|
| Frontend | debounce, throttle, Promise.all, EventEmitter, deepEqual, свой map или reduce | debounce с cancel и flush |
| Backend на JS/TS | Пул асинхронных задач, повтор с паузой, разбор query-строки, LRU-кэш | Ограничение параллельности |
| Любая роль разработки | Работа со строками и массивами: дубли, группировка, частоты, два указателя | Группировка анаграмм |
| Аналитик, бэкенд, QA | SQL-запрос: JOIN, группировка, фильтр по агрегату | Клиенты без заказов |
| Mobile | Обработка списка, модель данных, асинхронная загрузка | Треки мобильной разработки |
Если вакансия на конкретный стек, задачу могут дать на нём. Если стек свободный, выбирайте язык, на котором пишете быстрее всего.
Разбор частых задач
Напишите debounce
Реализуйте Promise.all
Найдите два числа с заданной суммой
Сдвиньте нули в конец массива
Выведите клиентов, у которых нет ни одного заказа
Как проговаривать решение
Интервьюер оценивает то, что слышит. Молча написанный правильный код даёт меньше информации, чем рассуждение вслух с одной поправкой. Вот фразы, которые помогают держать нить.
| Момент | Что сказать |
|---|---|
| После условия | «Перескажу, как понял: на входе..., на выходе..., верно?» |
| Перед кодом | «Вижу два варианта: простой за O(n²) и с хеш-таблицей за O(n). Начну со второго, если вы не против» |
| Во время кода | «Здесь обработаю пустой массив, чтобы дальше не думать о нём» |
| Когда засомневались | «Не уверен, что индекс не выйдет за границу, проверю на примере» |
| После кода | «Пройдусь по примеру [1, 0, 3] вручную, потом проверю пустой вход и один элемент» |
Что делать, если завис
Зависнуть на лайвкодинге нормально. Плохо молчать пять минут. Тишина выглядит как отсутствие идей, даже если в голове идёт работа.
- Скажите вслух, где застряли: «Не понимаю, как обработать повторы».
- Вернитесь к маленькому примеру и решите его руками на бумаге или в комментарии.
- Предложите наивное решение. Рабочий медленный код лучше, чем идеальный ненаписанный.
- Подумайте о структурах данных: хеш-таблица, стек, сортировка, два указателя часто снимают сложность.
- Примите подсказку спокойно и скажите, как она меняет план. Использовать подсказку не стыдно.
«Пока не вижу линейного решения. Давайте я напишу за O(n²), чтобы был рабочий вариант, а потом подумаем, что можно запомнить в хеш-таблице, чтобы убрать внутренний цикл.»
Подсказчики и ИИ на собесе
Есть программы, которые слушают собес и подсказывают ответ или код. Соблазн понятен, но это обман, и на лайвкодинге он виден лучше всего.
- Пауза перед каждым ответом и взгляд в сторону от редактора
- Готовый код появляется целиком, без черновика и исправлений
- Гладкое объяснение, которое разваливается на первом «а почему так?»
- Смена условия ставит в тупик: решение было не ваше
Интервьюеры всё чаще меняют условие на ходу и просят пройтись по коду построчно. Компании проверяют кандидатов и на следующих этапах, а испытательный срок подсказчик не пройдёт.
Среда и технические мелочи
- Узнайте заранее, где будет код: общий онлайн-редактор, своя IDE с демонстрацией экрана или доска
- Если редактор без автодополнения, потренируйтесь писать без него хотя бы пару раз
- Уточните, можно ли запускать код. Если нельзя, проверка идёт глазами по примеру
- Держите под рукой стандартную библиотеку языка в голове: методы массивов, строк, словарей
- Проверьте микрофон и интернет за 10 минут до начала
Вопросы из базы Техпрогона
Частые вопросы этого этапа с ответом и разбором. Откройте любой и попробуйте ответить сами.
- Отмена запросаJavaScript
- Объясни Two Sum через хешАлгоритмы
- Как работает NULL в SQLSQL и базы данных
- async/awaitJavaScript
- Объясни метод двух указателейАлгоритмы
- Виды JOINSQL и базы данных
- Промис: состояния и гарантииJavaScript
- Первый повторный заказАлгоритмы
- Заказы за месяц без отменённыхSQL и базы данных
- Комбинаторы промисовJavaScript
- Общие элементы двух отсортированных списковАлгоритмы
- Клиенты без emailSQL и базы данных
Частые ошибки
- Начать писать код сразу после условия, не задав ни одного вопроса
- Молчать, пока пишете, и объяснять всё только в конце
- Не назвать сложность решения или назвать её неверно
- Сказать «готово» без прогона хотя бы одного примера
- Спорить с подсказкой вместо того, чтобы её попробовать
- Застрять на идеальном решении и не написать рабочее
- Забыть про пустой вход, один элемент и повторы
Чек-лист подготовки
- Решил вслух 10-15 типичных задач своей роли
- Отработал шаги: пересказ, уточнения, примеры, подход, код, проверка
- Умею называть сложность по времени и памяти для своих решений
- Знаю наизусть методы массивов, строк и словарей своего языка
- Прошёл хотя бы один прогон с таймером и без подсказок
- Прошёл мок с живым человеком, который смотрел на процесс
- Проверил среду: редактор, микрофон, демонстрацию экрана
Как тренировать этот этап в Техпрогоне
- Задачи с автопроверкой: код на JS, TS и Python запускается прямо в браузере, другие языки проверяет раннер на сервере, есть и SQL
- Лестница стресса, ступень «Наедине»: решаете с подсказками и без давления
- Ступень «Вслух»: запись голоса остаётся на устройстве, перед кодом обязательны уточнения, примеры, подход и сложность словами
- Ступень «Под давлением»: таймер, без подсказок, не больше трёх запусков тестов и сдач, всплывают уточняющие вопросы
- Живой мок по ссылке: друг-интервьюер видит условие, эталон и рубрику процесса, итог 50% тесты и 50% рубрика
- Готовность по серии прогонов: видно, стабильно ли вы решаете, а не повезло ли один раз
- Устный вопрос «Как вы решаете задачу на live coding» с чек-листом тезисов
Частые вопросы
На каком языке решать задачу на лайвкодинге?
Можно ли гуглить на лайвкодинге?
Что важнее: рабочий код или объяснение?
Чем лайвкодинг отличается от алгоритмической секции?
Что делать, если не успел решить задачу?
Сколько задач нужно решить перед лайвкодингом?
Отрепетируйте лайвкодинг до собеса
Уроки, билеты, устные вопросы с тезисами и мок вслух с таймером. Бесплатный тариф без ограничения по времени.
Другие этапы и разделы
Алгоритмы
Узнаёте ли вы паттерн задачи по условию
Техскрининг
Знаете ли вы базу своего стека без подсказок
System design
Умеете ли вы превратить расплывчатую задачу в список требований
Тестовое задание
Понимаете ли вы задачу и задаёте ли уточняющие вопросы
Все этапы собеседования
Схема найма от отклика до оффера и сроки
Что должен знать junior, middle, senior
Темы и частые вопросы по 30 профессиям
Как войти в IT с нуля
Выбор профессии и план обучения по шагам