前言
我相信大多 Java 开发的程序员或多或少经历过 BAT 一些大厂的面试,也清楚一线互联网大厂 Java 面试是有一定难度的,小编经历过多次面试,有满意的也有备受打击的。因此呢小编想把自己这么多次面试经历以及近期的面试真题来个汇总分析,阐述下如何去准备,去回答面试官的提问,可以和面试官有个愉快的交谈。
小编分享的这份 BAT 必考 Java 真题合集包含了性能调优、并发编程、框架源码、分布式框架、微服务架构、项目实战、互联网工具等七个大专题技术点真题模块分享,都是小编在各个大厂面试总结出来的面试真题,已经有很多粉丝靠这份真题合集拿下金三银四的面试,今天小编在这里总结分享给到大家!
小编这篇分享篇幅可能有点长,观看的朋友可以先了解一下目录
- JVM 面试题
- MySQL 面试题
- Tomcat 调优面试题
- Nginx 调优面试题
- 并发同步(乐观锁、悲观锁、重入锁、公平锁、非公平锁及锁的粒度详解)
- Executor 线程池面试题
- Spring aop 面试题
- Spring mvc 面试题
- Spring 面试题
- Mybatis 面试题
- RabbitMQ 面试题
- RocketMQ 面试题
- Kafka 面试题
- Redis 面试题
- Zookeeper 面试题
- Dubbo 面试题
- Netty 面试题
- Spring Boot 面试题
- Spring cloud 面试题
- Linux 面试题
Ps:由于篇幅限制,笔记无法全部为大家展示出来,就以截图主要内容的形式让大家参考啦,需要完整版的小伙伴可以 点击文末名片即可免费获取
JVM 面试题
1、什么情况下会发生栈内存溢出。
java 中的栈一般存储的是栈帧。
所以栈内存溢出就是栈帧的数量太多超过了系统预先设定的值,所以导致内存溢出。
可能的原因就是方法循环调用,栈帧充满了整个栈后溢出。
2、说一下 JVM 的主要组成部分及其作用?
- 类加载器:加载类文件到内存。Class loader 只管加载,只要符合文件结构就加载,至于能否运行,它不负责,那是有 Exectution Engine 负责的。
- 执行引擎:也叫解释器,负责解释命令,交由操作系统执行。
- 本地库接口:本地接口的作用是融合不同的语言为 java 所用
- 运行时数据区:
3、详解 JVM 内存模型
java 定义内存模型的目的是:为了屏蔽各种硬件和操作系统的内存访问之间的差异。 java 内存模型规定了所有的变量都存储在主内存中,每条线程拥有自己的工作内存,工作内存保存了主内存中变量的副本。
4、说一下 JVM 运行时数据区
5、JVM 内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为 Eden 和 Survivor。
6、深拷贝和浅拷贝
7、为什么要分为 Eden 和 Survivor?为什么要设置两个 Survivor 区?
8、说一下堆栈的区别?
9、你知道哪几种垃圾收集器,各自的优缺点,重点讲下 cms 和 G1,包括原理,流程,优缺点。
10、队列和栈是什么?有什么区别?
11、HotSpot 虚拟机对象探秘
12、JVM 内存模型的相关知识了解多少,比如重排序,内存屏障,happen-before,主内存,工作内存。
13、对象的创建
14、简单说说你了解的类加载器,可以打破双亲委派么,怎么打破。
15、为对象分配内存
16、什么是类加载器?
17、处理并发安全问题
18、为什么需要双亲委派模型?
19、对象的访问定位
20、说说你知道的几种主要的 JVM 参数
21、句柄访问
22、怎么打破双亲委派模型?
23、直接指针
24、内存溢出异常
25、怎么打出线程栈信息
26、Java 会存在内存泄漏吗?请简单描述
27、垃圾收集器
28、垃圾收集器与内存分配策略
29、简述 Java 垃圾回收机制
30、GC 是什么?为什么要 GC
31、虚拟机性能监控与故障处理工具
32、垃圾回收的优点和原理。并考虑 2 种回收机制
33、垃圾回收器的基本原理是什么?
34、Java 中都有哪些引用类型?
35、怎么判断对象是否可以被回收?
36、垃圾回收器可以马上回收内存吗?
37、有什么办法主动通知虚拟机进行垃圾回收?
38、在 Java 中,对象什么时候可以被垃圾回收
39、JVM 中的永久代中会发生垃圾回收吗
40、说一下 JVM 有哪些垃圾回收算法?
41、标记-清除算法标记无用对象,然后进行清除回收。
42、复制算法
43、标记-整理算法
44、分代收集算法
45、虚拟机类加载机制
46、说一下 JVM 有哪些垃圾回收器?
47、详细介绍一下 CMS 垃圾回收器?
48、虚拟机字节码执行引擎
49、新生代垃圾回收器和老年代垃圾回收器都有哪些?有什么区别?
50、类加载及执行子系统的案例与实战
60、简述分代垃圾回收器是怎么工作的?
61、线程安全与锁优化
62、内存分配策略
63、大对象直接进入老年代
64、对象优先在 Eden 区分配
65、虚拟机类加载机制
66、描述一下 JVM 加载 Class 文件的原理机制
67、长期存活对象将进入老年代
68、简述 java 内存分配与回收策率以及 Minor GC 和 Major GC
69、简述 java 类加载机制?
70、说一下类装载的执行过程?
71、什么是类加载器,类加载器有哪些?
72、JVM 调优
73、什么是双亲委派模型?
74、常用的 JVM 调优的参数都有哪些?
75、说一下 JVM 调优的工具?
MySQL 面试题
1、为什么要使用数据库
2、MySQL 中有哪几种锁?
3、数据保存在文件的优缺点?
4、MySQL 中有哪些不同的表格?
5、什么是 SQL?
6、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别
7、数据库三大范式是什么
8、MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐
9、MySQL 的 binlog 有有几种录入格式?分别有什么区别?
10、CHAR 和 VARCHAR 的区别?
11、列对比运算符是什么?
12、什么是索引?
13、主键和候选键有什么区别?
14、myisamchk 是用来做什么的?
15、InnoDB 引擎的 4 大特性
16、你怎么看到为表格定义的所有索引?
17、如果一个表有一列定义为 TIMESTAMP,将发生什么?
18、MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么?
19、索引有哪些优缺点?
20、BLOB 和 TEXT 有什么区别?
21、可以使用多少列创建索引?
22、索引使用场景(重点)
23、MyISAM 表格将在哪里存储,并且还提供其存储格式?
24、MySQL 如何优化 DISTINCT?
25、如何显示前 50 行?
26、MySQL 里记录货币用什么字段类型好
27、索引有哪几种类型?
28、什么是非标准字符串类型?
29、索引的数据结构(b 树,hash&#