version:1.3 HashMap get方法原理
version:1.2 新增细节优化、语言表述部分。
version :1.0
文章目录
- Java基础篇
-
- 🙎♂️面试官: Java 中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?
- 🙎♂️面试官:自动装箱和自动拆箱?
- 🙎♂️面试官:String 、 StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?
- 🙎♂️面试官:字符串常量池的作用了解吗?
- 🙎♂️面试官:intern()方法有什么作用?intern()方法1.6和1.7的区别?
- 🙎♂️面试官:String s1 = new String("abc");这段代码创建了几个字符串对象?
- 🙎♂️面试官:String s1 = “abc”创建几个对象?
- 🙎♂️面试官: == 与 equals?hashCode 与 equals ?重写equals()一定要重写hashCode()吗?
- 🙎♂️面试官: 为什么要有hashCode()?
- 🙎♂️面试官:深拷贝和浅拷贝区别了解吗?什么是引用拷贝?
- 🙎♂️面试官: 接口和抽象类有什么区别?
- 🙎♂️面试官: 谈谈对 Java 注解的理解,解决了什么问题?
- 🙎♂️面试官: Exception 和 Error 有什么区别?
- 🙎♂️面试官: Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?
- 🙎♂️面试官: Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?
- 🙎♂️面试官: 内部类了解吗?匿名内部类了解吗?
- 🙎♂️面试官: BIO,NIO,AIO 有什么区别?
- Java集合篇
-
- 🙎♂️面试官:说说 List,Set,Map 三者的区别?三者底层的数据结构?
- 🙎♂️面试官:说一说ArrayList的扩容机制? / 底层实现原理?
- 🙎♂️面试官:ArrayList list = new ArrayList(10)中的list会扩容几次?
- 🙎♂️面试官: 如何实现数组和List之间的转换?
- 🙎♂️面试官: ArrayList、Vector、LinkedList的区别?
- 🙎♂️面试官: 有哪些集合是线程不安全的?怎么解决呢?
- 🙎♂️面试官: 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同?
- 🙎♂️面试官: HashMap 和 Hashtable 的区别?HashMap 和 HashSet 区别?HashMap 和 TreeMap 区别?
- 🙎♂️面试官:HashMap 的底层实现?
- 🙎♂️面试官: HashMap的put方法具体流程?
- 🙎♂️面试官: HashMap的get方法具体流程?
- 🙎♂️面试官: HashMap的扩容机制?
- 🙎♂️面试官: HashMap的寻址算法?
- 🙎♂️面试官: HashMap 的数组长度为什么是 2 的n次幂?
- 🙎♂️面试官: ConcurrentHashMap 和 Hashtable 的区别?
- 🙎♂️面试官: ConcurrentHashMap 线程安全的具体实现方式/底层具体实现?
- 🙎♂️面试官: 红黑树了解吗?AVL树?
Java基础篇
🙎♂️面试官: Java 中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?
整型:int【Integer】4、long【Long】8、short【Short】2、byte【Byte】 1
浮点类型:float【Float】4、double【Double】8
字符类型:char【Character】2
布尔类型:boolean【Boolean】1bit
整型的包装类型在[-128 , 127]缓存,Character在[ 0 , 127]缓存,有缓存直接从缓存中进行查找,也就是直接指向缓存中的Integer实例。注意,这里的创建不包括用new创建,new创建对象不会复用缓存实例。
🙎♂️面试官:自动装箱和自动拆箱?
自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。
自动装箱相当于调用val