文章目录
- 1. **Node.js 是什么?有哪些特点?**
- 2. **Node.js 中的事件循环是什么?如何工作?**
- 3. **Node.js 的模块系统有哪几种?区别是什么?**
- 4. **什么是 Buffer?为什么需要它?**
- 5. **Node.js 如何实现异步编程?**
- 6. **Node.js 中的 Stream 是什么?有哪些类型?**
- 7. **Node.js 中的 Cluster 模块有什么作用?**
- 8. **Node.js 中的 child_process 模块有什么用途?**
- 9. **Node.js 中如何处理错误?**
- 10. **Node.js 中的 EventEmitter 是什么?**
- 11. **Node.js 中的 process 对象是什么?常用属性有哪些?**
- 12. **Node.js 中如何创建一个 HTTP 服务器?**
- 13. **Node.js 中 path 模块的作用是什么?常用方法有哪些?**
- 14. **Node.js 中 fs 模块可以做什么?**
- 15. **Node.js 中的 global 对象与浏览器中的 window 有何不同?**
- 16. **Node.js 中的 __dirname 和 __filename 分别代表什么?**
- 17. **Node.js 中的 package.json 文件有什么作用?**
- 18. **Node.js 中的 Express 是什么?简述其特点。**
- 19. **Node.js 中的 Express 中间件是什么?**
- 20. **Node.js 中如何进行性能优化?**
1. Node.js 是什么?有哪些特点?
- 基于 Chrome V8 引擎的 JavaScript 运行时。
- 特点:事件驱动、非阻塞 I/O、单线程、跨平台。
2. Node.js 中的事件循环是什么?如何工作?
- 事件循环是处理异步操作的核心机制。
- 主要阶段包括:定时器(Timers)、Pending callbacks、Idle/Prepare、Poll、Check、Close callbacks。
3. Node.js 的模块系统有哪几种?区别是什么?
- CommonJS(
require
):同步加载,用于 Node.js。 - ES Module(
import
):异步加载,ES6 标准,支持 tree-shaking。
4. 什么是 Buffer?为什么需要它?
- Buffer 是用于处理二进制数据的类,Node.js 中用于读写文件、网络传输等原始数据。
5. Node.js 如何实现异步编程?
- 使用回调函数、Promise、async/await。
- 利用事件循环和非阻塞 I/O 操作提高性能。
6. Node.js 中的 Stream 是什么?有哪些类型?
- Stream 是处理流式数据的抽象接口。
- 类型:可读流(Readable)、可写流(Writable)、双工流(Duplex)、转换流(Transform)。
7. Node.js 中的 Cluster 模块有什么作用?
- 利用多核 CPU 创建多个子进程,提升并发能力。
- 通过
fork()
启动多个 Node.js 实例,共享同一个端口。
8. Node.js 中的 child_process 模块有什么用途?
- 用于创建子进程执行命令或脚本。
- 方法:
exec()
, spawn()
, execFile()
等。
9. Node.js 中如何处理错误?
- 回调中第一个参数为 error。
- Promise 使用
.catch()
。 - 异步错误使用
try/catch
(配合 async/await)。
10. Node.js 中的 EventEmitter 是什么?
- Node.js 内置模块,用于实现事件驱动编程。
- 通过
on()
监听事件,emit()
触发事件。
11. Node.js 中的 process 对象是什么?常用属性有哪些?
- 表示当前 Node.js 进程。
- 常用属性:
process.pid
, process.argv
, process.env
, process.cwd()
。
12. Node.js 中如何创建一个 HTTP 服务器?
const http = require('http');
http.createServer((req, res) => {res.end('Hello World');
}).listen(3000);
13. Node.js 中 path 模块的作用是什么?常用方法有哪些?
- 处理路径相关操作。
- 常用方法:
path.join()
, path.resolve()
, path.basename()
, path.extname()
。
14. Node.js 中 fs 模块可以做什么?
- 文件系统操作,如读写文件、删除、重命名等。
- 支持同步和异步方式。
15. Node.js 中的 global 对象与浏览器中的 window 有何不同?
global
是 Node.js 中的全局对象。- 浏览器中全局对象是
window
。
16. Node.js 中的 __dirname 和 __filename 分别代表什么?
__dirname
:当前模块所在的目录路径。__filename
:当前模块的完整文件路径。
17. Node.js 中的 package.json 文件有什么作用?
- 描述项目元信息,如名称、版本、依赖、脚本等。
- 用于 npm 或 yarn 安装依赖和运行脚本。
18. Node.js 中的 Express 是什么?简述其特点。
- 轻量级 Web 开发框架。
- 特点:中间件机制、路由管理、灵活插件生态。
19. Node.js 中的 Express 中间件是什么?
- 中间件是一个函数,接收请求对象、响应对象和下一个中间件函数。
- 可用于日志、身份验证、错误处理等。
20. Node.js 中如何进行性能优化?
- 使用 Cluster 模块利用多核 CPU。
- 减少阻塞操作,合理使用缓存。
- 使用 Profiling 工具(如 node --inspect)分析瓶颈。
- 使用流式处理大文件。