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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值