JavaGuide
JavaGuide copied to clipboard
「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!
1. 修正了关于 LinkedBlockingQueue 的描述错误,指出 LinkedBlockingQueue 是有界阻塞队列,其默认长度为 Integer.MAX_VALUE 而非无界队列。 2. 修正单词错误,SingleThreadExector 修正为 SingleThreadExecutorgleThreadExecutor。
在 Java 集合(下)中,讲到了HashMap 和 Hashtable 的区别,可以再增加一点: **哈希值使用**:HashTable 直接使用对象的 hashCode,而 HashMap 重新计算 hash 值(二次哈希)。
fix typo:显示 -> 显式
在[JavaGuide](https://javaguide.cn/java/basis/java-basic-questions-02.html#string-%E4%B8%BA%E4%BB%80%E4%B9%88%E6%98%AF%E4%B8%8D%E5%8F%AF%E5%8F%98%E7%9A%84)中提到String用final修饰是为了避免被继承后修改String的值,导致破坏String的不可变性。 实际上只需要使用private修饰byte[]数组即可保证String的不可变性,String使用final修饰的真正原因是**加速String方法的调用过程**。 在Java中存在着虚函数表,虚函数表的主要作用是帮助多态加速。具体来说,在编译时每个类都会生成一张虚函数表,记录着所有方法的指针。在运行时,通过实例对象的真正类型,找到虚函数表,再获得需要调用的方法的指针。这是一个动态的过程(因为需要在运行时确定方法的指针)。 而如果一个类被final修饰,那么我们在编译时即可确定对象的运行时类型(因为没有子类,自然也不用考虑多态),因此可以在编译时就确定方法指针,无需动态获取,提高了运行速度。
原文: _String 真正不可变有下面几点原因: 1. 保存字符串的数组被 final 修饰且为私有的,并且String 类没有提供/暴露修改这个字符串的方法。 2. String 类被 final 修饰导致其不能被继承,进而避免了子类破坏 String 不可变。_ 描述有误点: 1. String不可变并不是因为String类被final修饰,因为byte[]数组被private修饰就已经能够保证不被子类继承后修改,并不需要给String加上final。 2. String支持用数组进行初始化,如果仅仅是使用private修饰byte[]数组并不能阻止引用对应的值被修改。为了避免引用的值被修改,String在使用数组进行初始化时对值进行了复制,而非直接存储引用。
**织入(Weaving)** :织入是将切面和目标对象连接起来的过程,也就是将通知应用到切点匹配的连接点上。常见的织入时机有两种,分别是编译期织入(AspectJ)和运行期织入(AspectJ)。 可以更改为:**织入(Weaving)** :织入是将切面和目标对象连接起来的过程,也就是将通知应用到切点匹配的连接点上。常见的织入时机有两种,分别是编译期织入(Compile-Time Weaving 如:AspectJ)和运行期织入(Runtime Weaving 如:AspectJ、Spring AOP)。
` /** * 以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。 * 返回的数组将是“安全的”,因为该列表不保留对它的引用。 (换句话说,这个方法必须分配一个新的数组)。 * 因此,调用者可以自由地修改返回的数组。 此方法充当基于阵列和基于集合的API之间的桥梁。 */ public Object[] toArray() { return Arrays.copyOf(elementData, size); }`
**Redis为什么用跳表实现有序集合**原文中关于**元素查询**的描述如下 ``` 元素查询 查询逻辑比较简单,从跳表最高级的索引开始定位找到小于要查的 value 的最大值,以下图为例,我们希望查找到节点 8: 1. 跳表的 3 级索引首先找找到 5 的索引,5 的 3 级索引**forwards[3]**指向空,索引直接向下。 2. 来到 5 的 2 级索引,其后继**forwards[2]**指向 8,继续向下。 3. 5 的 1 级索引**forwards[1]**指向索引 6,继续向前。 4....
现在的答案是: - ${}是... - #{}是... 把他俩倒换一下位置吧,先`#{}`再 `${}`,和题目对应起来,今天面试问我整好给答反了😭😭😭
这个说法不对,因为发生缺页中断陷入内核,处理缺页中断仍然是需要占用一个cpu core的。