快手后端开发实习生一面面经
《面试题目》
- 自我介绍
- Agent 项目介绍:记忆架构的重要性过滤是怎么做的?加入长期记忆后对系统的提升大吗?
- 向量检索和关键字检索的原理分别是什么?关键字检索为什么要用 ES 来做?
- 文档切分策略用的是什么工具?
- RAG 检索准确率还有哪些提升空间?
- 会话表结构是怎么设计的?
- 介绍一下 ReAct 的实现原理
- Spring AI 有哪些特性?和 Claude Code 或其他开源 Agent 框架相比,有什么优缺点?
- Redis 的数据结构有哪些?
- JVM 内存结构是怎样的?
- MySQL 慢 SQL 如何排查解决?
- 平时用过哪些 AI 编程 Agent?AI 在编程过程中能发挥什么作用?使用 AI 辅助编程有哪些技巧和心得?
- 日常编码时如何保证代码质量?
- 算法题:根据前序和中序遍历构造二叉树
《参考解析》
- ReAct 模式的核心思想:让大模型在”推理(Reasoning)“和”行动(Acting)“之间交替进行——模型先输出一段思考过程判断下一步该调用什么工具,再执行工具调用获取观察结果(Observation),并把结果重新拼接进上下文继续推理,如此循环直到得出最终答案,相比直接一步到位生成答案,ReAct 能显著提升复杂任务的可解释性和准确率。
- 前序中序构造二叉树:前序遍历的第一个元素即为根节点,在中序遍历结果中找到该根节点的位置,其左侧即为左子树的中序序列,右侧为右子树的中序序列,再根据左子树节点数量切分前序序列的对应区间,递归构造左右子树,可以用哈希表预存中序值到下标的映射把查找优化到 O(1),整体时间复杂度 O(n)。
- MySQL 慢 SQL 排查思路:先通过慢查询日志(slow_query_log)定位具体语句,再用
EXPLAIN分析执行计划,重点看type(是否走索引、是否全表扫描)、key(实际使用的索引)、rows(预估扫描行数);常见问题包括索引缺失、索引失效(如对字段做了函数运算或隐式类型转换)、数据量过大未分页、以及联合索引未遵循最左匹配原则。