Какое отношение к Node.js
Что проверяют
Для фронтендера этот вопрос не про симпатии, а про то, понимаете ли вы, на чём держится ваш собственный инструментарий. Интервьюер хочет услышать, где Node.js присутствует в работе фронтенда и писали ли вы на нём что-то сами. Следом обычно спрашивают про event loop или про то, чем Node отличается от браузера.
Как отвечать
Начните с того, что Node.js это среда выполнения JavaScript вне браузера: движок V8 плюс libuv, который даёт асинхронный ввод-вывод и цикл событий. Затем покажите, где она встречается фронтендеру каждый день:
- сборка и инструменты: Vite, webpack, ESLint, Prettier, компилятор TypeScript, тестовые раннеры Vitest и Jest работают на Node;
- пакеты: npm, pnpm или yarn,
package.json, скрипты, lock-файл и то, почему его коммитят; - серверный рендеринг: Next.js и Nuxt выполняют ваш компонентный код на Node, отсюда ошибки вида
window is not defined; - BFF и мок-серверы: небольшой слой на Express или Fastify, который склеивает ответы нескольких API под нужды интерфейса.
Дальше дайте взвешенную оценку. Сильная сторона: неблокирующий ввод-вывод, поэтому Node хорошо держит много одновременных соединений при небольшой нагрузке на процессор. Слабая: тяжёлые вычисления блокируют единственный поток с JS-кодом, и все запросы ждут. Лечится это worker_threads или выносом расчёта в отдельный сервис. Упомяните, что современный Node многое умеет без пакетов: встроенный fetch, тестовый раннер node --test, режим --watch.
Если свой серверный опыт есть, коротко расскажите, что писали и какую проблему решали. Если нет, так и скажите и назовите, что делали на уровне инструментов: настраивали сборку, писали скрипты, чинили SSR.
Где спотыкаются
Называют Node.js языком или фреймворком. Это среда выполнения, а фреймворки вроде Express живут поверх неё.
Говорят «Node однопоточный» и останавливаются. Однопоточен только JS-код в цикле событий: работа с файлами, DNS и частью криптографии уходит в пул потоков libuv.
Отвечают «я фронтендер, бэкенд не моё». Для интервьюера это звучит как непонимание того, как собирается и рендерится собственное приложение.