node面試(三)

1、什麼是node.js?

(1)node.js是運行在服務端的javascript.

(2)node.js是一個基於chorme javascript運行時建立的一個平臺。

(3)javascript是一個以事件驅動i/o的服務端javascript環境,基於goodle的V8引擎,V8引擎執行javascript的速非常快,性能非常好。

2、node.js是由哪幾部分組成的?

其實我們在使用node.js的時候,不僅是在創建一個應用,其實是在搭建一個類似於apache的http服務器。

(1)引入require模塊。我們可以使用require來引用node.js模塊。

(2)創建服務器:服務器可以監聽客服端的請求,類似於apache服務器。

(3)接受請求與響應請求:服務器很容易創建,客戶端可以使用瀏覽器或終端發送http請求,服務端接受請求後返回響應數據。

下面這個例子是一個創建一個簡單的node.js應用的例子:

var http=require('http');
http.createServer(function(request,reponse){
    reponse.write(200,"Content-Type":"text/plain"});
    reponse.write("hello world");
}).listen(8888);
console.log("http running at http://127.0.0.1:8888/");

3、 node是一種單進程單線程應用,爲什麼可以做高併發?

因爲V8引擎提供的異步回調的接口,通過這些接口可以處理大量的併發,所以性能非常高。

4、node的API都有什麼特點?

node所有的API都支持回調函數。

5、node的時間幾隻是什麼樣子的?

node的所有時間幾隻都是用設計模式中關擦着模式出現。

6、簡單講一下node事件循環的原理。

當有異步事件觸發時,node單線程類似於進入一個whoile(true)的事件循環,直到沒有事件觀察者時退出。(每個異步事件都會生成一個事件觀察着,如果有事件發生事件觀察者就調用該事件的回調函數)

7、詳細談談事件驅動i/o模型。

事件驅動i/o也叫非阻塞式i/o,和事件循環差不多,會生成一個事件循環來監聽事件,當檢測到有事件觸發時就執行該事件的回調函數。區別在於在事件驅動模型中,事件相當於主題,該事件的事件觀察者本身就是該事件的回調函數。比如,當web server接收到請求時,就把它關閉進行處理,然後去服務下一個web請求。當這個·請求被處理完成時,就會被放回到處理隊列,當到達隊列開頭,這個結果就會返回給用戶。

8.node阻塞式i/o和非阻塞式i/o有何區別,舉個例子。

比如有一個input.txt文件裏面有一句hello ,world

阻塞式代碼:

var fs=require('fs');
var data=fs.readFileSync('input.txt');
console.log(data.toString());
console.log('程序結束');

這段代碼的輸出 永遠是這樣的:

hello,world
程序結束

非阻塞式i/o代碼:

var fs=require('fs');
fs.readFile("input.txt",fucnrion(data,err){
    console.log(data.toString());
})
console.log("程序結束");

輸出卻是這樣的:

程序結束
hello,world

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章