Nodejs面試28題
大家好待逞,這一期呢轩缤,我們來看一下nodjs的面試題。
第1題, 什么是nodejs绳锅?我們在哪里使用它西饵?
Nodejs是服務(wù)器端的一門技術(shù)。它是基于Google V8 JavaScript引擎而開發(fā)的鳞芙。用來開發(fā)可擴展的服務(wù)端程序眷柔。
第2題,為什么要使用node js原朝?
nodejs會讓我們的編程工作變得簡單驯嘱,它主要包含如下幾點幾個好處:
執(zhí)行快速。
永遠不會阻滯喳坠。
JavaScript是通用的編程語言鞠评。
異步處理機制。
避免并行所帶來的問題壕鹉。
第3題剃幌,nodejs有哪些特點?
是單線程的晾浴,但是有很高的可擴展性负乡,使用JavaScript作為主流編程語言。使用的是異步處理機制和事件驅(qū)動脊凰。處理高效抖棘。
第4題, Set immediate和set time out 區(qū)別在哪里??
Set immediate就是馬上執(zhí)行的意思狸涌。Set time out, 時間參數(shù)傳為0切省,也想獲得同樣的功能。只不過前者要快一些帕胆。
第5題朝捆,如何更新nodejs的版本?
npm install npm -g
第6題,為什么nodejs是單線程的懒豹?
Nodejs使用的是單線程沒錯右蹦,但是通過異步處理的方式,可以處理大量的數(shù)據(jù)吞吐量歼捐,從而有更好的性能和擴可擴展性。
第7題晨汹,什么是回調(diào)函數(shù)豹储?
回調(diào)函數(shù)是指用一個函數(shù)作為參數(shù)傳入另一個函數(shù),這個函數(shù)會被在某個時機調(diào)用淘这。
第8題, 什么叫做回調(diào)地獄?
回調(diào)地獄是由嵌套的回調(diào)函數(shù)導致的剥扣。這樣的機制會導致有些函數(shù)無法到達巩剖,并且很難維護。
第9題钠怯,如何阻止回調(diào)地獄?
有三種方法佳魔, 對每個錯誤都要處理到, 保證代碼的貫通晦炊, 程序代碼模塊化鞠鲜。
第10題,解釋一下repl的作用?
Read evaluate print loop断国, 用于測試贤姆,調(diào)試和實驗用。
第11題稳衬,API函數(shù)的類型有哪些?
有兩種霞捡,
一種是阻滯型函數(shù)。阻滯型函數(shù)會等待操作完成以后再進行下一步薄疚。
另外一種是非阻滯型函數(shù)碧信。這種函數(shù)使用回調(diào)函數(shù)來處理當前函數(shù)獲取的結(jié)果。
第12題街夭,回調(diào)函數(shù)的第1個參數(shù)是什么?
通常是錯誤對象砰碴。如果這個參數(shù)為空,表示沒有錯誤莱坎。
第13題衣式,NPM的作用是什么?
Node package manager, 主要有兩個功能。
它是一個網(wǎng)端模塊的存儲介質(zhì)檐什。
它的另一個作用是安裝程序依賴和版本管理碴卧。
第14題,nodejs和ajax的區(qū)別是什么乃正?
Nodejs和ajax也就是asynchronous JavaScript and xml住册,都是通過JavaScript來表現(xiàn)的,但是他們的目的截然不同瓮具。
Ajax是設(shè)計用來動態(tài)的更新頁面的某個區(qū)域荧飞,從而不需要更新整個頁面。
Nodejs是用來開發(fā)客戶服務(wù)器類型應(yīng)用的名党。
第15題叹阔,解釋一下nodejs中chaining.
Chaining是指從一個數(shù)據(jù)流到另一個數(shù)據(jù)流的鏈接,從而實現(xiàn)多個流操作传睹。
第16題耳幢,什么是streams?解釋一下有哪些類型?
流的概念是不間斷的,它可以不間斷的從某個地方讀取數(shù)據(jù)睛藻,或者向某個地方寫入數(shù)據(jù)启上。
有4種類型的流數(shù)據(jù)〉暧。可讀冈在,可寫。既可讀按摘,又可寫包券,轉(zhuǎn)化。
第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的關(guān)鍵字照激。
Global代表的是最上層的命名空間,用來管理所有其他的全局對象发魄。
Process 是一個全局對象,可以把異步函數(shù)轉(zhuǎn)化成異步回調(diào), 它可以在任何地方被訪問俩垃,它主要是用來返回系統(tǒng)的應(yīng)用信息和環(huán)境信息.
Buffer, 是用來處理二進制數(shù)據(jù)的類.
第19題励幼, Angular js和node js的區(qū)別是什么?
Angular js是網(wǎng)絡(luò)應(yīng)用開發(fā)框架,而nodejs是一個實時系統(tǒng)口柳。
第20題, 為什么統(tǒng)一的風格兒非常重要苹粟,有什么工具可以保證這一點?
統(tǒng)一的風格可以讓所有的組成員按照一種規(guī)矩來寫代碼。工具有Standard和eslint.
第21題, 用什么方法來處理沒有被處理的異常?
在應(yīng)用和node js之間使用domain來處理這樣的異常跃闹。
第22題, Node js是如何支持多處理器平臺的?
Cluster模塊是用來支持這方面的嵌削。它可以允許多個nodejs工作進程運行在相同的端口上。
第23題, 如何配置開發(fā)模式和生產(chǎn)模式的環(huán)境?
首先有一個配置文件望艺,然后通過環(huán)境變量參數(shù)來獲取對應(yīng)的配置內(nèi)容苛秕。
第24題, nodejs中跟時間相關(guān)的函數(shù)有哪些?
Set time out, clear time out.
Set interval, clear interval.
Set immediate, clear immediate.
Process.nextTick.
第25題, 解釋一下什么是reactor pattern。
Reactor pattern主要是非阻滯的i/o操作找默。提供一個回調(diào)函數(shù)來關(guān)聯(lián)io操作艇劫。io請求完成以后會不會提交給demultiplexer, 這是一個通知接口用來處理并發(fā)性的非阻滯的io操作,這個功能是通過查詢一個event loop來實現(xiàn)的.
第26題惩激,lts版本是什么意思店煞?
也就是long term support版本。至少會被支持18個月风钻。使用的是偶數(shù)來標識顷蟀。這種版本有穩(wěn)定性和安全性的保證。
第27題骡技,你為什么需要把express APP和server分開衩椒?
分開以后方便維護以及測試,在測試某個模塊的時候,尤其是APP模塊的時候毛萌,你不需要去對網(wǎng)絡(luò)方面的連接配置做工作。
第28題喝滞,next tick和setImmediate的區(qū)別是什么阁将?
Next tick會等待當前的event執(zhí)行完成或者下一輪兒事件循環(huán)到達再執(zhí)行。
Set immediate, 會在下一輪的事件循環(huán)中右遭,執(zhí)行回調(diào)并且返回當前的循環(huán)來做讀寫操作.
碼字不易做盅,點個贊吧!
?