面灵AI

快手中间件研发工程师一面

轮次
一面
时间
2026-08
来源
牛客网

《面试题目》

  1. 项目中如何做性能优化?
  2. 熔断如何实现,如何优雅退出和更新版本?
  3. 什么是 TCP 粘包和半包,如何解决?
  4. 为什么选择 etcd 做服务发现或负载均衡?
  5. 哈希环增减节点会造成大量缓存 miss 时如何优化?
  6. 多模型支持如何实现?
  7. MCP 的基本流程是什么?
  8. MySQL 有哪些日志,binlog 和 redo log 有什么区别?
  9. 重启恢复数据使用什么日志?
  10. Redis 持久化机制有哪些,RDB 如何实现?
  11. 混合持久化时 AOF 从哪条指令开始?
  12. 拥塞控制有什么作用,流程如何?
  13. Go 的 GMP 模型如何工作?
  14. Go 协程与 C++、Java 线程有什么区别?

《参考解析》

  1. 服务治理:熔断器要有明确的 closed/open/half-open 状态、失败窗口和探测请求;优雅退出先停止接收新请求,再等待在途请求或超时,最后释放资源。
  2. TCP 与一致性哈希:粘包半包需通过长度字段、分隔符或固定帧解码解决。节点变化时可用虚拟节点、平滑迁移和双层缓存降低 miss,但迁移过程必须有容量与回滚监控。
  3. 日志与持久化:redo log 用于崩溃恢复,binlog 记录逻辑变更并服务复制;Redis RDB 是快照,AOF 记录写命令,混合持久化会在快照后追加增量命令。
  4. Go 调度:G 是 goroutine,M 是线程,P 是调度上下文。协程切换主要在用户态完成,开销通常小于内核线程,但仍需承担调度、栈增长和同步成本。