第282期Node.js 面试题
Posted 前端早读课
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第282期Node.js 面试题相关的知识,希望对你有一定的参考价值。
来自早读君:
周天早读君推荐篇比较简短的文章,本周太多长文了。
这篇来自@dnodejs翻译的文章。
翻译系列第一篇我们选择来搞一下 Node.js 面试题:
第一个:What is an error-firstcallback?
通俗地讲,回调函数的第一个参数一般都是 error 对象,我们可以用它来检测当前操作是否异常,后面可选的参数用来传递数据,我们来看一段非常常见的 fs 模块的读文件操作:
第二个:How can you avoidcallback hells?
你可以有以下选项:
1. 模块化: 把回调函数拆分成独立的方法
2. 用 Promises
3. 用 ES6 开始引入的 Generators yield
这个问题算是常规问题,如果回答出后面,也算对 ES6、7这些较新的内容有所关注。
第三个:How can you listen onport 80 with Node?
这个其实也是一个线上部署的考验题目,解决方案也很简单,借助 nginx,考验面试者是否有真实的线上部署相关的经验。
第四个:What's the event loop?
大家都知道 Node.js 是单线程的,当然 Node.js 也可以用 libuv 来使用多线程。 每一次的 I/O 操作都需要一个回调函数,一旦操作完成,他们被扔到事件循环里面来执行。
第五个:What tools can be used toassure consistent style?
有很多可选的:
1. JSLint
2. JSHint
3. ESLint
4. JSCS
当团队化多人编码的时候,这些工具非常有用,他们会用一些静态分析来找出一些常见的错误,可以按照代码规范来加强多人的代码质量。这个对大型或者团队化编程的都是必须的。
第六个:What's the differencebetween operational and programmer errors?
运行错误严格意义不算 bug,而是系统的一些问题,比如我们用 request 来操作 HTTP 请求,但是请求超时了或者硬件坏了。 反而,编程中出现的错误才是真正的 bug. 分析错误的类型可以帮助你来安排bug的优先级
第七个:Why npm shrinkwrap isuseful?
其实这个问题非常棒,对于稳定的打包环境,我们很多时候需要固定一些依赖包的管理,而且在我们的微博,我们也讨论过这个问题,当时也有同学提到了 npm shrinkwrap,我们来看看 npm 官方的说明:
这个其实很能看出面试者是否有真实的 Node.js 的实战和线上操作经验。
第八个:What's your favouriteHTTP framework and why?
其实这个问题没有什么标准答案。它的目的就是了解一下面试者对于某一个 HTTP 框架的使用和理解的深度。估计90% 以上的答案是 Express.js,只是简单地给出这种答案没有太深的分析,比如3.X 和 4.X的区别,或者一些真实的实战案例说明的化,其实答的就是不好的。
更多内容请查看原文:
http://blog.risingstack.com/node-js-interview-questions/
Tip:关于Node.js的面试:
To 面试官:其实还是要看候选人的综合资历,和学习新技术的方式方法和热情程度,切勿因为某一个技术细节不很理想而全盘否决
To 候选人:切勿盲目自大地夸大自己的知识面和技术深度,因为资深一点的面试官很容易就会察觉你的深度和广度,任何面试宝典只是一面镜子,来发现你自身的不足,你应该积极地表现出你的优点和特点。
长按图片识别图中二维码
1)w3ctech
2)跨界码农 HiNotes
以上是关于第282期Node.js 面试题的主要内容,如果未能解决你的问题,请参考以下文章