Этапы собеседования

Лайвкодинг на собеседовании: процесс, задачи и как не зависнуть

Обновлено 8 мин чтения 45-90 минут, на одну задачу обычно 20-40 минут Один или два инженера команды
Содержание
  1. Коротко
  2. Что проверяют
  3. Как проходит
  4. Типичные задачи по ролям
  5. Разбор частых задач
  6. Как проговаривать решение
  7. Что делать, если завис
  8. Подсказчики и ИИ на собесе
  9. Среда и технические мелочи
  10. Вопросы из базы
  11. Частые ошибки
  12. Чек-лист подготовки
  13. Как тренировать
  14. Частые вопросы
Коротко

Лайвкодинг это секция, где вы пишете код при интервьюере в общем редакторе и проговариваете решение вслух. Оценивают не только рабочий код, но и процесс: уточнили ли условие, разобрали ли примеры, назвали ли сложность, проверили ли краевые случаи. Задачи обычно небольшие, на 20-40 минут. Главный навык здесь говорить и писать одновременно, и его можно натренировать.

Что проверяют

  • Понимаете ли вы задачу до того, как начали писать код
  • Можете ли объяснить ход мысли так, чтобы его было легко проверить
  • Пишете ли рабочий и читаемый код без подсказок среды
  • Знаете ли сложность своего решения по времени и памяти
  • Проверяете ли код сами, а не ждёте, пока ошибку найдёт интервьюер
  • Как реагируете на подсказку и на смену условия

Как проходит

  1. 1

    Условие

    Интервьюер даёт задачу текстом или голосом. Перечитайте её и перескажите своими словами.

  2. 2

    Уточнения и примеры

    Спросите про входные данные, пустые значения, размеры, порядок. Разберите 2-3 примера руками, включая краевой.

  3. 3

    Подход словами

    Опишите идею решения и её сложность до кода. Если видите только наивный вариант, скажите это и предложите его как старт.

  4. 4

    Код

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

  5. 5

    Проверка

    Прогоните свой пример по коду глазами или запуском, затем краевые случаи. Найдите ошибку сами.

  6. 6

    Развитие задачи

    Часто следует «а если данных миллион» или «а если нельзя менять массив». Это продолжение, а не провал.

Типичные задачи по ролям

Задачи на лайвкодинге ближе к повседневной работе, чем на алгоритмической секции. Часто это утилита, которую вы встречали в коде, или обработка данных.

РольЧто часто даютПример в Техпрогоне
Frontenddebounce, throttle, Promise.all, EventEmitter, deepEqual, свой map или reducedebounce с cancel и flush
Backend на JS/TSПул асинхронных задач, повтор с паузой, разбор query-строки, LRU-кэшОграничение параллельности
Любая роль разработкиРабота со строками и массивами: дубли, группировка, частоты, два указателяГруппировка анаграмм
Аналитик, бэкенд, QASQL-запрос: JOIN, группировка, фильтр по агрегатуКлиенты без заказов
MobileОбработка списка, модель данных, асинхронная загрузкаТреки мобильной разработки

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

Разбор частых задач

Напишите debounce

Что проверяют
Проверяют замыкания, таймеры и работу с контекстом вызова.
Как отвечать
Уточните: вызывать в конце паузы или в начале, нужен ли метод отмены. Храните id таймера в замыкании, на каждый вызов сбрасывайте его и ставьте новый. Передайте аргументы и this последнего вызова.
Пример ответа
«Сначала уточню: вызываем функцию после паузы в ms миллисекунд с последними аргументами, верно? Тогда держу таймер в замыкании и на каждом вызове делаю clearTimeout и новый setTimeout. Сложность каждого вызова O(1).»
Тезисы ответа и тренировка вслух

Реализуйте Promise.all

Что проверяют
Классика для фронтенда и Node.js. Проверяет понимание промисов и порядка результатов.
Как отвечать
Возвращаете новый промис. Считаете выполненные, кладёте результат по индексу, а не в конец. Первый reject сразу отклоняет общий промис. Пустой массив сразу даёт пустой результат.
Тезисы ответа и тренировка вслух

Найдите два числа с заданной суммой

Как отвечать
Наивно двумя циклами за O(n²). Лучше один проход с хеш-таблицей: для каждого числа ищете в ней разность до цели. Время O(n), память O(n).
Тезисы ответа и тренировка вслух

Сдвиньте нули в конец массива

Как отвечать
Два указателя: один идёт по массиву, второй указывает, куда класть следующее ненулевое. Порядок ненулевых сохраняется, время O(n), память O(1).
Тезисы ответа и тренировка вслух

Выведите клиентов, у которых нет ни одного заказа

Как отвечать
LEFT JOIN заказов к клиентам и фильтр `WHERE orders.id IS NULL`, либо `NOT EXISTS`. Скажите, почему `NOT IN` опасен, если в подзапросе встретится NULL.
Тезисы ответа и тренировка вслух

Как проговаривать решение

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

МоментЧто сказать
После условия«Перескажу, как понял: на входе..., на выходе..., верно?»
Перед кодом«Вижу два варианта: простой за O(n²) и с хеш-таблицей за O(n). Начну со второго, если вы не против»
Во время кода«Здесь обработаю пустой массив, чтобы дальше не думать о нём»
Когда засомневались«Не уверен, что индекс не выйдет за границу, проверю на примере»
После кода«Пройдусь по примеру [1, 0, 3] вручную, потом проверю пустой вход и один элемент»
Говорить и печатать одновременно непривычно. Это не талант, а навык: он появляется после нескольких прогонов вслух с таймером.

