Собеседование на middle Node.js разработчика
Учебное мок-собеседование по Node.js для уровня middle. Вопросы охватывают рантайм Node.js, производительность, npm, NestJS, dependency injection, паттерны и ORM.
PurpleSchool | Anton Larichev
Открыть на YouTube- Опубликовано на YouTube:
- Просмотры на YouTube: 69,7 тыс.
- Лайки на YouTube: 1,7 тыс.
Таймлайн
Коротко о видео
Импровизированное мок-собеседование на позицию middle backend Node.js-разработчика: кандидат Михаил отвечает на вопросы, а интервьюер уточняет и корректирует ответы. Разбирают путь TypeScript-кода до выполнения в Node.js, V8, libuv, event loop, блокировку основного потока, worker threads и нативные bindings. Во второй части обсуждают package.json и lock-файлы, NestJS и dependency injection, паттерны, TypeORM, Prisma и декораторы.
Затронутые темы
Что взять на заметку
- TypeScript перед запуском в Node.js компилируется в JavaScript; JavaScript-код исполняет движок V8.
- Долгая синхронная CPU-операция, например квадратичный перебор массива, блокирует основной поток и event loop; второй HTTP-запрос будет ждать завершения этой работы.
- async/await сам по себе не переносит вычисления в отдельный поток: для CPU-bound задач нужны worker threads, отдельные процессы либо нативная реализация через bindings.
- Таймер с задержкой 10 секунд сработает не раньше этого срока, но может сработать существенно позже, если event loop занят.
- Для диагностики зависаний интервьюер предлагает подключить Chrome DevTools к Node.js-процессу и изучать стек вызовов и длительность функций.
- Lock-файл следует коммитить, а в сборках использовать npm ci, чтобы ставить зафиксированное дерево зависимостей и не получить неожиданное ламающее обновление.
- NestJS структурирует приложение через модули, контроллеры и сервисы; dependency injection может предоставлять классы, значения и фабрики с разными областями жизни экземпляров.
- В обсуждении ORM кандидат считает Prisma более удобной для новых проектов, но отмечает сложности её миграций на существующей базе; это личный опыт участника, а не универсальный вывод.