面試完總結的28道Nodejs面試題,希望對下一位筆試同學有所幫助!

陝西優就業發表於2019-12-09

   陝西優就業小編今天給大家分享一篇面試完總結的28道Nodejs面試題,希望對下一位筆試同學有所幫助!

  第1題:什麼是nodejs?我們在哪裡使用它?

  Nodejs是伺服器端的一門技術。它是基於Google V8 JavaScript引擎而開發的。用來開發可擴充套件的服務端程式。

  第2題:為什麼要使用node js?

  nodejs會讓我們的程式設計工作變得簡單,它主要包含如下幾點幾個好處:

  ①執行快速。

  ②永遠不會阻滯。

  ③JavaScript是通用的程式語言。

  ④非同步處理機制。

  ⑤避免並行所帶來的問題。

  第3題:nodejs有哪些特點?

  是單執行緒的,但是有很高的可擴充套件性,使用JavaScript作為主流程式語言。使用的是非同步處理機制和事件驅動。處理高效。

  第4題:Set immediate和set time out 區別在哪裡?

  Set immediate就是馬上執行的意思。Set time out,時間引數傳為0,也想獲得同樣的功能。只不過前者要快一些。

  第5題:如何更新nodejs的版本?

  npm install npm -g

  第6題:為什麼nodejs是單執行緒的?

  Nodejs使用的是單執行緒沒錯,但是透過非同步處理的方式,可以處理大量的資料吞吐量,從而有更好的效能和擴可擴充套件性。

  第7題:什麼是回撥函式?

  回撥函式是指用一個函式作為引數傳入另一個函式,這個函式會被在某個時機呼叫。

  第8題:什麼叫做回撥地獄?

  回撥地獄是由巢狀的回撥函式導致的。這樣的機制會導致有些函式無法到達,並且很難維護。

  第9題:如何阻止回撥地獄?

  有三種方法,對每個錯誤都要處理到,保證程式碼的貫通,程式程式碼模組化。

  第10題:解釋一下repl的作用?

  Read evaluate print loop,用於測試,除錯和實驗用。

  第11題:API函式的型別有哪些?

  有兩種:一種是阻滯型函式。阻滯型函式會等待操作完成以後再進行下一步。

  另外一種是非阻滯型函式。這種函式使用回撥函式來處理當前函式獲取的結果。

  第12題:回撥函式的第1個引數是什麼?

  通常是錯誤物件。如果這個引數為空,表示沒有錯誤。

  第13題:NPM的作用是什麼?

  Node package manager,主要有兩個功能。

  它是一個網端模組的儲存介質。

  它的另一個作用是安裝程式依賴和版本管理。

  第14題:nodejs和ajax的區別是什麼?

  Nodejs和ajax也就是asynchronous JavaScript and xml,都是透過JavaScript來表現的,但是他們的目的截然不同。

  Ajax是設計用來動態的更新頁面的某個區域,從而不需要更新整個頁面。

  Nodejs是用來開發客戶伺服器型別應用的。

  第15題:解釋一下nodejs中chaining.

  Chaining是指從一個資料流到另一個資料流的連結,從而實現多個流操作。

  第16題:什麼是streams?解釋一下有哪些型別?

  流的概念是不間斷的,它可以不間斷的從某個地方讀取資料,或者向某個地方寫入資料。

  有4種型別的流資料。可讀,可寫。既可讀,又可寫,轉化。

  第17題:退出程式碼是什麼?有哪些退出程式碼?

  退出程式碼是指中斷nodejs執行時返回的程式碼。

  有這麼幾種unused, uncaught fatal exception, fatal error, non function internal exception handler, internal exception handler run time failure,internal JavaScript evaluation failure.

  第18題:什麼是globals?

  有三個global的關鍵字。

  Global代表的是最上層的名稱空間,用來管理所有其他的全域性物件。

  Process 是一個全域性物件,可以把非同步函式轉化成非同步回撥, 它可以在任何地方被訪問,它主要是用來返回系統的應用資訊和環境資訊.

  Buffer, 是用來處理二進位制資料的類.

  第19題:Angular js和node js的區別是什麼?

  Angular js是網路應用開發框架,而nodejs是一個實時系統。

  第20題:為什麼統一的風格兒非常重要,有什麼工具可以保證這一點?

  統一的風格可以讓所有的組成員按照一種規矩來寫程式碼。工具有Standard和eslint.

  第21題:用什麼方法來處理沒有被處理的異常?

  在應用和node js之間使用domain來處理這樣的異常。

  第22題:Node js是如何支援多處理器平臺的?

  Cluster模組是用來支援這方面的。它可以允許多個nodejs工作程式執行在相同的埠上。

  第23題:如何配置開發模式和生產模式的環境?

  首先有一個配置檔案,然後透過環境變數引數來獲取對應的配置內容。

  第24題:nodejs中跟時間相關的函式有哪些?

  ①Set time out,clear time out.

  ②Set interval,clear interval.

  ③Set immediate,clear immediate.

  ④Process.nextTick.

  第25題:解釋一下什麼是reactor pattern。

  Reactor pattern主要是非阻滯的i/o操作。提供一個回撥函式來關聯io操作。io請求完成以後會不會提交給demultiplexer, 這是一個通知介面用來處理併發性的非阻滯的io操作,這個功能是透過查詢一個event loop來實現的.

  第26題:lts版本是什麼意思?

  也就是long term support版本。至少會被支援18個月。使用的是偶數來標識。這種版本有穩定性和安全性的保證。

  第27題:你為什麼需要把express APP和server分開?

  分開以後方便維護以及測試,在測試某個模組的時候,尤其是APP模組的時候,你不需要去對網路方面的連線配置做工作。

  第28題:next tick和setImmediate的區別是什麼?

  Next tick會等待當前的event執行完成或者下一輪兒事件迴圈到達再執行。

  Set immediate,會在下一輪的事件迴圈中,執行回撥並且返回當前的迴圈來做讀寫操作。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69902581/viewspace-2667457/,如需轉載,請註明出處,否則將追究法律責任。

相關文章