node.js方向面试题
1.a.com请求b.com的数据能否实现?如果能实现,请写出工作原理及优缺点。
可以
a.com请求b.com的数据属于跨域问题,可以使用jsonp来解决。
利用js构造一个script标签,把json的url赋给script的scr属性,把这个script插入到dom里,让浏览器去获取
最终获得一个类似这样的数据:
callback({"name":"Jack","from":"加勒比海"})
callback是页面存在的回调方法,参数就是想得到的json
2.JavaScript中的typeof能够返回哪些值?
换了一方法问js中的数据类型
number string boolean object null undefined
3.说说事件流包含的几个阶段。
事件捕获阶段
处于目标阶段
事件冒泡阶段
4.什么是回调函数?
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。例如计时器
5.写出JSON对象与String对象互相转换的常用方法。
JSON.parse
JSON.stringify
JSON.eval
6.同步和异步的区别?
同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务指的是,不进入主线程、而进入"任务队列"(taskqueue)的任务,只有等主线程任务执行完毕,"任务队列"开始通知主线程,请求执行任务,该任务才会进入主线程执行。
7.谈谈你对构造函数的理解并写出简要示例代码。
构造函数就是初始化一个实例对象,对象的prototype属性是继承一个实例对象。
functionPerson( name){this.name =name;}var p1=new Person('John');
8.什么是闭包?写出简要示例代码。
写在函数内部的函数,能够获取函数内部的变量,用return返回
9.如何修改连接字符集?为什么要修改连接字符集?
set names utf8。避免出现乱码
10.谈谈你对node.js的认识。
Node.
js是一个用于开发各种Web服务器的开发工具。
Node.js的目标是提供一种简单的用于创建高性能服务器及可在该服务器中运行的各种应用程序的开发工具。
Node.js在不创建新进程的情况下解决了用户并发连接的问题。
11.node.js中,可能触发事件的对象继承了哪个类?该类下有哪些常用的方法?
EventEmitter类
13.node.js中,有哪些全局方法和变量?
方法:setInterval()/clearInteval()
setTimeout()/clearTimeout();
变量:__filename变量获取当前模块文件的带有完整绝对路径的文件名。包括文件名
__dirname变量获取当前模块文件所在目录的完整绝对路径的文件名。
14.node.js中,解析路径的模块有哪些?列举出各模块下的常用方法。
path模块
获取路径:path.dirname(filepath)
获取文件名:path.basename(filepath)
获取扩展名:path.extname(filepath)
15.如何创建HTTP服务器?写出简要示例代码。
var http=require('http');
//node.js中自带的对象,用require导入
http.createServer(function(request,response) { }).listen(8000);
16.什么是错误优先的回调函数?列举出哪些方法的回调函数属于这类回调函数。
错误优先的回调函数用于传递错误和数据。第一个参数始终应该是一个错误对象,用于检查程序是否发生了错误。其余的参数用于传递数据。
fs.readFile(filePath, function(err, data) {
if (err) {
//handle the error
}
// use the data object
});
17.Node.js中,什么是事件循环?
Node.js中,在一个时刻只能执行一个事件回调函数,但是在执行一个事件回调 函数的中途可以转而处理其他事件(包括触发新的事件、声明该事件事件 的 回 调函数等),然后返回继续执行原事件回调函数,这种处理机制称为事件环机制。
18.能够操作文件及目录的方法有哪些?
读取文件fs.readFile(filename[,options],callback);
写入文件:fs.writeFile(filename,data,[options],callback);
创建目录:fs.mkdir(path,[mode],callback);
查看目录:fs.stat(path,callback)
移动:fs.rename(oldPath,newPath,callback)
删除:fs.unlink(path,callback)
19.什么是路由?
所谓“路由”,就是指为不同的访问路径,指定不同的处理方法。