Node.js + Express 面试高频题汇总

覆盖核心概念、底层原理、实战场景,助你掌握90%高频考点


一、Node.js 基础
  1. 事件循环机制

    • 解释libuv的作用和事件循环的6个阶段(Timers, Pending, Poll, Check, Close)
    • 代码示例:
      setTimeout(() => console.log('Timeout'), 0);
      setImmediate(() => console.log('Immediate'));
      // 输出顺序不确定(受进程启动影响)
      

  2. 模块系统

    • require的缓存机制和循环引用解决方案
    • ES Modules vs CommonJS:动态加载 vs 静态分析
  3. 异步控制

    • Promise链式调用与async/await的异常处理
    • 错误优先回调(Error-first Callback)规范:
      fs.readFile('file.txt', (err, data) => {
        if (err) throw err;
        console.log(data);
      });
      


二、Express 核心
  1. 中间件(Middleware)原理

    • 洋葱模型执行顺序:
      app.use((req, res, next) => {
        console.log('Middleware 1');
        next(); // 控制权传递
      });
      

    • 错误处理中间件的4个参数:(err, req, res, next)
  2. 路由系统

    • 动态路由参数:app.get('/user/:id', ...)
    • 路由拆分(Router实例):
      const userRouter = express.Router();
      userRouter.get('/profile', ...);
      app.use('/user', userRouter);
      


三、性能与安全
  1. 高并发优化

    • 集群模式(Cluster模块)负载均衡
    • 连接池管理(如pg for PostgreSQL)
  2. 安全防护

    • 中间件配置:
      app.use(helmet()); // 防XSS/点击劫持
      app.use(cors());   // 跨域控制
      

    • 敏感信息处理:环境变量(dotenv)+ 加密存储(bcrypt

四、实战场景
  1. 文件上传

    • multer中间件处理多格式文件:
      const upload = multer({ dest: 'uploads/' });
      app.post('/upload', upload.single('file'), ...);
      

  2. SSR服务端渲染

    • Express整合模板引擎(如ejs):
      app.set('view engine', 'ejs');
      res.render('index', { data });
      

  3. RESTful API设计

    • 状态码规范:200 OK/201 Created/401 Unauthorized
    • 版本控制:/api/v1/users

五、调试与部署
  1. 日志管理

    • 结构化日志:winston + morgan(HTTP请求日志)
    • 关键字段:method, url, status, response-time
  2. 进程管理

    • PM2核心功能:
      pm2 start app.js --watch # 热重载
      pm2 logs # 实时日志
      


附:高频考点脑图

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%面试场景,建议结合具体项目经验深化理解!

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