腾讯S3后台开发一面凉经

腾讯 · 后台开发 · 一面 · 2026-03

面试题目

  1. 请做一下自我介绍
  2. Java 和 Go 语言有哪些区别?
  3. 面向对象的三大特性分别是什么,各自怎么理解?
  4. 面向对象的思想具体指什么?
  5. 介绍一下你做的Agent项目。
  6. 这个智能体项目的技术栈和实现方式是什么?
  7. 该智能体项目解决了什么问题,有什么业务价值?
  8. 如何控制 Agent 的权限,避免越权操作?
  9. 怎么防止 Agent 做出不合理的操作?
  10. RAG(检索增强生成)是什么,原理是什么?
  11. 你项目中用的向量数据库是什么?
  12. 使用 RAG 相比微调有什么好处?
  13. 你的会话记忆功能是怎么设计实现的?
  14. 目前的会话记忆方案有什么问题或可以优化的点?
  15. 对 MCP(模型上下文协议)有了解吗?
  16. 介绍一下责任链模式在你项目中的应用。
  17. 什么是幂等性,你项目中是怎么实现幂等的?
  18. 你项目中的缓存方案是怎样的?
  19. 什么是缓存击穿、缓存穿透?
  20. 布隆过滤器的原理是什么,有什么特点?
  21. 算法题:实现短网址与长网址互相转换的算法思路与代码。

参考解析

  • Java vs Go: Java是基于虚拟机的强面向对象语言,有成熟的GC和生态;Go是编译型语言,内置并发模型(Goroutine/Channel),无类继承机制,更偏向组合。
  • RAG vs 微调: RAG通过检索外部知识库获取实时信息,具备可解释性强、成本低、易于更新的特点;微调则是改变模型参数以适应特定风格或领域,但难以处理动态数据且成本高。
  • 缓存击穿/穿透: 击穿指热点Key过期导致瞬时请求压垮DB;穿透指查询不存在的数据导致请求直接打到DB。解决方案包括设置热点Key永不过期、互斥锁、布隆过滤器等。
  • 幂等性: 指多次请求产生的结果与单次请求一致。实现常用方案:全局唯一ID(如Snowflake)、数据库唯一约束、Redis状态机记录请求状态。
  • 布隆过滤器: 利用位数组和多个Hash函数判断元素是否存在。特点是空间效率极高,存在一定的误判率(判为存在可能不存在,但判为不存在一定不存在)。