0526茁维尔AI科技 java后端面试
《面试题目》
- 项目开发中有没有遇到大文件读写的场景?
- Java IO中字节流和字符流的区别是什么?
- 字节流可以传输图片、视频这类文件吗?
- Java集合中List、Set、Map的区别是什么?
- 讲一下HashMap的底层原理?
- 项目中的SQL优化是怎么做的?怎么排查出问题、为什么接口会慢?
- 数据库索引有哪些类型?
- 事务的四大隔离级别是什么?
- 项目中遇到行锁、表锁该怎么解决?
- 有没有使用过Linux?
- 生产环境项目出bug该怎么排查?有哪些实时排查命令?
- Docker怎么查看实时日志?
- Spring IOC容器的核心原理是什么?如何实现依赖注入?
- 项目中有没有使用MyBatis的一级缓存和二级缓存?
- Spring Boot的核心优势是什么?
- Apache策略模式的接口加载逻辑具体怎么实现?
- 复杂策略、节点需要往回流转的情况该怎么处理?
- 有没有使用过Redis?结合项目场景说一下使用场景?
- 乐观锁和悲观锁的区别是什么?
- Redis的过期策略是怎么实现的?
- oc了,但是感觉薪资太少,规模也小,没必要去,拒绝了
《参考解析》
-
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(嵌套事务)等。