整理一小部分nodejs面试题

  • 1. nodejs是什么?
  • 2. nodejs和前端js的区别?
  • 3. nodejs如何进行调试?
  • 4. 当前文件和目录的路径如何获取?
  • 5. commonjs和es6 module的区别?
  • 6. path.resolve和path.join的区别?
  • 7. 事件循环(event loop)在nodejs和游览器中的区别?
  • 8. session如何实现登录?
  • 9. 请描述koa2和express的中间件机制
  • 10. async和await执行顺序的考察
  • 11. 描述koa2洋葱圈模型
  • 12. 如何逐行读取一个1G大小的日志文件?
  • 13. nodejs线上环境为何要开启多进程?



1. nodejs是什么?

  1. Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时
  2. nodejs出现之前,js只能在游览器运行
  3. nodejs出现之后,js可以在任何安装nodejs的环境运行

2. nodejs和前端js的区别?

es6和nodejs_nodejs

  1. 语法不同
    nodejs和js有共同的es语法,但是API不一样
  2. 应用不同
    2.1 前端js用于网页,在游览器运行
    2.2 nodejs可用于服务端,如开发web server
    2.3 nodejs 也可以用于本机,如webpack等本机工具

3. nodejs如何进行调试?

es6和nodejs_es6和nodejs_02

  1. 启动nodejs 服务时,使用inspect
  2. 代码中使用debugger断点
  3. 使用Chrome调试,在游览器输入: chrome://inspect

4. 当前文件和目录的路径如何获取?

  1. __filename 获取当前文件
  2. __dirname 获取当前路径

5. commonjs和es6 module的区别?

  1. 语法不同
  2. commonjs是动态引入,执行时引入
  3. ES6 module 是静态引入,编译时引入,一般放在顶部

6. path.resolve和path.join的区别?

  1. 两者都是拼接文件路径
  2. path.resolve 获取绝对路径
  3. path.join 获取在相对路径

7. 事件循环(event loop)在nodejs和游览器中的区别?

  1. 游览器事件循环引用阮一峰老师的博客:JavaScript 运行机制详解:再谈Event Loop
  2. nodejs 参考其他博主的博客,如: NodeJs 的 Event loop 事件循环机制详解

8. session如何实现登录?

es6和nodejs_js_03


es6和nodejs_nodejs_04


es6和nodejs_js_05

9. 请描述koa2和express的中间件机制

参考博客: Koa2 和 Express 中间件对比

10. async和await执行顺序的考察

参考博客:async 函数的含义和用法

11. 描述koa2洋葱圈模型

参考博客:Koa2 中间件简易洋葱圈模型实现

12. 如何逐行读取一个1G大小的日志文件?

es6和nodejs_js_06


es6和nodejs_js_07

13. nodejs线上环境为何要开启多进程?

  1. 高效使用多核CPU
  2. 充分利用服务器内存
  3. 最终: “压榨”服务器,不浪费资源
  4. 可以使用 PM2 进行管理