java面试题目

面试题提纲

1、关键字,private protected public static final 组合着问

访问控制符

  同一个类中 同一个包中 不同包中的子类 不同包非子类
private yes      
默认(包可访问) yes yes    
protected yes yes yes  
public yes yes yes yes

其他修饰符

  基本含义 修饰类 修饰成员 修饰局部变量
static 静态的、非实例的、类的、 只能修饰内部类 yes  
final 最终的、不可改变的 yes yes yes
abstract 抽象的、不可实例化的 yes yes  

2、Object类里面有哪几种方法

九种方法

getClass():获取类对象
hashCode():获取hashCode的值
equals():比较对象的值和地址是否相等
notify():随机选择一个在该对象上调用wait方法的线程,解除其阻塞状态。该方法只能在同步方法或同步块内部调用。如果当前线程不是锁的持有者,该方法抛出一个IllegalMonitorStateException异常。
notifyall():解除所有那些在该对象上调用wait方法的线程的阻塞状态。该方法只能在同步方法或同步块内部调用。如果当前线程不是锁的持有者,该方法抛出一个IllegalMonitorStateException异常。
wait():导致线程进入等待状态,直到它被其他线程通过notify()或者notifyAll唤醒。该方法只能在同步方法中调用。如果当前线程不是锁的持有者,该方法抛出一个IllegalMonitorStateException异常。
finalize():对象回收时调用

 

equals 和 hashCode方法,重写equals的原则()

其实当 equals 方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码

 

3、什么是向上转型

JAVA中的一种调用方式。向上转型是对A的对象的方法的扩充,即A的对象可访问B从A中继承来的和B复写A的方法。

Student extends Person

Person person = new Student()

向下转型是不安全的,容器出现错误,一种强转的过程

4、Exception和Error

Exception:出现的异常,java.lang.NullPointerException

Error: 出现错误

5、反射的用途

反射最重要的用途就是开发各种通用框架

6、HashMap实现原理(数组+链表),查找数据的时间复杂度

HashMap的实现原理--链表散列

1、底层有一个hash表,查询的速率快

2、HashMap集合是一个无序的集合。

LinkHashMap

LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
LinkHashMap集合是一个有序集合

7、List有哪些子类,各有什么区别

有序、带索引、可重复

1、Vector: 同步的

底层数据结构是数组,查询快,增删慢。

线程安全,效率低。

2、ArrayList

底层数据结构是数组,查询快,增删慢。

线程不安全,效率高。

3、LinkedList

底层数据结构是链表,查询慢,增删快。

线程不安全,效率高。

8、Java泛型机制,泛型机制的优点,以及类型变量

好处:

1、避免异常

2、把运行期异常,提升为编译期异常

3、集合中存储的元素类型统一了

4、从集合中取出的元素类型是泛型指定的类型,不需要进行大量的“向下转型”

弊端:

泛型是什么类型就是什么,只可以存储什么数据

导致集合中存储的元素缺乏多样性

 

 

 

 

上一篇:Java集合:HashMap


下一篇:(JAVA)hashcode