BIGO Java后端一面面经
- 轮次
- 一面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 请介绍外汇汇款 Agent 的完整链路。
- 多轮对话中如何判断汇款信息已经完整?
- 用户说“给上次汇款的人汇 5000 美元”时,系统如何定位收款人并补全信息?
- 槽位提取解决了什么问题?
- 如何拦截模型生成的错误币种、金额或数量级?
- 哪些异常应自动重试,哪些情况应转人工?
- 为什么使用 Redis 存储验证码和 Token?Token 过期续期如何设计?
- 什么是缓存穿透、缓存击穿和缓存雪崩?
- 布隆过滤器存在误判时,如何降低业务影响?
- 如何用互斥锁解决缓存击穿?
- Redis 唯一 ID 如何设计?
- 如何解决秒杀库存超卖问题?
- 分布式环境下如何处理 Redis 或数据库多节点的数据一致性?
- 请介绍 RAG 的完整链路。
- 项目中遇到难题时,如何定位和解决?
- HTTP 和 HTTPS 有什么区别?HTTPS 的加密过程是怎样的?
- 如何求数组中所有和为 0 且不重复的三元组?
《参考解析》
- 汇款 Agent:先做意图识别和实体抽取,再从会话与历史交易中解析收款人;金额、币种、收款账户等关键槽位必须经过确定性规则校验。高风险操作应回显完整信息并要求用户确认,不能仅凭模型输出执行。
- 重试边界:网络抖动、限流和临时服务不可用可按幂等键重试;参数错误、余额不足、身份校验失败等业务错误不应盲目重试。达到次数或时间预算后进入人工处理,并保留完整调用轨迹。
- 缓存问题:穿透针对不存在的键,可用布隆过滤器与空值短缓存;击穿针对热点键瞬时失效,可用互斥重建或逻辑过期;雪崩是大量键同时失效,需要过期时间抖动、分批预热和服务限流。
- 秒杀库存:入口先限流与防重复,Redis 通过 Lua 脚本原子校验并预扣库存,订单异步落库。数据库以唯一约束和条件更新兜底,失败消息进入可重试队列并执行库存补偿。
- RAG 链路:文档清洗与切分后生成向量并建索引;查询阶段先改写问题,再做向量或混合检索、重排和上下文拼装;生成答案时附证据,最后用引用覆盖率和离线评测持续校验效果。
- HTTPS:TLS 握手通过证书链验证服务端身份,协商算法并用非对称密码安全建立会话密钥;后续数据使用对称加密传输,同时通过消息认证保证完整性。
- 三数之和:排序后固定一个数,左右指针寻找另外两个数。命中后移动指针并跳过重复值,整体时间复杂度为
O(n^2),额外空间可做到O(1)。