《Node.js + Express 面试高频题汇总:从基础到实战,覆盖 90% 考点》
·
Node.js + Express 面试高频题汇总
覆盖核心概念、底层原理、实战场景,助你掌握90%高频考点
一、Node.js 基础
-
事件循环机制
- 解释
libuv的作用和事件循环的6个阶段(Timers, Pending, Poll, Check, Close) - 代码示例:
setTimeout(() => console.log('Timeout'), 0); setImmediate(() => console.log('Immediate')); // 输出顺序不确定(受进程启动影响)
- 解释
-
模块系统
require的缓存机制和循环引用解决方案- ES Modules vs CommonJS:动态加载 vs 静态分析
-
异步控制
Promise链式调用与async/await的异常处理- 错误优先回调(Error-first Callback)规范:
fs.readFile('file.txt', (err, data) => { if (err) throw err; console.log(data); });
二、Express 核心
-
中间件(Middleware)原理
- 洋葱模型执行顺序:
app.use((req, res, next) => { console.log('Middleware 1'); next(); // 控制权传递 }); - 错误处理中间件的4个参数:
(err, req, res, next)
- 洋葱模型执行顺序:
-
路由系统
- 动态路由参数:
app.get('/user/:id', ...) - 路由拆分(Router实例):
const userRouter = express.Router(); userRouter.get('/profile', ...); app.use('/user', userRouter);
- 动态路由参数:
三、性能与安全
-
高并发优化
- 集群模式(Cluster模块)负载均衡
- 连接池管理(如
pgfor PostgreSQL)
-
安全防护
- 中间件配置:
app.use(helmet()); // 防XSS/点击劫持 app.use(cors()); // 跨域控制 - 敏感信息处理:环境变量(
dotenv)+ 加密存储(bcrypt)
- 中间件配置:
四、实战场景
-
文件上传
multer中间件处理多格式文件:const upload = multer({ dest: 'uploads/' }); app.post('/upload', upload.single('file'), ...);
-
SSR服务端渲染
- Express整合模板引擎(如
ejs):app.set('view engine', 'ejs'); res.render('index', { data });
- Express整合模板引擎(如
-
RESTful API设计
- 状态码规范:
200 OK/201 Created/401 Unauthorized - 版本控制:
/api/v1/users
- 状态码规范:
五、调试与部署
-
日志管理
- 结构化日志:
winston+morgan(HTTP请求日志) - 关键字段:
method, url, status, response-time
- 结构化日志:
-
进程管理
- PM2核心功能:
pm2 start app.js --watch # 热重载 pm2 logs # 实时日志
- PM2核心功能:
附:高频考点脑图
graph LR A[Node.js] --> B[事件循环] A --> C[Streams] A --> D[Buffer] E[Express] --> F[中间件] E --> G[路由] E --> H[错误处理] I[实战] --> J[数据库集成] I --> K[身份认证] I --> L[部署优化]
掌握以上内容可覆盖90%面试场景,建议结合具体项目经验深化理解!
更多推荐

所有评论(0)