我作Java也十来年了,如今也算是中层管理,每次招聘都须要找一些面试题,干脆本身整理了一份,这份面试宝典是从我 去年开始收集的,一方面是给公司招聘用,另外一方面也是想用它,来挖掘本身在 Java 技术栈中,还有那些知识点我了解的不够,而后再去复习一遍,以此来提升本身的技术深度,也增长一下本身的技术广度。java
而后说回面试的事,这份面试宝典原本是只有咱们内部使用的,可到后来有不少朋友在微信上联系到我,让我帮他们找一些面试方面的资料,并且这些关系也不太好拒绝,到最后我干脆就有了这么一个想法,要不要把我整理的这面试宝典,去帮助更多的人。因而我就花了两天时间把面试宝典从新优化整理了一下放在了下面:mysql
说了这么多,下面进入咱们本文的主题,咱们这份面试题,包含的内容了十九了模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。以下图所示:程序员
适宜阅读人群面试
须要面试的初/中/高级 java 程序员redis
想要查漏补缺的人算法
想要不断完善和扩充本身 java 技术栈的人spring
{ 程序计数器 , 虚拟机栈 ,本地方法栈 , 堆 ,方法区 ,元空间 } // 每一个区域要能介绍一下sql
2. Minor GC 触发条件 : eden区剩余内存是否足够 两种状况分开分析设计模式
FULL GC 触发条件 : Minor GC 平均晋升空间大小 > 老年代连续剩余空间,则触发FULL GC缓存
深刻一些,:GC root对象有哪些?为何选择他们作GC root对象
4. 垃圾收集算法 : { 标记清除算法 、标记整理算法 、 复制算法、 分代收集算法 }
深刻一些: 各个算法的优势和适用场景
5. 垃圾收集器 : { serial 、 parallel 、 CMS 、 G1 }
CMS 、G1 重点 , 介绍工做流程和优缺点
6. 内存泄漏
例子: { 单例 , 容器 等等}
缘由 : 长生命周期持有短生命周期引用
7. 引用类型 ; { 强引用、 软引用、 弱引用 、 虚引用 }
有哪些类加载器 , 可否自定义 Java.Object.String 的类加载器 ?
1. 线程的状态 : { new ,runnalbe , wait , time-wait , block , terminated }
2. 进程 、 线程 、 协程 的含义和区别 // 我的理解 是一组渐进提出的概念
3. 进程间通讯方式 : { 管道 、FIFO 、 信号量 、 共享内存 、 消息队列 、 Socket }
4. 如何避免死锁 ? 死锁的四个必要条件
5. Sleep和wait的区别
【高频】Sychronized 和 lock 的区别 ?
8. volatile的做用 : { 指令重拍 、 保证变量的可见性(设计JMM)}
9. ThreadLocal 底层原理
10. 【高频】 线程池
线程池构造器涉及哪些参数 : { corePoolSize , maximumPoolSzie , timeout , timeUnit , RejectHandler , 等待队列 , 线程工厂 }
介绍线程池工做过程?
线程池拒绝策略那些?
适用Executor建立线程池的弊端?
11. AQS 框架原理和 源码理解
1. 【高频】MyISAM 和 InnoDB的区别 : {是否支持行锁 、 是否支持十五 、 是否支持 MVCC 、 底层索引结构不一样 }
2. 事务特性ACID
深刻一些 : 为何要有一致性 ? AID不是已经保证了一致性了吗 ?
3. 并发事务带来的问题 : { 脏读 、 修改丢失 、 不可重复读 、 幻影读 }
5 【高频】 MVCC机制
6 . 【高频】索引
为何索引使用B+树结构,而不是B树
为何索引使用B+树结构,而不是红黑树 : { 磁盘预读取 、红黑树高度 }
7. 聚簇索引和非聚簇索引区别? 主键索引和二级索引了解吗?
8 . 为何不对每一个列建立索引呢?
9 【高频】SQL语句优化 ,SQL题目(字节要求撸代码)
10. explain中 rows type key extra字段的含义?
11. count(1) count(*) count(列值)的区别
1.什么是Redis
2.Redis有哪些优缺点
3.为何要用 Redis /为何要用缓存
4.为何要用 Redis 而不用 map/guava 作缓存?
5.Redis为何这么快
6.Redis有哪些数据类型
7.Redis的应用场景
8.什么是Redis持久化?
9.Redis 的持久化机制是什么?各自的优缺点?
10.如何选择合适的持久化方式
11.Redis持久化数据和缓存怎么作扩容?
12.过时键的删除策略
13.Redis的过时键的删除策略
14.Redis key的过时时间和永久有效分别怎么设置?
15.咱们知道经过expire来设置key 的过时时间,那么对过时的数据怎么处理呢?