java面试积累

1.进程、线程、协程

【面试篇】- 线程和协程的区别是什么?_线程和协程的区别 面试_mind_programmonkey的博客-CSDN博客

 

2.加密算法

非对称加密算法:该算法需要两个密钥:公开密钥和私有密钥。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

 

3.哈夫曼树与哈夫曼编码

数据结构-哈夫曼树的构造与哈夫曼编码_哔哩哔哩_bilibili

 

4.哈希冲突

线性散列法、二次探测散列法

哈希冲突处理_哔哩哔哩_bilibili

 

5.索引——最左前缀原则

 

 

 

 

6.索引——类中对象执行顺序

当一个Java类被加载时,它的静态成员变量和静态代码块会被首先初始化,且只会被初始化一次。这发生在类的实例对象被创建之前,因此无论创建多少个实例对象,静态变量和静态代码块只会被初始化一次。

接下来,实例变量和实例代码块将被初始化。实例代码块是在每次创建新的实例对象时都会执行一次的代码块。

最后,构造函数会被调用,它用于对实例变量进行初始化,即为新创建的实例对象设置初始值。

下面是一个示例代码,其中演示了类变量、实例变量、静态代码块、实例代码块和构造函数的初始化顺序:

```
public class MyClass {
static int classVariable = 0; // 类变量
int instanceVariable = 0; // 实例变量

static {
System.out.println("Static block, classVariable = " + classVariable);
classVariable = 1;
}

{
System.out.println("Instance block, instanceVariable = " + instanceVariable);
instanceVariable = 2;
}

public MyClass() {
System.out.println("Constructor, instanceVariable = " + instanceVariable);
instanceVariable = 3;
}

public static void main(String[] args) {
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
}
}
```

该程序的输出结果为:

```
Static block, classVariable = 0
Instance block, instanceVariable = 0
Constructor, instanceVariable = 3
Instance block, instanceVariable = 0
Constructor, instanceVariable = 3
```

 

从输出结果可以看到,先初始化了静态变量和静态代码块,然后是实例变量和实例代码块,最后才调用构造函数。每次创建一个新的实例对象,就会执行一次实例代码块和构造函数。

 

posted @ 2023-06-14 21:24  fnasklf  阅读(10)  评论(0编辑  收藏  举报