P
prepair.app
Пройти интервью →
EnglishУкраїнськаРусскийDeutsch
🟢

Middle Node.js BackendВопросы на собеседовании Node.js

Middle · 2–4 года опыта

Собеседование Node.js крутится вокруг event loop, асинхронных паттернов, Express или NestJS и последствий однопоточного рантайма. Ниже — самые частые вопросы с эталонными ответами. Middle: более глубокое понимание, оптимизацию и реальные рабочие ситуации.

Попробовать — без регистрации
Готовим вопрос…

Темы для подготовки

Event loop и его фазы
Промисы и async/await
Streams и buffers
Express / NestJS
Middleware и обработка ошибок
JWT и аутентификация

7 вопросов уровня Middle с ответами

1

Почему тяжёлая счётная операция опасна в Node и что с этим делать?

Ответ

Потому что она занимает единственный поток, обслуживающий все запросы: двухсекундное вычисление заставляет каждого параллельного пользователя ждать две секунды. Варианты — вынести в worker thread, в отдельный процесс или очередь, либо сменить алгоритм. Ловушка в том, что на слабом трафике в разработке всё выглядит нормально, а под нагрузкой появляется обрыв по задержкам.

2

Зачем нужны потоки (streams) и когда их отсутствие вредит?

Ответ

Они позволяют обрабатывать данные кусками, а не держать целиком в памяти. Чтение гигабайтной загрузки через readFile выделяет гигабайт на каждый параллельный запрос — так сервис умирает на трёх одновременных загрузках. Pipe держит память постоянной независимо от размера файла. Backpressure — та часть, которую пропускают: если приёмник медленнее источника, непрокачанный поток буферизует, пока процессу не кончится память.

3

У вас утечка памяти на проде. Как её искать?

Ответ

Сначала подтвердить: растущая куча, которая не возвращается после сборки мусора, а не нормальная пила. Затем снять два снимка кучи с разницей в минуты под нагрузкой и сравнить удержанные объекты — дифф обычно прямо называет виновника. Обычные причины: растущий кеш без вытеснения, слушатели, добавляемые на каждый запрос и не снимаемые, и замыкания, удерживающие большой объект.

4

Что даёт кластеризация и чего она не даёт?

Ответ

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

5

Как избежать N+1 с ORM в Node?

Ответ

Так же, как везде: заметить в журнале один запрос на элемент и загрузить связанные строки одним. У Prisma это include, у Sequelize eager loading, сырой join работает всегда. Специфичная для Node ловушка — await внутри цикла for, который сериализует вызовы, способные идти вместе: Promise.all чинит задержку, но не количество запросов.

6

Что проверять, когда Node-сервис замедляется под нагрузкой?

Ответ

Заблокирован ли event loop — на это прямо отвечает метрика его задержки, а догадки нет. Если цикл в порядке, время уходит во внешний вызов: база, чужой API, и частая причина — исчерпанный пул соединений. Логи средней задержки это прячут, перцентили нет: исчерпание пула живёт именно в p99.

7

Как тестировать код, который ходит во внешний API?

Ответ

Перехватывать на уровне HTTP чем-то вроде nock, а не мокать собственный клиент, чтобы тест проверял настоящую сборку запроса и разбор ответа. Один реальный ответ записать как фикстуру и сверяться с ним. Мок собственной обёртки проверяет, что ваш мок совпадает с вашим моком — поэтому такие наборы остаются зелёными, пока интеграция ломается.

🦎

Прочитать ответы недостаточно

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

Пройти интервью Middle Node.js Backend →
Бесплатно · 3 интервью в месяц

Другие уровни — Node.js Backend

Junior Node.js BackendSenior Node.js BackendВсе вопросы Node.js Backend

Другие специализации

🔍Middle QA Manual🤖Middle QA AutomationMiddle Java Backend🐍Middle Python Backend🐘Middle PHP Backend🦫Middle Go Backend💎Middle Ruby on Rails🟣Middle .NET Backend Developer🔷Middle C++🟨Middle JavaScript