Skip to content

Commit 7166881

Browse files
committed
基础部分-9题面试题答案
1 parent 25c6070 commit 7166881

9 files changed

+59
-0
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
- final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表
2+
示该变量是一个常量不能被重新赋值。
3+
- finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法finally代码块
4+
中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。
5+
- finalize是一个方法,属于Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调
6+
用,当我们调用System.gc() 方法的时候,由垃圾回收器调用finalize(),回收垃圾,一个对象是否可回收的
7+
最后判断。
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
- 1.重写必须继承,重载不用。
2+
- 2.重写的方法名,参数数目相同zd,参数类型兼容,重载的方法名相同,参数列表不同回
3+
- 3.重写的方法修饰符大于等于父类的方法,重载和修饰符无关。
4+
- 4.重写不可以抛答出父类没有抛出的一般异常,可以抛出运行时异常
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
- 两个对象equals相等,则它们的hashcode必须相等,反之则不一定。
2+
- 两个对象==相等,则其hashcode一定相等,反之不一定成立。
3+
4+
**hashCode 的常规协定:**
5+
6+
- 1.在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
7+
- 2.两个对象的equals()相等,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
8+
- 3.两个对象的equals()不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不要求一定生成不同的整数结果。但是,为不相等的对象生成不同整数结果可以提高哈希表的性能。
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
- 抽象类要被子类继承,接口要被类实现。
2+
- 接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。
3+
- 接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
4+
- 接口是设计的结果,抽象类是重构的结果。
5+
- 抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高。
6+
- 抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变常量。
7+
- 抽象类主要用来抽象类别,接口主要用来抽象功能。
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
BIO
2+
3+
就是传统的 java.io 包,它是基于流模型实现的,交互的方式是同步、阻塞方式,也就是说在读入输入流或者输出流时,在读写动作完成之前,线程会一直阻塞在那里,它们之间的调用时可靠的线性顺序。它的有点就是代码比较简单、直观;缺点就是 IO 的效率和扩展性很低,容易成为应用性能瓶颈。
4+
5+
NIO
6+
7+
是 Java 1.4 引入的 java.nio 包,提供了 Channel、Selector、Buffer 等新的抽象,可以构建多路复用的、同步非阻塞 IO 程序,同时提供了更接近操作系统底层高性能的数据操作方式。
8+
9+
AIO
10+
11+
是 Java 1.7 之后引入的包,是 NIO 的升级版本,提供了异步非堵塞的 IO 操作方式,所以人们叫它 AIO(Asynchronous IO),异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
**String:**
2+
3+
- String类是一个不可变的类,一旦创建就不可以修改。
4+
- String是final类,不能被继承
5+
- String实现了equals()方法和hashCode()方法
6+
7+
**StringBuffer:**
8+
9+
- 继承自AbstractStringBuilder,是可变类。
10+
- StringBuffer是线程安全的
11+
- 可以通过append方法动态构造数据。
12+
13+
**StringBuilder:**
14+
15+
- 继承自AbstractStringBuilder,是可变类。
16+
- StringBuilder是非线性安全的。
17+
- 执行效率比StringBuffer高。
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
![](https://user-gold-cdn.xitu.io/2020/5/11/17200f2a9c046c73?w=1228&h=433&f=png&s=226700)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
- Comparable是排序接口,若一个类实现了Comparable接口,就意味着“该类支持排序”。而Comparator是比较器,我们若需要控制某个类的次序,可以建立一个“该类的比较器”来进行排序。
2+
- Comparable相当于“内部比较器”,而Comparator相当于“外部比较器”。
3+
- 两种方法各有优劣, 用Comparable 简单, 只要实现Comparable 接口的对象直接就成为一个可以比较的对象,但是需要修改源代码。 用Comparator 的好处是不需要修改源代码, 而是另外实现一个比较器, 当某个自定义的对象需要作比较的时候,把比较器和对象一起传递过去就可以比大小了, 并且在Comparator 里面用户可以自己实现复杂的可以通用的逻辑,使其可以匹配一些比较简单的对象,那样就可以节省很多重复劳动了。

0 commit comments

Comments
 (0)