欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java面试题--2

程序员文章站 2022-05-06 17:49:50
...

Java面试题库

Final,Finally,finalize

final用于声明属性、方法和类,分别表示属性不可变,方法不可覆盖,类不可继承
finally是异常处理语句结构的一部分,表示总是执行,不管是否有异常总是被执行,除非虚拟机停止才不执行
finalize是Object类的一个方法,在垃圾收集器执行的时候回调用被回收对象的此方法可以实现资源回收,例如关闭文件等,JVM不保证此方法总被调用。

Hashtable与HashMap的区别

Hashmap允许空键值,所以非线程安全,效率高。在多个线程访问时必须提供外同步。
Hashtable不允许键值,所以线程安全,但是效率低。

线程和进程的区别

线程是指在程序执行过程中,能够执行程序代码的基本执行单位,每个程序至少都有一个线程,也就是程序本身。
进程是程序的基本执行实体,是线程的容器。
区别:
1、隶属关系:线程是进程中的一部分,一个进程中可以包含若干个线程。进程可以申请和拥有系统资源,一个是动态的概念,一个是活动的实体。
2、地址空间和其他资源:进程间相互独立,同一进程的各线程间共享。
3、进程间通信:线程间可以直接读写进程数据段来进行通话,需要进程同步和互斥手段的辅助,以保证数据的一致性。
4、调度和切换:线程上下文切换比进程上下文切换要快的多。

实现多线程的几种方式

实现Runnable接口
继承Thread类
使用Callable和Future创建线程

List、Set、Collection、Collections

List和Set都是借楼,他们都继承于接口Collection,List是有序的可重复的集合,而Set是无序的不可重复的集合。Collection是集合的顶层接口,Collections是一个封装了众多关于集合操作的静态方法的工具类,因为构造方法是私有的,所有不能实例化。
List接口实现类有ArrayList,LinkedList,Vector。ArrayList和Vector是基于数组实现的,所以查询快,增删改速度较慢,LinkedList是基于链式存储结构的,所以在进行查询的时候速度较慢,但是增删改较快。Vector是线程安全的,所以它和ArrayList相比,查询效率要低。