当前位置: 首页 > news >正文

20 道 Node.js 高频面试题

文章目录

      • 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)分析瓶颈。
  • 使用流式处理大文件。
http://www.dtcms.com/a/270445.html

相关文章:

  • Codeforces Round 868 (Div. 2) D. Unique Palindromes(1900,构造)
  • 深入企业内部的MCP知识(四):FastMCP装饰器与类方法:正确结合面向对象与MCP组件的实践指南
  • 4.权重衰减(weight decay)
  • MySQL-索引
  • SQL135 每个6/7级用户活跃情况
  • ${project.basedir}延申出来的Maven内置的一些常用属性
  • Python入门Day5
  • 嵌入式面试八股文100题(二)
  • 分库分表之实战-sharding-JDBC水平分库+水平分表配置实战
  • 【深度学习入门 鱼书学习笔记(1)感知机】
  • 7月8日学习笔记——统计决策方法
  • 基于springboot的物流配货系统
  • Nuxt.js 静态生成中的跨域问题解决方案
  • C++学习笔记之数组、指针和字符串
  • 【PyTorch】PyTorch中torch.nn模块的激活函数
  • 项目Win系统下可正常获取Header字段,但是到了linux、docker部署后无法获取
  • python基础day08
  • linux wsl2 docker 镜像复用快速方法
  • 【读代码】GLM-4.1V-Thinking:开源多模态推理模型的创新实践
  • 基于模板设计模式开发优惠券推送功能以及对过期优惠卷进行定时清理
  • C++ 遍历可变参数的几种方法
  • 数据库表设计:图片存储与自定义数据类型的实战指南
  • C语言宏替换比较练习
  • 暑假算法日记第四天
  • 5.6.2、ZeroMQ源码分析
  • 利用AI Agent实现精准的数据分析
  • ARM环境openEuler2203sp4上部署19c单机问题-持续更新
  • VM上创建虚拟机以及安装RHEL9操作系统并ssh远程连接
  • 大模型系列——RAG-Anything:开启多模态 RAG 的新纪元,让文档“活”起来!
  • Proface触摸屏编程软件(GP-Pro EX)介绍及下载