Bigo后端开发二面面经
- 轮次
- 二面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- RAG 一般有哪些召回方式?如何做混合召回、融合和重排?
- RRF 中的 K 是什么意思?为什么常用 60?
- 字段冗余到主表后,原字段与冗余字段更新不同步怎么办?
- 事务 A 两次查询之间事务 B 插入并提交,会发生什么?这是不是幻读?
- 如何防止 Agent 修改错误代码?Patch 如何准确应用?
- 死信队列和重试机制如何设计?
- RabbitMQ 出现消费积压怎么办?
- SQL 慢查询如何定义和定位?
- 复合索引如何设计?索引顺序如何确定?
- MySQL Explain 之后应关注哪些字段?
- MySQL 的隔离机制和 MVCC 是什么?
- 乐观锁和悲观锁有什么区别?
- JWT 加 Redis 如何实现状态鉴权和主动失效?
- Redis 的持久化策略有哪些?缓存穿透、击穿、雪崩如何处理?
- Redis 热 Key 和大 Key 如何治理?
- Spring IOC、AOP 和循环依赖如何理解?
- Young GC 和 Full GC 什么时候发生?常见垃圾回收算法有哪些?
- Java 线程池核心参数和执行流程是什么?如何估算线程数?
- HTTP 与 HTTPS 有什么区别?HTTPS 如何加密?
- TCP 三次握手和四次挥手是什么过程?
- 进程、线程和协程有什么区别?
- 服务 CPU 飙高或出现 OOM 时如何排查?
- 如何实现三数之和?
《参考解析》
- 混合召回:关键词倒排擅长精确匹配,向量召回擅长语义相似;可先分别取候选,再用 RRF 等方法按名次融合,最后由交叉编码器或业务特征重排。RRF 的 K 是平滑常数,用于降低极高名次对总分的支配,具体取值应通过验证集评估。
- 缓存一致性:常用先更新数据库、再删除缓存,并通过重试、延时双删或 Binlog 订阅收敛。高频字段若强依赖一致性,应减少冗余或把更新写入同一事务边界,不能只靠定时刷新。
- 消息积压:先确认生产速率、消费延迟和失败原因,再按分区或消费者并行度扩容,必要时限流生产端。扩容不能破坏顺序和幂等,失败消息应进入有上限的重试与死信流程。
- CPU/OOM 排查:CPU 高先用线程级采样和栈信息定位热点;OOM 则结合 GC 日志、堆转储和对象支配树确认泄漏或峰值分配。修复后还要用同等流量验证,而不是只看一次指标回落。