深信服后端开发春招面经
《面试题目》
一面
- AI Coding手撕:
- 用Java实现一个“最近使用应用”列表(LRU),最多显示N个应用。
- 实现一个带前端界面的待办事项(To-Do List)项目。
- 基础问题:围绕AI项目背景及技术栈提问。
二面
- 个人情况:学习经历、实习经历深挖。
- 项目深度交流:详细阐述项目从xx到xx的实现过程,需结合画板进行架构讲解。
- 存储相关:深入探讨底层存储原理。
- RAG技术:针对RAG流程中的文本分割问题进行技术细节考察。
《参考解析》
1. LRU缓存实现
通常采用 HashMap + 双向链表 实现。HashMap 保证O(1)查找,双向链表保证O(1)增删。在Java中,直接继承 LinkedHashMap 并重写 removeEldestEntry 方法是最简洁的实现方式。
2. 存储相关原理 面试官可能关注数据库存储引擎(如InnoDB的B+树结构)、页管理、事务隔离级别实现(MVCC),或分布式存储中的持久化与一致性问题。建议梳理Redis持久化机制及数据库索引底层实现。
3. RAG文本分割 RAG中常用的文本分割策略包括:按字符数固定分割、按语义段落分割、递归字符分割(Recursive Character Text Splitting)。需关注不同切分粒度对上下文窗口利用率及检索召回准确率的影响。