Где вы работали с рефакторингом легаси на Node.js
Что проверяют
Умеете ли вы менять работающую систему, не ломая её, и принимать решения с оглядкой на бизнес. Интервьюеру важны мотивация, план и страховка, а не красота итогового кода. Следом обычно спрашивают, как вы убедились, что ничего не сломали, и что сделали бы иначе.
Как отвечать
Возьмите один реальный эпизод и расскажите по шагам:
- исходная точка: что это был за сервис и почему его пришлось трогать. Например, Express на колбэках, давно снятая с поддержки версия Node, нет тестов, каждый релиз ломает соседние эндпоинты;
- страховка: сначала характеризационные тесты на текущее поведение через
supertestи Jest, Vitest или встроенныйnode:test. Без них рефакторинг превращается в переписывание наугад; - пошаговые изменения: колбэки в
async/awaitчерезutil.promisify, выделение слоя доступа к данным, постепенный TypeScript черезallowJsиcheckJs, поиск циклических зависимостей черезmadge, переход на актуальную LTS-версию Node. Крупные куски заменяют по принципу strangler fig: новый модуль рядом со старым, трафик переводится частями; - выкатка: фиче-флаги, канареечный релиз, метрики ошибок и задержек до и после;
- результат: измеримый. Время ответа p95, число инцидентов, сколько теперь занимает типовая доработка.
Цифры должны быть вашими и такими, которые вы готовы объяснить: откуда взяли, чем мерили. Круглые «на 30%» без источника вызывают вопросы.
Если легаси на Node.js у вас не было, не выдумывайте. Расскажите про рефакторинг поменьше: перевод модуля с колбэков на промисы, вынос логики из роутов, обновление мажорной версии зависимости. Или честно опишите, как подошли бы к задаче, по тем же шагам. Это слабее реального опыта, но сильнее сочинённой истории, которая развалится на втором уточнении.
Где спотыкаются
Рассказывают, как всё переписали с нуля за полгода. Интервьюер слышит риск: долгая ветка, заморозка фич, потерянное неявное поведение.
Не упоминают тесты и откат. Тогда «рефакторинг прошёл успешно» звучит как везение, а не как результат работы.
Ругают предыдущих разработчиков. Легаси появляется из-за сроков и решений своего времени, а пренебрежительный тон говорит больше о вас, чем о коде.