03.04.2017 2550 1

Топ 20 вопросов, задаваемых на интервью по Node.js

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

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

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

2. Вы можете объяснить, как работает Node.js?

Он использует JavaScript-движок Google V8 для выполнения кода. Он содержит встроенную библиотеку ввода-вывода для файлов, сокетов и HTTP-соединений. Node.js инкапсулирует libuv, чтобы управлять асинхронными событиями.

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

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

4. Можете ли вы объяснить асинхронный подход в Node.js?

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

5. Вы можете объяснить, что такое Globals?

Глобал, процесс и буфер в совокупности называются Globals.

Глобал: Это объект в глобальном неймспейсе
Процесс: Это тоже глобальный объект, но он предоставляет существенную функциональность для преобразования синхронной функции в асинхронный коллбэк.
Буфер: Сырые данные хранятся в экземплярах класса Buffer.

6. Какое применение у нижнего подчеркивания в Node.js?

Чтобы получить доступ к последнему выражению, мы должны использовать символ нижнего подчеркивания (_).

7. Вы можете создать HTTP-сервер на Node.js? Приведите пример кода.

Да, мы можем создать HTTP-сервер на Node.js. Для этого мы можем использовать команду http-server.

var http = require('http');
var requestListener = function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello You\n');
}

var server = http.createServer(requestListener);
server.listen(8080); // Порт, с которым мы хотим работать.

8. Как загрузить HTML в Node.js?

Чтобы загрузить HTML, мы должны изменить HTTP-заголовок Content-type с text/plain на text/html.

9. Можете ли вы объяснить разницу между Node.js и AJAX?

Разница между Node.js и Ajax заключается в том, что Ajax — это технология клиентской стороны, в то время как Node.js — серверной. Ajax используется для изменения содержимого страницы без ее обновления, а Node.js используется для разработки серверного ПО. Node.js выполняется сервером, в то время как Ajax выполняется браузером.

10. Можете ли вы объяснить разницу между readFile и createReadStream в Node.js?

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

11. Что такое коллбэк в контексте Node.js?

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

12. Что такое глубоко вложенные коллбэки и как их предотвратить?

Глубоко вложенные коллбэки означают сильную вложенность, которая делает код трудным для чтения и поддержки. Чтобы предотвратить это, нужно использовать модуляризацию, которая разбивает коллбэки на независимые функции. Другой способ предотвращения этой проблемы — использование промисов, которые позволяют передавать ошибки и создавать цепочки вызовов.

13. Что такое Event Loop и Event Emitter?

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

EventEmitter вызывает событие когда завершается какая-то задача, происходит ошибка, регистрируется или удаляется какой-нибудь слушатель. Он предоставляет свойства, такие как on и emitOn используется чтобы связать функцию, а emit — для вызова события.

14. Сколько типов стримов представлено в Node.js?

Есть 4 типа стримов, представленных в Node.js, а именно: Readable, Writable, Duplex и Transform. Readable используется для операции чтения, Writable для операции записи, Duplex и для чтения и для записи, а Transform — это разновидность Duplex, где вывод вычисляется на основе ввода.

15. Почему следует использовать буферы вместо двоичных строк, чтобы обрабатывать двоичные данные?

Чистый JavaScript не имеет достаточного функционала для работы с двоичными данными. Так как серверы на Node.js должны работать с TCP-соединениями для чтения и записи данных, с двоичными строками будет проблематично работать, так как они медленные и имееют тенденцию ломаться. Именно поэтому всегда целесообразнее использовать буферы вместо двочнных строк.

16. Как изящно остановить Node.js сервер?

Мы можем изящно остановить сервер используя общий сигнал, называемый SIGTERM или SIGINT, который используется для прекращения работы программ. Нам нужно вызвать SIGTERM или SIGINT, который остановит программу и очистит память, используемую ресурсами программы.

17. Что такое Error First?

“Error-first” — это стандартный протокол для коллбэков Node.js, который содержит простое правило, что первый аргумент коллбэка должен быть объектом ошибки. Если аргумент ошибки не равен null, значит операции не были успешны, произошла ошибка. А если этот аргумент равен null, значит все прошло успешно.

18. В чем заключается разница между process.nextTick() и setImmediate()?

Разница между process.nextTick() и setImmediate() заключается в том, что process.nextTick() откладывает выполнение действия до тех пор, пока не произойдет следующий проход по циклу событий или он просто вызывает коллбэк-функцию, как только будет завершено текущее выполненение цикла событий. В то время как setImmediate()запускает коллбэк в следующем цикле событий и он возвращает в цикл событий для выполнения любых операций ввода-вывода.

19. Как вы можете следить за изменениями файла в Node.js?

Мы можем воспользоваться функцией watch() для файловой системы, которая следит за изменениями в файле.

20. Как разрулить “Process out of Memory Exception” в Node.js?

Чтобы решить эту проблему, нам нужно увеличить max-old-space-size. По умолчанию он равен 512 МБ. Чтобы увеличить эту память можно воспользоваться командой node --max-old-space-size=1024 file.js.


Если вы нашли эту статью полезной, пожалуйста, оставляйте комментарии и делитесь с друзьями.

Статью перевел aziev. Оригинал на Www.codingdefined.com доступен по ссылке.