
Java面试题
介绍Java全栈面试题
半夏_2021
系统恒久远,代码永流传!
展开
-
面试题:谈谈接口和抽象类有什么区别?
接口时对行为的抽象,它是抽象方法的集合,利用接口可以达到API定义和实现分离的目的。接口不能实例化;不能包含任何非常量成员,任何field 都是隐含的 public static final 的意义;同时,没有非静态方实现,也就是说要么是抽象方法,要么是静态方法。Java标准类库中,定义了非常多的接口,比如 java.util.List 。...原创 2021-08-01 16:07:45 · 263 阅读 · 0 评论 -
面试题:针对 ConcurrentHashMap 锁机制具体分析(JDK 1.7 VS JDK 1.8)?
JDK 1.7 中,采用分段锁的机制,实现并发的更新操作,底层采用数组+链表的存储结构,包括两个核心静态内部类 Segment 和 HashEntry。①、Segment 继承 ReentrantLock(重入锁) 用来充当锁的角色,每个 Segment 对象守护每个散列映射表的若干个桶;②、HashEntry 用来封装映射表的键-值对;③、每个桶是由若干个 HashEntry 对象链接起来的链表。JDK 1.8 中,采用Node + CAS + Synchronized来保证并发安全。取消类.原创 2021-07-27 17:48:38 · 365 阅读 · 0 评论 -
面试题:为什么 ConcurrentHashMap 比 HashTable 效率要高?
1.HashTable 使用一把锁(锁住整个链表结构)处理并发问题,多个线程竞争一把锁,容易阻塞2.ConcurrentHashMapJDK 1.7 中使用分段锁(ReentrantLock + Segment + HashEntry),相当于把一个 HashMap 分成多个段,每段分配一把锁,这样支持多线程访问。锁粒度:基于 Segment,包含多个 HashEntry。JDK 1.8 中使用 CAS + synchronized + Node + 红黑树。锁粒度:Node(首结点)(实现 Map原创 2021-07-27 17:47:34 · 1502 阅读 · 0 评论 -
面试题:HashMap 和 HashTable 有什么区别?
①、HashMap 是线程不安全的,HashTable 是线程安全的;②、由于线程安全,所以 HashTable 的效率比不上 HashMap;③、HashMap最多只允许一条记录的键为null,允许多条记录的值为null,而 HashTable 不允许;④、HashMap 默认初始化数组的大小为16,HashTable 为 11,前者扩容时,扩大两倍,后者扩大两倍+1;⑤、HashMap 需要重新计算 hash 值,而 HashTable 直接使用对象的 hashCode...原创 2021-07-27 17:46:15 · 351 阅读 · 0 评论 -
面试题:强引用、软引用、弱引用、虚引用分别是什么?
整体架构强引用当内存不足的时候,JVM 便开始对垃圾进行回收,对应强引用的对象,即使出现了OOM(内存溢出) , 也不会回收。强引用是我们最常见的普通对象引用,只要还有一个强引用指向一个对象,就说明这个对象还活着,垃圾回收器不会回收此对象。在Java 中我们直接new一个对象,当把这个对象赋给一个引用变量,则这个引用变量就是一个强引用。当一个对象处于强引用的时候,表名到达GCRoot是可达的状态,它是不可能被垃圾回收期回收的。即使这个对应以后不会使用到,只要有这个强引用在,就不会被回收,因此,原创 2021-07-27 17:01:57 · 478 阅读 · 0 评论