FuXun And Zhuoshe Interview Notes

3/3/2026 interview

# FuXun And Zhuoshe

# Sticky

什么是 nodejs?(事件驱动、非阻塞 I/O)

nodejs 事件循环机制(timers >> I/O callback >> idle,prepare >> poll >> check >> close callback)

浏览器和 Node 中 事件循环区别 (浏览器:每次循环处理一个宏任务后清空微任务队列)

# Nodejs 后端

# Events

Node 中的 EventEmitter 是什么(观察者模式)

  • prependListener 头部添加(unshift),on、once、addListener 尾部添加(push)

实现一个 EventEmitter(创建一个类,并维护一个obj[arr])


# Stream

说说对 Node 中 Stream 的理解?(source、dest、pipe、单位是Buffer)

Node Stream 是什么?有哪些种类的 Stream?(读、写、双工 Duplex、转换 Transform = zlib)

# pipe 相比与 data 监听的好处

  • 自动背压处理:当读取流比写入流还快时,自动暂停读取,避免内存爆炸

  • 代码简洁:不用手动写 on('data')on('drain')

  • 错误处理:默认 pipe 返回目标流,可以链式调用

什么是背压?highWaterMark有什么作用?


# Net

net 模块的作用是什么?(TCP/IP,Socket)


# Buffer

什么是Buffer?为什么需要它?(继承自Uint8Array,用于二进制数据处理,创建后大小不可变)


# Nest.js 框架

Nestjs 数据初始化的时机 (OnApplicationBootstrap)

req/res 与 ExecutionContext 的核心区别(上下文可以获取Controller、路由、装饰器的元数据)

Nest 守卫、拦截器、中间件 的区别

  • 顺序:中间件 > 守卫 > 拦截器

  • 中间件无法获取上下文,可以修改,用于数据预处理,通过 AppModule.config 注册

  • 守卫器可以获取上下文,不可以修改,用于角色、权限的验证,@UseGuards 使用

  • 拦截器可以获取上下文,可以修改,用于统一格式响应、异常映射、缓存处理,@UseInterceptors


# 数据库相关 Mongodb / Redis / Mysql / PostGreSql

# MongoDB

什么是 MongoDB?适合什么场景?(文档型数据库,适合非结构化数据、日志、内容管理)

MongoDB 索引类型有哪些?(单字段、复合、多键、文本、地理空间、哈希索引)

MongoDB 的聚合管道是什么?($match、$group、$project 等阶段处理数据)


# Redis

Redis 为什么快?(纯内存存储、单线程模型、IO 多路复用)

Redis 数据类型有哪些?(String、Hash、List、Set、ZSet、Stream、Bitmap 等)

什么是缓存穿透/击穿/雪崩?如何解决?

  • 缓存穿透:查询不存在的数据 >> 布隆过滤器、缓存空值
  • 缓存击穿:热点 key 过期 >> 互斥锁、热点数据永不过期
  • 缓存雪崩:大量 key 同时过期 >> 过期时间加随机值、熔断降级

Redis 持久化机制有哪些?(RDB 快照、AOF 日志、混合持久化)

Redis 的过期策略和内存淘汰算法?(定时删除、惰性删除 + LFU/LRU)


# MySQL

InnoDB 和 MyISAM 的区别?

  • InnoDB:支持事务、行锁、外键、崩溃恢复
  • MyISAM:表锁、不支持事务、读性能好

什么是索引?索引类型有哪些?(主键、唯一、普通、联合、全文索引)

B+ 树索引的原理?为什么 MySQL 选 B+ 树?(层高低、范围查询快、磁盘 IO 少)

什么是事务?ACID 特性是什么?

  • 原子性、一致性、隔离性、持久性

事务隔离级别有哪些?(读未提交、读已提交、可重复读、串行化)

什么是 MVCC?(多版本并发控制,通过 undo log 实现读不加锁)

MySQL 慢查询如何优化?(explain 分析、索引优化、避免 select *、分页优化)


# PostgreSQL

PostgreSQL 相比 MySQL 的优势?(更好的并发控制、支持 JSON和数组)

什么是 MVCC?PostgreSQL 如何实现?(通过元组中的 xmin/xmax 实现)

PostgreSQL 索引类型有哪些?(B-tree、Hash、GiST、GIN、SP-GiST)


# Graphql 基础

GraphQL 核心概念(gql、Query Resolver、Mutation Resolver)

GraphQL 和 REST 有什么区别(允许前端自由选择字段,避免over-fetch)

# 其他

什么是微服务?使用微服务的优势/缺点有哪些?

k8s 基本概念、命令 (opens new window)