好未来后端开发二面面经(已OC)

好未来 · golang后端开发 · 二面 · 2026-03

面试题目

  1. 自我介绍(项目、技术栈、实习经历)
  2. 手撕算法:三数之和最接近目标值
  3. 数据库:MySQL 索引为什么用 B+ 树,其优势是什么?
  4. SQL编写:查询订单总价<10 元且存在单价>10 元商品的订单
  5. Redis应用:礼物连击/飘屏业务中的使用场景
  6. Redis原理:自增+过期时间为何需用 Lua 脚本保证原子性
  7. Redis基础:数据结构、Key 设计规范
  8. 高并发架构:礼物连击方案优化、批处理、管道、限流熔断
  9. Redis集群/主从架构了解
  10. 网络:TCP 四次挥手的原因
  11. 网络:TIME_WAIT 过多的解决办法
  12. 线上排查:Bug 排查案例(版本管理、ID 不一致、网关权限)
  13. 线上排查:Java 服务内存 100% 快速止损与定位思路
  14. 线上排查:内存飙高常见原因清单
  15. 线上排查:紧急恢复思路
  16. 综合考察:离职原因、offer 情况、职业规划、技术栈偏好

参考解析

  • MySQL B+树优势:相比B树,B+树的非叶子节点只存储索引,能容纳更多索引项,使得树更矮胖,磁盘IO次数少;所有叶子节点通过双向链表连接,利于范围查找。
  • Redis Lua脚本原子性:Redis在执行Lua脚本时会阻塞其他指令,从而确保脚本内的操作(如INCR后设置EXPIRE)作为一个整体执行,避免中途出现网络中断导致数据不一致。
  • TCP TIME_WAIT:为保证连接关闭时的可靠性(确认对端收到FIN ACK)和处理滞留的网络数据包。解决办法:优化连接池、开启TCP重用(tcp_tw_reuse)或减小系统时间限制。
  • 内存飙高止损:先dump内存快照(jmap),重启服务或切换流量实现快速止损。排查思路包括:查看GC日志、分析对象引用链、检查是否有大对象创建或内存泄漏。