Node面试题

来源:互联网 发布:淘宝优惠券哪里领取 编辑:程序博客网 时间:2024/06/04 01:18

1、什么是error-first callback

  如果说GoogleV8引擎是Node.js的心脏,那么回调则是Node的脉络,回调能够激活跨模块和应用程序之间平衡的、非堵塞的异步控制流程,因此,在实际编写时,我们需要一个通用的可依赖的回调编程方式,error-first回调,也称为errorbackerrbacknode-style callback,它们都是用来解决这个问题。

error-first回调有两条定义规则:

 

1.回调函数的第一个参数保留给一个错误error对象,如果有错误发生,错误将通过第一个参数err返回。

2.回调函数的第二个参数为成功响应的数据保留,如果没有错误发生,err将被设置为null,成功的数据将从第二个参数返回。

  下面以fs.readFile()为例子说明:

fs.readFile('/foo.txt',  function(err,  data)  {

   // TODO: Error Handling Still Needed!

        console.log(data);

});

fs.readFile()从一个文件路径读取文件,一旦完成调用你的回调函数,如果一切正常 ,文件内容将被在data参数中返回,但是如果有错误发生,比如文件不存在或权限不允许,第一个err参数将会包含出错的信息。

2、如何避免回调函数嵌套?

 模块化:将回调写成单独的函数

 使用 Promises

 使用 yield  Generators / Promises

 http://www.jianshu.com/p/063f7e490e9a(强烈建议学习promise)

3、Node程序如何监听80端口?

   脑筋急转弯!你不应该直接使用Node监听80端口(在*nix系统中),这样做需要root权限,对于运行程序来说这不是一个好主意。

不过,你可以使Node监听1024以上的端口,然后在Node前面部署nginx反向代理。

http://blog.csdn.net/newborn2012/article/details/23860687

4、什么是事件循环(event loop)?

  至少从开发者的角度来看,Node.js 是单线程运行的。底层使用libuv使用多线程。

每一个I/O操作都需要一个回调,一旦操作完成会被事件循环执行

  http://blog.csdn.net/yanghua_kobe/article/details/12145537

5、使用什么工具检查代码风格?

   你很多工具可以选择:

    JSLint by Douglas Crockford

JSHint

ESLint

JSCS

开发团队项目时,强制指定代码风格和使用静态分析,捕捉常见的错误,这些工具都非常有用。

 

6、操作错误和程序错误的区别是什么?

   操作错误不是bug,是系统的问题,例如超时或者硬件故障。

另一方面,程序错误(programmer errors)是实际的错误。

7、为什么npmshrinkwarp非常有用?

  这个命令在部署Node.js应用时是非常有用的——它可以保证所部属的版本就是依赖的版本。

http://www.tuicool.com/articles/EBVNV37

8、什么是stub?说出他的用途?举个使用场景?

  Stubs是模拟模块或组件行为的程序。
  Stubs提供已知的答案来调用函数,另外你还可以断言哪个stubs被调用

9、什么是测试金字塔?在做HTTP API的时候要怎么实现?

  测试金字塔意思是在写测试时应该编写的底层但愿测试要多于高级的端到端测试。

对于HTTP APIs,应该归结为:

对你的模型多很多单元测试

在你的模型与其他交互时更少的集成测试

更少的验收测试,在HTTP

10、你最熟悉的node框架是什么?为什么?

http://ourjs.com/detail/15%E4%B8%AA%E6%9C%80%E5%A5%BD%E7%94%A8%E7%9A%84node-js%E5%90%8E%E7%AB%AF%E6%A1%86%E6%9E%B6

11、什么是错误优先的回调函数?

  错误优先的回调函数用于传递错误和数据。第一个参数始终应该是一个错误对象,用于检查程序是否发生了错误。其余的参数用于传递数据。例如:

fs.readFile(filePath, function(err, data) {  

    if (err) {

        //handle the error

    }

    // use the data object});

解析:这个题目的主要作用在于检查被面试者对于Node中异步操作的一些基本知识的掌握。

12、哪些工具可以用来保证一致的编程风格?

13、使用npm有哪些好处?以安装和管理项目的依赖 可以通过package.json文件来管理项目信息

 http://www.cnblogs.com/lansy/p/4329318.html

14、你最喜欢的HTTP框架,并说明原因?

http://blog.csdn.net/kymjs/article/details/45716797

LiteHttp 好多的优点

单线程 灵活的架构 轻量级 多文件上传 自动重定向 禁用一种或多种网络

 

原创粉丝点击