美团AI后端开发一面面经分享
《面试题目》
-
AI相关
- Agent循环流程是怎样的,用户最直观的体验是什么?
- RAG知识库选择了什么模型,调研过哪些模型?
- 如何评估数据的准确性,准确率和召回率能达到多少?
- 知识库如何持续保鲜?
-
中间件与架构
- Redis什么场景下会用分布式锁?
- 缓存和数据库的更新机制,有什么风险,为什么用这个方案?
-
项目与场景
- 实习相关问题。
- 项目中设计了哪些表,有哪些核心字段,如何修改数据?
- 微博抖音这种几亿人用的app如何分表,查询?
- 账户互相转账场景,如何解决死锁,可能会引入什么风险?
-
基础八股
- Java:创建一个线程有哪些方式?Java线程有哪些状态?sleep和wait的区别?死锁需要具备哪些条件?
- 网络:网络七层模型是什么?TCP和UDP的区别?TCP如何保证可靠性?
- 设计:设计原则(SOLID、DDD),了解过哪些设计模式?
-
其他
- 开放问题:如何理解AI coding对程序员的影响?AI的到来会降低程序员的门槛吗?
- 手撕算法:一亿个数找出最大的十个。
《参考解析》
- Agent循环与RAG:Agent核心在于感知、规划与执行循环,RAG需关注Embedding模型(如BGE/Text2Vec)及重排模型。评估指标常用Hit Rate和MRR,知识库保鲜可通过定时任务或CDC实时同步。
- 缓存一致性:更新方案常用“先删缓存,后更新DB”,存在并发写导致脏数据的风险,可通过延时双删或订阅Binlog解决。分布式锁在Redis中常用Redisson实现,防止多节点并发扣减库存。
- 高并发分表:针对微博等海量数据,常用分库分表策略(按用户ID取模或Range分片)。查询时避免跨库JOIN,采用全局ID生成器,配合Elasticsearch或分布式缓存处理复杂查询。
- 算法题(Top K):一亿个数找出最大的十个,最优解法是维护一个大小为10的最小堆(Min-Heap)。遍历数组,若当前元素大于堆顶,则替换堆顶并重新调整堆,时间复杂度为O(N log K)。