3.31 美团食杂零售后端一面面经

美团 · 后端开发 · 一面 · 2026-04

面试题目

  1. 自我介绍
  2. 大模型项目做了什么
  3. 向量数据库流程,怎么选型,维度为啥这么选,基于之前的faiss是吗
  4. 用向量数据库的时候,对它的性能上有什么考虑
  5. 双向量(query改写)和单向量召回的区别是什么
  6. 上线了吗,完整数据流向流程
  7. 优化准确率,哪些方面优化
  8. 摘要怎么做的(参考OpenClaw)
  9. 项目做了多长时间,你参与了哪些
  10. 主要语言Java还是Python
  11. Java线程池使用场景(HTTP连接、CompletableFuture异步调用、自定义线程池防止阻塞)
  12. 线程数是怎么估计的
  13. Synchronized锁升级了解吗,可重入锁吗
  14. 如果不可重入会出现什么情况
  15. ThreadLocal底层原理
  16. 学习知识的流程是什么样(研究性 vs 工程性)
  17. OpenClaw爬论文Skill模块实现与部署方式
  18. 工程性课题学习路径,多Agent比单智能体的好处
  19. PPT Agent实现细节
  20. AI编程范式(人机协同、Vibe Coding)
  21. 算法题:数组升序排列,求前K个数,快排思路
  22. 反问环节

参考解析

1. 向量数据库选型与性能: 选型需权衡查询速度(ANN算法)与精度(召回率),性能优化可从索引结构(如HNSW)、硬件加速(GPU/SIMD)、数据预过滤及内存映射角度考虑。

2. 线程池参数估计: CPU密集型建议设置为 N+1,IO密集型建议设置为 2N 或采用动态调整策略,需结合压测观察系统吞吐量与CPU利用率。

3. Synchronized锁升级: 从无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁。不可重入会导致同一线程调用自身同步方法时产生自旋死锁。

4. ThreadLocal原理: 每个Thread对象持有一个ThreadLocalMap,key为ThreadLocal弱引用,value为实际存储对象,通过当前线程获取Map实现线程隔离,注意内存泄漏风险。

5. 快排求TopK: 使用快排的Partition思想,每次将数组划分为两部分,若基准点下标刚好为K-1,则左侧即为前K个元素,平均时间复杂度为O(N)。