20 питань, що задаються на інтерв'ю по Node.js

[Оригінальна стаття "Топ 20 вопросов, задаваемых на интервью по Node.js"] (https://codepaper.ru/article/33)

У цій статті ми поговоримо про 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 і emit. On використовується щоб зв'язати функцію, а 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.

2019-04-14 07:03:12