虾皮一面凉经

某互联网公司 · 后端开发工程师 · 一面 · 江苏 · 2026-06

《面试题目》

📍面试公司:虾皮

🕐面试时间:6.9

  1. 💻面试岗位:后端实习

❓面试问题: 2. 楼主是一个后端加rag项目一个agent项目,项目只问了rag部分。 3. 面试官很善解人意地先问了我有没有学过计网和计组。得知楼主没学过以后开始拷打数据库和数据结构。

数据库: 4. 数据库事务是什么意思?请具体说明 5. 读视图的具体实现是什么? 6. MySQL 中事务是如何实现的? 7. MySQL 中的索引类型有哪些? 8. MySQL 支持哪些存储引擎? 9. InnoDB 引擎的底层数据结构是什么?为什么使用 B+ 树?

Java 虚拟机 (JVM): 10. 了解过虚拟机或垃圾回收机制吗? 11. JVM 的内存分配是怎么做的?(提到了运行时内存区)

算法与数据结构: 12. 什么是动态规划?它用来解决什么样的问题?

什么是贪心算法? 13. 动态规划和贪心算法的区别是什么?

Java 基础: 14. 在代码中如何实现多态? 15. 除了继承和接口,还有其他实现多态的方法吗? 16. 手撕:k个一组反转链表。核心代码部分难度不大,main方法没包在类里面没跑起来,最后给面试官讲了讲思路结束。

🙌面试感想: 17. 总结:难度总体来说不算特别高,但是很吃基础。基础不牢地动山摇。楼主已gg,就当积累经验了。

发面经积德


《参考解析》

  1. MySQL深度:MySQL InnoDB使用B+树索引,支持ACID事务。关键知识点:聚簇索引(主键索引)叶节点存完整行数据;辅助索引叶节点存主键值(需回表);MVCC通过undo log版本链+ReadView实现多版本并发控制,解决脏读/不可重复读;事务隔离级别从低到高:读未提交→读已提交→可重复读(默认)→串行化。

  2. JVM与GC:JVM内存模型:堆(对象分配,GC管理)、方法区(类信息、常量池)、虚拟机栈(栈帧/局部变量/操作数栈)、本地方法栈、程序计数器。GC算法:标记-清除(内存碎片)、标记-整理(无碎片,但移动对象)、复制(新生代)。G1按Region划分堆,预测停顿时间。

  3. RAG与大模型:RAG(检索增强生成)流程:文档切片→向量化(Embedding)→存向量数据库→检索时将query向量化→TopK语义检索→将相关文档拼入prompt→LLM生成。优化:混合检索(语义+关键词)、重排序Rerank、查询改写、上下文压缩。评估:召回率(relevant docs retrieved/total relevant)、精确率、Answer相关性。

  4. 算法题解析:常用算法思路:动态规划(状态转移方程,自底向上);BFS/DFS(图遍历,BFS找最短路,DFS回溯);双指针(有序数组去重/两数之和);滑动窗口(子串/子数组问题);二分查找(有序或单调性)。时间复杂度分析:关注最坏情况和平均情况。