5.28阿里飞猪java一面
《面试题目》
实习+项目
- 你常用的jdk是什么?jdk8和17区别在哪里?jdk21的新特性?
- CMS、G1、ZGC的区别和底层?
- 为什么G1不以最短停顿时间为目的,但实现了短停顿?
- 模板方法是什么,有什么用?
- stream流怎么讲对象映射到map,会有哪些安全问题?
- 订单表每天有百万增量,怎么设计表字段和数据库?
- 分库分表的话分片键怎么设置的?多表关联的事务怎么保证?
- 雪花算法的结构组成?如果用雪花算法做订单id,觉得长度合适吗?
- 线程池怎么实现的?自定义线程池的参数?项目里怎么用的,参数怎么设置的?
- agent项目怎么设计的,ai客服流程?rag怎么分块的?向量模型?
- 向量相似度计算之后的操作呢?
《参考解析》
-
MySQL深度:MySQL InnoDB使用B+树索引,支持ACID事务。关键知识点:聚簇索引(主键索引)叶节点存完整行数据;辅助索引叶节点存主键值(需回表);MVCC通过undo log版本链+ReadView实现多版本并发控制,解决脏读/不可重复读;事务隔离级别从低到高:读未提交→读已提交→可重复读(默认)→串行化。
-
JVM与GC:JVM内存模型:堆(对象分配,GC管理)、方法区(类信息、常量池)、虚拟机栈(栈帧/局部变量/操作数栈)、本地方法栈、程序计数器。GC算法:标记-清除(内存碎片)、标记-整理(无碎片,但移动对象)、复制(新生代)。G1按Region划分堆,预测停顿时间。
-
Java并发:Java并发:synchronized关键字(偏向锁→轻量级锁→重量级锁升级);ReentrantLock(可重入、可中断、公平锁);volatile(内存可见性+禁止指令重排,不保证原子性);CAS(Compare-And-Swap,无锁乐观并发);ThreadLocal(线程本地变量,WeakReference,注意内存泄漏)。线程池核心参数:corePoolSize/maximumPoolSize/keepAliveTime/workQueue/handler。
-
RAG与大模型:RAG(检索增强生成)流程:文档切片→向量化(Embedding)→存向量数据库→检索时将query向量化→TopK语义检索→将相关文档拼入prompt→LLM生成。优化:混合检索(语义+关键词)、重排序Rerank、查询改写、上下文压缩。评估:召回率(relevant docs retrieved/total relevant)、精确率、Answer相关性。