27届京东后端AI开发实习生一面面经
面试题目
项目及八股
- 你对RAG(检索增强生成)的理解是什么?
- 向量知识库和各自优缺点是什么?
- 针对检索的准确性,你在项目中做过什么调优操作?
- 项目中排序算法及其他?
- 你们对检索准确率做评测时,测试集和测试流程是怎么构建的?你是否参与了这块工作?
- ES底层的存储结构是怎样的?
- 若ES中已存储部分数据,执行更新操作时,ES内部的整个更新流程是怎样的?
- 服务降级策略的考量是什么?如何保证切换后服务维持正常?
- 你用Arthas排查问题时,具体排查的是什么问题?定位流程是怎么样的?
- 为什么要做分表存储的操作?
- 站在项目表设计的角度,什么场景下需要进行分表操作?
- 单表数据量达到多少时,会考虑做分表?
- 你有了解过MyBatis的切面操作吗?MyBatis的切面能做哪些事情?
- 请讲一下Spring AOP的大概流程和机制是什么?
- 你了解的事务隔离级别有哪些?
- 细粒度锁,具体是做什么用的?怎么实现的?
- 实现细粒度锁时,用的是Java的synchronized关键字吗?
- 如果是分布式服务做这种细粒度锁,你觉得应该怎么做?
- 你提到的Redisson加锁的机制,具体是怎么实现加锁的?
- Java中synchronized关键字底层的加锁流程是怎样的?它如何保证多线程并发时能拦住其他线程?
- ThreadLocal用于什么场景比较合适?
- 你了解ThreadLocal的实现原理吗?
- 若用ThreadLocal存储用户信息,在主线程内起异步线程,异步线程中能通过ThreadLocal拿到该用户信息吗?
大模型相关
- 除了RAG相关工作,还有用过大模型去做其他事情吗?
- 你使用大模型时是用工作流方式,还是用类似Spring AI这种框架去实现的?
- 你在开发过程中,有用过大模型辅助编码的工具吗?
- 大模型辅助编码工具对你的代码开发效率提升有多大?
参考解析
- RAG调优:通常涉及文档分块策略(Chunking)、多路召回(Hybrid Search)、重排序模型(Rerank)的使用,以及Embedding模型的微调。
- ES更新流程:ES是不可变索引,更新操作本质是先标记删除旧文档,再追加写入新文档。后台通过段合并(Merge)物理清理旧数据。
- Spring AOP:基于代理模式。Spring在Bean初始化时,通过JDK动态代理(接口)或CGLIB(类)生成代理对象,在方法调用前后植入切面逻辑。
- 分布式锁:Redisson利用Redis的Lua脚本保证操作原子性,通过
hset存储锁标识和重入次数,并结合Watchdog机制自动续期以防止死锁。 - ThreadLocal与异步:默认情况下,ThreadLocal无法在父子线程间传递。需使用
InheritableThreadLocal或在异步任务提交时手动复制线程上下文数据。