法大大Java实习面经
《面试题目》
- 26投递
- 26约一面
- 28一面
- 一面(50分钟):无手撕,三个人轮着面,没有手撕的情况下竟然还面这么长时间,我第一次见小厂能面这么长时间的
- 自我介绍
- 这两段实习和简历上的项目你挑一个你最熟悉的,参与度最高,含金量最高,有技术亮点的讲一讲,怎么解决的
- 你刚才说的这个用友实习产出你有遇到过什么难点吗,怎么解决的
- Java里的集合是怎么划分的
- 具体说一下每个大类集合中你常用的集合,还有他们有什么特点什么区别
- HashMap的数据结构
- JDK8对HashMap有什么优化吗
- 详细讲一下JDK7中HashMap头插法的循环列表问题
- HashMap的初始长度和扩容因子是多少
- 如果让你创建一个长度为20的HashMap集合,这时候new一个HashMap的长度应该是多长
- ArrayLIst线程安全吗
- List集合里有没有线程安全的集合
- ConcurrentHashMap和HashMap有什么区别
- ConcurrentHashMap怎么保证线程安全的
- 线程池核心参数有哪些
- 如果现在有个线程池核心线程数为5,最大线程数为10,队列为20,随着Springboot服务启动,第一个初始化线程是怎么创建,什么情况会创建非核心线程,什么时候会进入队列,整个流程讲下
- synchronized和Reentrantlock区别
- synchronized在什么场景下去用
- 单例模式了解多少讲一下
- 饿汉式和懒汉式哪个是线程安全的
- Double Check(双重检查锁)这个方式线程安全吗
- 线程有几种状态
- 阻塞和就绪有什么区别
- 垃圾回收算法有哪些
- jdk默认是哪个算法
- Java8的新特性有什么
- stream流底层是怎么变成流式的
- 现在大模型很多都是流式输出,底层和stream流有什么区别吗
- =、==、equals有什么区别
- 重写和重载有什么区别
- 方法名不一样还算重载吗
- 实习中你用Redis做了分布式锁,解释一下分布式锁具体怎么实现的
- 除了Redis还有其他方式可以实现分布式锁吗
- 我看你博客写了缓存穿透和缓存击穿,解释一下
- 哪个是数据库没数据
- 缓存穿透和缓存击穿的解决方式
- 布隆过滤器底层原理
- Springboot的自动配置原理
- AOP讲一下,具体使用场景
- Mabatis和MabatisPlus区别,接口怎么实现的,用到AOP了吗
- MySQL索引优化
- 索引失效场景
- 讲一下前缀索引遇到的最左匹配问题,举个例子
- MySQL事务默认隔离级别是什么
- 讲一下你的Agent项目
- RAG私有数据库怎么做的
- 你的文档切片具体怎么做的
- 如果说把关键上下文切割了你怎么解决
- 查询的时候向量去查,查到之后你是根据什么方式去决定它返回来的命中的那个数值,向量查询什么才叫命中
- 部署过Docker容器吗,怎么个部署方式
- 如何查看Docker容器的状态,对CPU内存的一个占用情况
- 我看你用过很多AI编程工具,你是怎么用的,什么场景下用
- 你说的标准规范是什么意思,对于AI编程来说
- OpenSpec和Spec-Kit有了解过吗(SDD框架)
- 现在页面上有个让你实现任务进度的一个需求,你作为后端开发使用Websorket还是SSE,为什么
- 前端需要页面只调用一个接口,你作为后端应该无条件接收所有数据吗,为什么
- 你的Agent项目哪些用了开源项目,哪些是自己写的
- 讲下你那个状态机模式实现的ReActAgent
- 这个Agent是怎么决定去调用哪个工具的
- 你那个ReAct循环怎么防止他无限调用的
- 兜底策略怎么写的
- 你这个Agent分析,如果说每个Agent的策略的结论和角色是不一样的你会怎么处理
- 你的条件单自动交易怎么做的
- 现在让你分析一支股票,把你现在整个全链路服务说一下(因为我写的是个股票Agent项目)
- 有考虑后面会接入飞书这种的定时任务业务吗
- 有了解过我们公司吗
- 反问:岗位具体业务,用到哪些技术栈
- 反问:面试评价
- 反问:几轮面试
《参考解析》
-
MySQL深度:MySQL InnoDB使用B+树索引,支持ACID事务。关键知识点:聚簇索引(主键索引)叶节点存完整行数据;辅助索引叶节点存主键值(需回表);MVCC通过undo log版本链+ReadView实现多版本并发控制,解决脏读/不可重复读;事务隔离级别从低到高:读未提交→读已提交→可重复读(默认)→串行化。
-
Redis核心:Redis常用数据结构:String/Hash/List/Set/ZSet。持久化:RDB(定期快照,恢复快,数据可能丢失)和AOF(追加日志,数据安全,文件大)。缓存穿透用布隆过滤器;缓存雪崩加随机过期时间+多级缓存;缓存击穿用互斥锁或逻辑过期。分布式锁用SET key value NX PX + Lua脚本保证原子释放。
-
Spring框架:Spring IoC容器管理Bean生命周期,核心是依赖注入(DI)。AOP面向切面编程通过动态代理(JDK/CGLIB)实现横切关注点(日志/事务/权限)。Spring事务传播行为:REQUIRED(加入现有或新建)、REQUIRES_NEW(挂起当前,新建)、NESTED(嵌套事务)等。
-
JVM与GC:JVM内存模型:堆(对象分配,GC管理)、方法区(类信息、常量池)、虚拟机栈(栈帧/局部变量/操作数栈)、本地方法栈、程序计数器。GC算法:标记-清除(内存碎片)、标记-整理(无碎片,但移动对象)、复制(新生代)。G1按Region划分堆,预测停顿时间。