Что делать, если завис

Зависнуть на лайвкодинге нормально. Плохо молчать пять минут. Тишина выглядит как отсутствие идей, даже если в голове идёт работа.

  1. Скажите вслух, где застряли: «Не понимаю, как обработать повторы».
  2. Вернитесь к маленькому примеру и решите его руками на бумаге или в комментарии.
  3. Предложите наивное решение. Рабочий медленный код лучше, чем идеальный ненаписанный.
  4. Подумайте о структурах данных: хеш-таблица, стек, сортировка, два указателя часто снимают сложность.
  5. Примите подсказку спокойно и скажите, как она меняет план. Использовать подсказку не стыдно.
Как это звучит

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

Подсказчики и ИИ на собесе

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

  • Пауза перед каждым ответом и взгляд в сторону от редактора
  • Готовый код появляется целиком, без черновика и исправлений
  • Гладкое объяснение, которое разваливается на первом «а почему так?»
  • Смена условия ставит в тупик: решение было не ваше

Интервьюеры всё чаще меняют условие на ходу и просят пройтись по коду построчно. Компании проверяют кандидатов и на следующих этапах, а испытательный срок подсказчик не пройдёт.

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

Среда и технические мелочи

  • Узнайте заранее, где будет код: общий онлайн-редактор, своя IDE с демонстрацией экрана или доска
  • Если редактор без автодополнения, потренируйтесь писать без него хотя бы пару раз
  • Уточните, можно ли запускать код. Если нельзя, проверка идёт глазами по примеру
  • Держите под рукой стандартную библиотеку языка в голове: методы массивов, строк, словарей
  • Проверьте микрофон и интернет за 10 минут до начала

Вопросы из базы Техпрогона

Частые вопросы этого этапа с ответом и разбором. Откройте любой и попробуйте ответить сами.

Частые ошибки

  • Начать писать код сразу после условия, не задав ни одного вопроса
  • Молчать, пока пишете, и объяснять всё только в конце
  • Не назвать сложность решения или назвать её неверно
  • Сказать «готово» без прогона хотя бы одного примера
  • Спорить с подсказкой вместо того, чтобы её попробовать
  • Застрять на идеальном решении и не написать рабочее
  • Забыть про пустой вход, один элемент и повторы

Чек-лист подготовки

  • Решил вслух 10-15 типичных задач своей роли
  • Отработал шаги: пересказ, уточнения, примеры, подход, код, проверка
  • Умею называть сложность по времени и памяти для своих решений
  • Знаю наизусть методы массивов, строк и словарей своего языка
  • Прошёл хотя бы один прогон с таймером и без подсказок
  • Прошёл мок с живым человеком, который смотрел на процесс
  • Проверил среду: редактор, микрофон, демонстрацию экрана

Как тренировать этот этап в Техпрогоне

  • Задачи с автопроверкой: код на JS, TS и Python запускается прямо в браузере, другие языки проверяет раннер на сервере, есть и SQL
  • Лестница стресса, ступень «Наедине»: решаете с подсказками и без давления
  • Ступень «Вслух»: запись голоса остаётся на устройстве, перед кодом обязательны уточнения, примеры, подход и сложность словами
  • Ступень «Под давлением»: таймер, без подсказок, не больше трёх запусков тестов и сдач, всплывают уточняющие вопросы
  • Живой мок по ссылке: друг-интервьюер видит условие, эталон и рубрику процесса, итог 50% тесты и 50% рубрика
  • Готовность по серии прогонов: видно, стабильно ли вы решаете, а не повезло ли один раз
  • Устный вопрос «Как вы решаете задачу на live coding» с чек-листом тезисов

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

На каком языке решать задачу на лайвкодинге?
На языке вакансии, если его требуют. Если язык свободный, на том, где вы пишете быстрее и увереннее всего. Перед началом стоит уточнить это у интервьюера.
Можно ли гуглить на лайвкодинге?
Зависит от компании. Синтаксис метода иногда разрешают посмотреть, идею решения нет. Если не уверены, спросите вслух: честный вопрос лучше тайного поиска.
Что важнее: рабочий код или объяснение?
Нужно и то, и другое. Рабочий код без объяснения плохо оценить, объяснение без кода не доказывает, что вы умеете писать. Начните с простого рабочего варианта и улучшайте вслух.
Чем лайвкодинг отличается от алгоритмической секции?
Алгоритмическая секция проверяет знание паттернов и сложности на учебных задачах. Лайвкодинг чаще про практический код: утилиты, асинхронность, обработку данных, SQL. Граница размыта, и часто это одна секция.
Что делать, если не успел решить задачу?
Расскажите, как довели бы решение до конца, какие случаи остались и как бы их проверили. Процесс и правильное направление часто оценивают выше, чем последнюю строчку.
Сколько задач нужно решить перед лайвкодингом?
Точной нормы нет. Ориентир: 10-15 типичных задач своей роли, решённых вслух по шагам, и несколько прогонов с таймером. Важнее стабильность, чем количество.

Отрепетируйте лайвкодинг до собеса

Уроки, билеты, устные вопросы с тезисами и мок вслух с таймером. Бесплатный тариф без ограничения по времени.

Другие этапы и разделы