当前位置: 首页 > 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.xdnf.cn/news/1088893.html

相关文章:

  • Docker快速部署Hive服务
  • Flutter基础(前端教程②-卡片列表)
  • 原生屏幕旋转算法(AccelSensor)
  • Ansible 介绍及安装
  • 【牛客刷题】小红的v三元组
  • Spring Boot 企业项目技术选型
  • SystemVerilog 断言重复操作符和序列操作符
  • 力扣 239 题:滑动窗口最大值的两种高效解法
  • 【C++】AVL树底层思想 and 大厂面试
  • SPI / I2C / UART 哪个更适合初学者?
  • C++内存泄漏排查
  • Next.js 实战笔记 2.0:深入 App Router 高阶特性与布局解构
  • 嘉立创黄山派下载watch ui demo 教程(sf32)
  • 为什么elementui的<el-table-column label=“名称“ prop=“name“ label不用写成:label
  • 短视频矩阵系统的崛起:批量发布功能与多平台矩阵的未来
  • NFT,Non-Fungible Token,非同质化代币
  • 科技云报到:云智融合双buff,AI已开挂
  • Linux 第一个系统程序 - 进度条
  • 深入解读MCP:构建低延迟、高吞吐量通信中间件
  • 佰力博科技与您探讨电晕极化和油浴极化有什么区别?
  • Python语言+pytest框架+allure报告+log日志+yaml文件+mysql断言实现接口自动化框架
  • three案例 Three.js波纹效果演示
  • MySQL索引面试问题梳理
  • Java 关键字详解:掌握所有保留关键字的用途与最佳实践
  • 鸿蒙分布式开发实战指南:让设备协同像操作本地一样简单
  • 高效学习之一篇搞定分布式管理系统Git !
  • 知识库中如何确实嵌入文本块大小?语义完整性与检索颗粒度的平衡机制
  • 从零构建MCP服务器:FastMCP实战指南
  • 【1-快速上手】
  • 二分查找篇——搜索二维矩阵【LeetCode】遍历法