Как справляться со сложными задачами, когда не понимаешь, как технически реализовать?
Что проверяют
Как вы действуете в неопределённости: сидите молча неделю, сразу бежите к старшему или идёте по понятному плану. Для фронтендера это частая ситуация: новая библиотека, непривычный браузерный API, сложное взаимодействие вроде drag-and-drop или редактора. Следом обычно спрашивают, в какой момент вы просите помощи.
Как отвечать
Покажите последовательность шагов и подкрепите её реальным случаем:
- уточнить задачу: часто «непонятно как» означает «непонятно что». Спросите у дизайнера и продакта про граничные состояния, мобильную версию, объём данных. Список на сто строк и на сто тысяч строк это разные задачи;
- разбить на части: отделить понятное (вёрстка, запросы к API) от неизвестного и начать с неизвестного, пока оно не съело срок;
- спайк с таймбоксом: небольшой прототип в отдельной ветке или в StackBlitz на день-два с чёткой целью, например проверить, выдержит ли виртуализация списка через
@tanstack/react-virtualнужный объём; - источники: MDN и спецификации для браузерных API, документация и исходники библиотеки, issues в её репозитории, похожие решения в вашем же коде;
- вовремя спросить: сформулируйте, что уже попробовали и где застряли, и идите к коллеге, когда исчерпали свой лимит времени. Такой вопрос экономит время обоим;
- сообщить о рисках: если оценка поехала, скажите об этом тимлиду сразу, а не в день релиза.
Дальше ваш пример: что было непонятно, какой прототип сделали, какое решение выбрали и почему отказались от альтернатив. Если опыта в команде мало, подойдёт пет-проект: важен ход рассуждений, а не масштаб.
Где спотыкаются
Рассказывают, что «загуглили и нашли решение». Интервьюер не видит ни метода, ни критериев выбора, особенно если решением оказался скопированный код без понимания, как он работает.
Не называют момент, когда просят помощи. Крайности одинаково плохи: неделя в одиночку и вопрос через десять минут без попытки разобраться.
Сразу тянут новую зависимость. Пакет ради одной функции, который добавляет десятки килобайт в бандл, часто хуже двадцати строк своего кода или нативного API вроде IntersectionObserver и <dialog>.