21 вопрос по Node.js с ответами

Я собрал 21 вопрос о Node.js, которые варьируются от очень простых вещей до некоторых технически продвинутых тем.

Node.js используется не только в серверной части. Он также применяется для создания интерфейсных приложений, и это стало очень важной частью экосистемы веб-разработки. Это означает, что разработчику, использующему Node.js, очень полезно знать роль, которую эта технология играет в различных JavaScript- средах. По этой причине я включил в данное руководство несколько вопросов и ответов в этом направлении.

Содержание

Общие указания

Я бы рекомендовал попытаться ответить на вопросы самостоятельно, прежде чем читать ответы.

Вопросы по Node.js

Что такое Node.js?

Node.js — это среда выполнения JavaScript, основанная на движке V8. Она позволяет запускать JavaScript вне браузера — обычно на веб-сервере.

Для чего нужен Node.js?

Node.js отлично справляется с обработкой нескольких соединений с низкой цикломатической сложностью, учитывая, что его однопоточный характер требует, чтобы мы как можно скорее освободили цикл обработки событий. Это делает Node.js идеальным выбором для микросервисов и приложений, работающих в режиме реального времени.

Что такое npm?

npm представляет собой диспетчер пакетов Node.js. Он состоит из интерфейса командной строки, который можно использовать для доступа к онлайн-реестру общедоступных и частных пакетов.

Как создать приложение Node.js с нуля?

Можно начать с создания папки проекта. Затем мы переходим к этой папке с помощью командной строки и запускаем npm init. Наконец, мы следуем инструкциям, чтобы заполнить информацию о нашем приложении.

Что делает «npm install»?

Он устанавливает зависимости, найденные в файле package.json.

Как установить библиотеку в Node.js?

npm install name-of-the-library установит нашу библиотеку и включит ее как dependency. Если мы добавим параметр --save-dev, библиотека будет включена как devDependency.

Как создать собственный скрипт?

Необходимо зайти в package.json и добавить собственный скрипт в поле scripts. Затем можно запустить скрипт, перейдя в терминал и запустив npm run name-of-script.

Можно ли создать интерфейсное приложение с помощью Node.js?

Браузер не может запускать приложение, созданное на основе Node.js, но можно использовать что-то вроде webpack или Parcel, чтобы связать код и превратить его во что-то, что может запускать браузер. В настоящее время очень распространено использование среды Node.js для создания интерфейсных приложений. Хорошим примером использования Node.js во внешнем интерфейсе является платформа Electron, которая использует как Node.js, так и chromium для сборки «нативных» приложений, например, таких как VS Code.

Можете ли вы назвать три популярных фреймворка Node.js?

Express.js, вероятно, является наиболее популярным фреймворком на сегодняшний день. Koajs, вероятно, один из наиболее быстрых, а Sails.js отлично подходит для приложений двусторонней привязки в реальном времени, поскольку они используют socket.io.

Чем хорош Express.js?

Express.js упрощает установку маршрутов для веб-приложения, что делает его оптимальным выбором для создания REST API. Он довольно гибкий и простой в использовании, а его архитектура промежуточного программного обеспечения помогает сохранить простую и масштабируемую систему.

Что такое Crypto?

Crypto — это внутренняя библиотека Node.js, которая обеспечивает криптографические функции, например, для шифрования и дешифрования паролей.

Как мы обрабатываем локальную и глобальную область видимости в Node.js?

В отличие от клиентского JavaScript, в Node.js переменные, объявленные с помощью var с максимальной областью видимости, не являются глобальными; они являются локальными по отношению к модулю, в котором находятся. В браузере у нас есть доступ к объекту window, в котором находятся глобальные переменные, и в Node.js есть объект для этого, называемый global.

Есть ли у Node.js доступ к файловой системе?

Да. Мы можем использовать модуль fs для чтения, записи, копирования и удаления файлов и папок.

Что означает неблокирующий?

Это означает, что фрагмент кода, такой как, например, асинхронная функция, планируется запустить в следующей итерации цикла обработки событий, тем самым разблокируя остальную часть кода и, позволяя ему продолжать работать.

Что такое цикл событий и как он работает?

Цикл событий — это то, что придает Node.js асинхронность. Он планирует выполнение набора из пяти фаз в цикле. На первом этапе выполняются запланированные обратные вызовы setTimeout и setInterval. Второй запускает обратные вызовы ввода-вывода, запланированные для выполнения на текущей итерации. Третий опрашивает события, которые будут выполнены в следующей итерации. Четвертый запускает обратные вызовы setImmediate(). Наконец, пятый запускает все обратные вызовы «закрытия».

Выполняются ли асинхронные функции параллельно?

Нет. Асинхронная функция будет выполняться на следующей итерации цикла событий, в то время как параллельный процесс выполняется в своем собственном потоке.

Является ли Node.js многопоточным?

Процесс Node.js выполняется в одном потоке, но при необходимости можно использовать модуль child_process для параллельного запуска нескольких процессов или Workers для запуска нескольких потоков.

Что такое модуль child_process?

Модуль child_process позволяет порождать и разветвлять дочерние процессы. Это независимые процессы, которые выполняются в собственном процессоре и предоставляют нам доступ к системным командам.

В чем разница между web worker и рабочим потоком?

Web worker реализованы в браузере, а рабочие потоки реализованы в Node.js. Они решают одну и ту же проблему, а именно обеспечивают параллельную обработку. Фактически, API Worker Thread основан на реализации Web Workers.

Каковы преимущества использования рабочего потока перед дочерним процессом?

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

Что бы вы использовали для открытия двустороннего соединения с клиентом через HTTP в реальном времени?

Мы могли бы использовать WebSockets или длинный поллинг. Существуют библиотеки, такие как soket.io и SignalR, которые упрощают нашу задачу. Они даже предоставляют клиенты, которые возвращаются к длинному поллингу, если WebSockets недоступны в браузере.

Заключение

Надеюсь, вы нашли эти вопросы полезными. Вы во всем разобрались? Если нет, не волнуйтесь. Если вы не стремитесь к руководящей должности, от вас не ожидается, что вы будете знать все необходимые ответы. Просто убедитесь в том, что вы понимаете основы, и где бы вы ни обнаружили пробел в знаниях, постарайтесь расширить их.

Дайте знать, что вы думаете по данной теме статьи в комментариях. За комментарии, отклики, лайки, подписки, дизлайки огромное вам спасибо!

Дайте знать, что вы думаете по этой теме материала в комментариях. За комментарии, подписки, отклики, дизлайки, лайки низкий вам поклон!

Вадим Дворниковавтор-переводчик статьи «21 Node.js Interview Questions with Solutions»