开始之前,先说一下我非常推荐的一种学习方式:
带着问题学习或者准备面试。
另外,准备面试的小伙伴,一定要根据自身情况制定好复习计划! 并且,你最好还要时不时自测一下,对着一些面试常见的问题进行自问。
最近,我分析了上百份大中小厂的面经,整理了 Java 面试中最最最常问的一些问题!小伙伴们可以对照着这篇文章学习或者准备面试。
内容会继续完善,欢迎你在评论区说出你遇到的高频面试题!
以下所有问题的答案都给大家整理成了PDF档 有需要可【戳一戳】(「Java 学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!)
Java
基础
- Java 中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?
String
、 StringBuffer
和StringBuilder
的区别是什么?String
为什么是不可变的?String s1 = new String("abc");
这段代码创建了几个字符串对象?- == 与 equals?hashCode 与 equals ?
- 包装类型的缓存机制了解么?
- 自动装箱与拆箱了解吗?原理是什么?
- 深拷贝和浅拷贝区别了解吗?什么是引用拷贝?
- 谈谈对 Java 注解的理解,解决了什么问题?
- Exception 和 Error 有什么区别?
- Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?
- Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?
- 内部类了解吗?匿名内部类了解吗?
- BIO,NIO,AIO 有什么区别?
Java 集合框架
- 说说 List,Set,Map 三者的区别?三者底层的数据结构?
- 有哪些集合是线程不安全的?怎么解决呢?
- 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
- HashMap 和 Hashtable 的区别?HashMap 和 HashSet 区别?HashMap 和 TreeMap 区别?
- HashMap 的底层实现
- HashMap 的长度为什么是 2 的幂次方
- ConcurrentHashMap 和 Hashtable 的区别?
- ConcurrentHashMap 线程安全的具体实现方式/底层具体实现