面灵AI→

拼多多 后端 面经:Agent 项目、Redis 缓存与手撕

时间
2026-10
来源
牛客网

《面试题目》

  1. 你参与的 Agent 项目整体架构是什么?你负责哪一部分?
  2. Redis 的缓存策略有哪些?懒加载、透写、回写分别是什么?
  3. Redis 的基础数据结构有哪些?
  4. MySQL 索引的原理是什么?哪些情况会导致索引失效?
  5. 现场手写一道 SQL。
  6. 字符串全排列怎么实现?
  7. 现场手撕笔试题。

《参考解析》

Agent 项目:先把边界讲清楚:入口是什么、模型负责哪几步、工具怎么注册和调用、状态存在哪里、失败怎么重试、怎么做权限和审计。面试官追问 30 分钟,通常是在验证「你是真的搭过」还是「只看了框架文档」。每个模块都准备一个具体取舍,例如为什么用工作流而不是纯 ReAct、为什么工具结果要结构化、为什么长任务要落状态机。

Redis 缓存策略:Cache Aside 是读时先查缓存、未命中查库再回填,写时更新库再删缓存,工程上最常用。Read/Write Through 是缓存层代理数据库读写,应用只面对缓存;Write Behind 是写缓存后异步批量落库,吞吐高但掉电可能丢数据。懒加载就是 Cache Aside 的读路径,透写是写路径同步写缓存和库,回写是只写缓存、异步刷库。答题时要按「一致性、延迟、实现复杂度、故障影响」四项比较,别只背名字。

Redis 数据结构与 MySQL 索引:String 做缓存和计数,Hash 存对象字段,List 做队列,Set 做去重和交并集,ZSet 做排行榜和延时队列,Bitmap 做签到,HyperLogLog 做 UV 估算。MySQL InnoDB 用 B+ 树,常见失效场景是对索引列做函数、隐式类型转换、前导模糊匹配、联合索引不满足最左前缀、OR 两边有一边没索引、优化器估算回表成本过高。答题时补一句 EXPLAIN 看 type、key、rows、Extra。

手撕:字符串全排列用回溯,维护 used 数组,每层选一个未使用字符;有重复字符时先排序,同一层跳过相同字符,避免重复结果。SQL 手写题先确认表结构和口径,再写 JOIN/GROUP BY/窗口函数;写完主动检查 NULL、去重和索引命中。笔试题手撕要把边界先说出来:空输入、单元素、重复元素、溢出。