Node предоставляет программистам один поток, поэтому код можно писать легко и без узких мест. Внутри Node используется несколько потоков POSIX для различных операций ввода-вывода, таких как файлы, DNS, сетевые вызовы и т. д.
Когда Node получает запрос ввода-вывода, он создает или использует поток для выполнения этой операции ввода-вывода, а после завершения операции помещает результат в очередь событий. При каждом таком событии цикл событий запускается и проверяет очередь, и если стек выполнения Node пуст, он добавляет результат очереди в стек выполнения.
Вот как Node управляет параллелизмом.
Итог
Ключевой вывод для интервью: если Node.js однопоточный, то как он справляется с параллелизмом?