面试真题
题目 1:Node.js 事件循环
描述 Node.js 事件循环的执行顺序
答案:
Timers:setTimeout、setInterval Pending callbacks:I/O 回调 Idle, prepare:内部使用 Poll:获取新 I/O 事件 Check:setImmediate 回调 Close callbacks:关闭回调
微任务:Promise 回调、process.nextTick(最先执行)
题目 2:Node.js 异步编程
Node.js 中如何处理异步编程?
答案:
回调函数 Promise async/await EventEmitter 事件 Stream 流
题目 3:模块系统
Node.js 模块导出方式有哪些?
答案:
module.exports = {} exports.xxx = {} ES Module:export default / export
题目 4:Buffer 与 Stream
Buffer 和 Stream 有什么区别?
答案:
Buffer:一次性读取整个数据到内存 Stream:流式处理,边读边处理 Stream 适合大文件处理,内存占用低
题目 5:Express vs Koa
Express 和 Koa 有什么区别?
答案:
Express:功能完整,中间件形式 Koa:更轻量,async/await Koa 更优雅,Express 更生态成熟
题目 6:中间件机制
描述 Express 中间件机制
答案:
线性执行 每个中间件可调用 next() 错误处理中间件在最后 可同时处理请求和响应
题目 7:进程与线程
Node.js 是单线程的吗?
答案:
主线程单线程 I/O 操作异步非阻塞 Worker Threads 可创建多线程 Cluster 可多进程
题目 8:内存泄漏
Node.js 常见内存泄漏有哪些?
答案:
全局变量 闭包 事件监听未移除 缓存未清理 循环引用
题目 9:进程通信
Node.js 中进程间如何通信?
答案:
process.send()(父子进程) message queue Socket Redis/消息队列
题目 10:PM2 作用
PM2 的主要功能有哪些?
答案:
进程管理 自动重启 负载均衡 日志管理 集群模式
题目 11:NPM 原理
NPM 的工作原理
答案:
package.json 定义依赖 npm install 下载到 node_modules 扁平化安装 package-lock.json 锁定版本
题目 12:NestJS 特点
NestJS 有什么特点?
答案:
依赖注入 模块化 TypeScript 类似 Angular 的架构 支持微服务
题目 13:GraphQL vs REST
GraphQL 相比 REST 的优势
答案:
按需获取数据 减少请求次数 类型安全 强类型 schema
题目 14:性能优化
Node.js 性能优化手段
答案:
使用缓存 异步 I/O 减少循环 使用流处理 集群模式 代码优化
题目 15:异常处理
Node.js 中如何处理异常?
答案:
try/catch Promise.catch process.on('uncaughtException') 域名模块(已废弃)
题目 16:垃圾回收
Node.js 垃圾回收机制
答案:
V8 引擎 新生代/老生代 Scavenge/Mark-Sweep/Incremental Marking 优化:减少内存分配、及时释放
题目 17:模块加载机制
require 和 import 的区别是什么?
答案:
require 是 CommonJS,import 是 ES Module require 是运行时加载,import 是编译时解析 require 可以条件加载,import 必须在文件顶部 Node.js 默认支持 require,需要配置 type: "module" 才能使用 import
题目 18:处理 CPU 密集型任务
Node.js 如何处理 CPU 密集型任务?
答案:
使用 Worker Threads 使用 child_process 或 fork 使用集群模式(cluster) 将任务拆分,利用异步 I/O 间隙执行
题目 19:Stream 流处理
大文件复制使用什么方式最好?为什么?
答案:
使用 Stream 流处理 原因:流是分块处理,不需要将整个文件加载到内存 内存占用小,性能好
fs.createReadStream('source.txt')
.pipe(fs.createWriteStream('dest.txt'));
题目 20:JWT Token 安全
如何保证 JWT Token 的安全性?
答案:
使用强密钥存储 设置过期时间 使用 HTTPS 传输 存储在 HttpOnly Cookie 中 验证时指定算法,防止算法切换攻击
文章来源:
四季读书网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至23467321@qq.com举报,一经查实,本站将立刻删除;如已特别标注为本站原创文章的,转载时请以链接形式注明文章出处,谢谢!