耗时整整7天,我终于把牛客网上最火的Java面试八股文整理成了面试文档
不知道最近面试是否顺利,是否会经常问到一些自己不熟悉的问题,不知道怎么去回答这些问题,今天小编给大家整理了2020年初大厂经常问到了的一些面试真题及解析,内容点包含有java集合,jvm,并发编程,spring,mybatis,springMVC,微服务,Dubbo,netty,网络,zookeeper,kafka,rabbitMQ
readis缓存,数据库,设计模式。等一线大厂互联网大厂常问到的面试真题,大家可以学习下用来突击金三银四。
注意,注意:由于所包含的知识点过多,文章会给大家列举出大厂的真题,解析我会整理在一个pdf文档里面,大家有需要的话,看文末!
Java 集合面试真题22道:
ArrayList 和 Vector 的区别。
说说 ArrayList,Vector, LinkedList 的存储性能和特性。
快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别是什么?
hashmap 的数据结构。
HashMap 的工作原理是什么?
Hashmap 什么时候进行扩容呢?
List、Map、Set 三个接口,存取元素时,各有什么特点?
Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用 == 还是 equals()? 它们有何区别?
两个对象值相同 (x.equals(y) == true),但却可有不同的 hashcode,这句话对不对?
heap 和 stack 有什么区别。
Java 集合类框架的基本接口有哪些?
HashSet 和 TreeSet 有什么区别?
HashSet 的底层实现是什么?
LinkedHashMap 的实现原理?
为什么集合类没有实现 Cloneable 和 Serializable 接口?
什么是迭代器 (Iterator)?
Iterator 和 ListIterator 的区别是什么?
数组 (Array) 和列表 (ArrayList) 有什么区别?什么时候应该使用 Array 而不是 ArrayList?
Java 集合类框架的最佳实践有哪些?
Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用 == 还是 equals()?它们有何区别?
Comparable 和 Comparator 接口是干什么的?列出它们的区别。
Collection 和 Collections 的区别。
JVM面试真题21道:
Java 类加载过程?
描述一下 JVM 加载 Class 文件的原理机制?
Java 内存分配。
GC 是什么? 为什么要有 GC?
简述 Java 垃圾回收机制。
如何判断一个对象是否存活?(或者 GC 对象的判定方法)
垃圾回收的优点和原理。并考虑 2 种回收机制。
垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
Java 中会存在内存泄漏吗,请简单描述。
深拷贝和浅拷贝。
System.gc() 和 Runtime.gc() 会做什么事情?
finalize() 方法什么时候被调用?析构函数 (finalization)的目的是什么?
如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?
什么是分布式垃圾回收(DGC)?它是如何工作的?
串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
在 Java 中,对象什么时候可以被垃圾回收?
简 述 Java 内 存分 配与 回 收策 率以 及 Minor GC 和Major GC。
JVM 的永久代中会发生垃圾回收么?
Java 中垃圾收集的方法有哪些?
什么是类加载器,类加载器有哪些?
类加载器双亲委派模型机制?
并发编程面试真题38道:
Synchronized 相关问题:
Synchronized 用过吗,其原理是什么?
你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁?
什么是可重入性,为什么说 Synchronized 是可重入锁?
JVM 对 Java 的原生锁做了哪些优化?
为什么说 Synchronized 是非公平锁?
什么是锁消除和锁粗化?
为什么说 Synchronized 是一个悲观锁?乐观锁的实现原理又是什么?什么是 CAS,它有什么特性?
乐观锁一定就是好的吗?
可重入锁 ReentrantLock 及其他显式锁相关问题:
跟 Synchronized 相比,可重入锁 ReentrantLock 其实现原理有什么不同?
那么请谈谈 AQS 框架是怎么回事儿?
请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同。
ReentrantLock 是如何实现可重入性的?
除了 ReetrantLock,你还接触过 JUC 中的哪些并发工具?
请谈谈 ReadWriteLock 和 StampedLock。
如何让 Java 的线程彼此同步?你了解过哪些同步器?请分别介绍下。
CyclicBarrier 和 CountDownLatch 看起来很相似,请对比下呢?
Java 线程池相关问题:
Java 中的线程池是如何实现的?
创建线程池的几个核心构造参数?
线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好的吗?
既然提到可以通过配置不同参数创建出不同的线程池,那么 Java 中默认实现好的线程池又有哪些呢?请比较它们的异同。
如何在 Java 线程池中提交线程?
Java 内存模型相关问题:
什么是 Java 的内存模型,Java 中各个线程是怎么彼此看到对方的变量的?
请谈谈 volatile 有什么特点,为什么它能保证变量对所有线程的可见性?
既然 volatile 能够保证线程间的变量可见性,是不是就意味着基于volatile 变量的运算就是并发安全的?
请对比下 volatile 对比 Synchronized 的异同。
请谈谈 ThreadLocal 是怎么解决并发安全的?
很多人都说要慎用 ThreadLocal,谈谈你的理解,使用 ThreadLocal 需要注意些什么?
Spring面试真题25道:
什么是 Spring 框架?Spring 框架有哪些主要模块?
使用 Spring 框架能带来哪些好处?
什么是控制反转(IOC)?什么是依赖注入?
请解释下 Spring 框架中的 IoC?
BeanFactory 和 ApplicationContext 有什么区别?
Spring 有几种配置方式?
如何用基于 XML 配置的方式配置 Spring?
如何用基于 Java 配置的方式配置 Spring?
怎样用注解的方式配置 Spring?
请解释 Spring Bean 的生命周期?
Spring Bean 的作用域之间有什么区别?
什么是 Spring inner beans?
Spring 框架中的单例 Beans 是线程安全的么?
请举例说明如何在 Spring 中注入一个 Java Collection?
如何向 Spring Bean 中注入一个 Java.util.Properties?
请解释 Spring Bean 的自动装配?
请解释自动装配模式的区别?
如何开启基于注解的自动装配?
请举例解释@Required 注解?
请举例解释@Autowired 注解?
构造方法注入和设值注入有什么区别?
Spring 框架中有哪些不同类型的事件?
FileSystemResource 和 ClassPathResource 有何区别?
Spring 框架中都用到了哪些设计模式?
MyBatis面试真题24道:
什么是 Mybatis?
Mybaits 的优点:
MyBatis 框架的缺点:
MyBatis 框架适用场合:
MyBatis 与 Hibernate 有哪些不同?
#{}和${}的区别是什么?
当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
模糊查询 like 语句该怎么写?
通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗?
Mybatis 是如何进行分页的?分页插件的原理是什么?
Mybatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式?
如何执行批量插入?
如何获取自动生成的(主)键值?
Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql?
Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之外,还有哪些标签?
Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?
为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
MyBatis 实现一对一有几种方式?具体怎么操作的?
MyBatis 实现一对多有几种方式,怎么操作的?
Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
Mybatis 的一级、二级缓存:
什么是 MyBatis 的接口绑定?有哪些实现方式?
使用 MyBatis 的 mapper 接口调用时有哪些要求?
简述 Mybatis 的插件运行原理,以及如何编写一个插件。
后面还有关于 springMVC,微服务,Dubbo,netty,网络,zookeeper,kafka,rabbitMQ,readis缓存,数据库,设计模式,就不在这里一一给大家展示了,需要这份PDF面试资料来突击金三银四的可以下图获取!