Как подходить к написанию решения задачи: сначала планировать структуру или сразу писать код
Что проверяют
Умеете ли вы не бросаться в код до того, как поняли задачу, и при этом не застревать в проектировании там, где проще попробовать. На лайвкодинге за этим вопросом почти всегда стоит практика: вам дают задачу и смотрят, что вы делаете в первые пять минут. Следом обычно просят пример, когда план сэкономил время, или наоборот, когда оказался лишним.
Как отвечать
Сильный ответ звучит не как «всегда планирую», а как правило выбора, привязанное к размеру и неопределённости задачи:
- уточнить условие: входные данные, ограничения по размеру, что вернуть на пустом входе, есть ли дубли. На собеседовании проговорите это вслух и разберите пару примеров руками;
- набросать решение словами: наивный вариант и его сложность, затем улучшение, например словарь вместо вложенного цикла,
O(n)вместоO(n²). Пять строк псевдокода или сигнатуры функций с тайп-хинтами дешевле, чем переписывать готовый код; - писать код маленькими шагами: сначала рабочая версия, потом проверка на крайних случаях. В работе удобно начать с теста на
pytest, который фиксирует ожидаемое поведение; - прототип вместо плана: когда непонятно, как ведёт себя библиотека или внешнее API, быстрее проверить гипотезу в REPL или Jupyter, а план строить уже по результату.
На рабочих задачах добавьте масштаб: для скрипта на сто строк достаточно плана в голове, для нового сервиса нужны интерфейсы модулей, схема данных и договорённость с командой до первой строки кода.
Опирайтесь на свой случай: где план уберёг от переделки или где прототип за час снял вопрос, о котором могли спорить неделю. Если коммерческого опыта мало, возьмите учебный проект или задачу с LeetCode и честно расскажите, как менялся ваш подход.
Где спотыкаются
Молча начинают печатать сразу после условия. Интервьюер не видит хода мысли, а ошибка в понимании задачи всплывает через двадцать минут.
Уходят в другую крайность: десять минут рисуют схему для задачи на пятнадцать строк и не успевают написать сам код.
Отвечают абстрактно, «зависит от задачи», и не называют, от чего именно. Нужны критерии (размер, неопределённость, цена ошибки) и пример из практики.