即有 synchronized 关键字修饰的语句块。
被该关键字修饰的语句块会自动被加上内置锁,从而实现同步
45. 描述 Java 锁机制。
java 中所说的锁就是指的内置锁,每个 java 对象都可以作为一个实现同步的锁,虽然说在 java
中一切皆对象, 但是锁必须是引用类型的,基本数据类型则不可以 。每一个引用类型的对象都可
以隐式的扮演一个用于同步的锁的角色,执行线程进入 synchronized 块之前会自动获得锁,无论是
通过正常语句退出还是执行过程中抛出了异常,线程都会在放弃对 synchronized 块的控制时自动释
放锁。 获得锁的唯一途径就是进入这个内部锁保护的同步块或方法 。
46. Comparable 和 Comparator 接口是干什么的?列出它们的区别
它们都是用于对类的对象进行比较和排序使用的接口。
Comparable 是排序接口,位于 java.lang 包下,若一个类实现了 Comparable 接口,且重写了
compareTo 方法,就意味着该类支持排序,常结合 Collections.sort 或 Arrays.sort 对集合或数组内的元
素进行排序。
Comparator 是比较接口,位于 java.util 包下,我们如果需要控制某个类对象的次序,而该类本
身不支持排序(即没有实现 Comparable 接口),那么我们就可以建立一个“该类的比较器”来进行排序,
这个“比较器”只需要实现 Comparator 接口即可。
Comparable 相当于“内部比较器”,而 Comparator 相当于“外部比较器”。
47. Java 集合类框架的最佳实践有哪些?
首先 Java 中的集合框架体系非常强大和完善,主要用于程序中的数据存储,从最顶层主要分为
了 Collection 和 Map 接口,我们平时使用的集合类都是从这两个类别中扩展开来,正确选择要使用
的集合的类型对性能非常重要。
比如:
1)元素的大小是固定的,而且能事先知道,我们就应该用 Array 而不是 ArrayList。
2)如果我们大概知道存储的数量,可以在使用集合时先给予一个初始容量大小,从而有效避免
集合自动增长的算法而造成的空间浪费,如 new ArrayList(30)。
3)为了类型安全,提高存取效率和可读性,我们优先使用泛型,并且还能有效避免
ClassCastException 类型转换异常。
4)有时为了提高数据的快速定位查找,可优先使用 Map 键值对集合,因为 Map 集合在数据的
查找上效率非常高,但是如果要保证数据的顺序,最好使用 List
5)使用 JDK 提供的不变类作为 Map 的键可以避免为我们自己的类实现 hashCode()和 equals()
方法。
6)底层的集合实际上是空的情况下,返回长度是 0 的集合或者是数组,不要返回 null
48. HashMap 和 Hashtable 的区别。
1、HashMap 和 HashTable 都是键值对数据结构,且都实现了 Map 接口,存储的元素无序;
2、HashMap 非线程安全的,而 HashTable 是线程安全的(HashTable 里面的方法使用 Synchronize
关键字修饰),所以 HashMap 的效率高于 HashTable。
3、HashMap 允许空键空值,HashTable 则不允许
49. HashSet 和 TreeSet 有什么区别?
相同点:1、单列存储 2、元素不可重复
不同点:1、底层数据结构不同(HashSet----哈希表结构 TreeSet-----二叉树结构)
2、数据唯一性依据不同(HashSet 通过重写 hashcode 和 equals TreeSet 通过
compareable 接口)
3、有序性不同,HashSet 无序,TreeSet 有序
50. 说出 ArrayList,Vector, LinkedList 的存储性能和特性。
1、ArrayList 和 LinkedList、Vector 都实现了 List 接口;
2、ArrayList 和 Vector 底层是用数组实现的,而 LinkedList 使用双向链表实现的,在集合插入、
删除元素时,ArrayList 需要移动数组元素性能较差;但是在查询时,因为是连续的数组,所以查询
速度快;LinkedList 正好相反。
3、在容量增长上,ArrayList 增长原来 50%,Vector 集合增加容量原来的一倍。
4、安全性方面 Vector 能够保证线程安全,但是效率比 ArrayList 要低。
最后
2020年在匆匆忙忙慌慌乱乱中就这么度过了,我们迎来了新一年,互联网的发展如此之快,技术日新月异,更新迭代成为了这个时代的代名词,坚持下来的技术体系会越来越健壮,JVM作为如今是跳槽大厂必备的技能,如果你还没掌握,更别提之后更新的新技术了。
更多JVM面试整理:
g-vxdH7VnP-1714352593126)]
更多JVM面试整理:
[外链图片转存中…(img-LfHE0WeW-1714352593127)]