更新时间:2019-11-26 15:48:18 来源:极悦 浏览2382次
1、什么是GC?为什么要有GC?
GC(GarbageCollection)是垃圾收集的意思,负责清除对象并释放内存。Java提供的GC功能可以自动检测对象是否超过作用域从而达到自动回收内存的目的,从而防止内存泄漏。
2、final,finally和finalize的区别?
final用于声明属性,方法和类,表示属性不可变,方法不可被重写,类不可被继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是object类的一个方法,在垃圾收集器执行的时候会调用这个对象回收的方法,工垃圾收集时其他资源的回收,比如关闭文件。
3、什么是单例模式?实现步骤?
单例模式保证了对象唯一。分为懒汉式(在类加载时不初始化)和饿汉式(在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快)。
实现步骤:私有化构造函数、创建一个静态的私有对象、提供公共的访问方法。
4、ArrayList和LinkedList有何区别?
ArrayList是基于动态数组的数据结构,LinkedList是基于链表的数据结构;对于随机访问get和set,ArrayList较优,因为LinkedList要移动指针;对于新增和删除操作add和remove,LinedList较优,因为ArrayList要移动数据。
5、HashMap和Hashtable的区别?
HashMap允许空键值,Hashtable不允许;
HashMap继承自AbstractMap,Hashtable继承自Dictionary类,两者都实现了Map接口;HashMap的方法不是同步的,Hashtable的方法是同步的。
6、Iterater和ListIterator之间有什么区别?
Iterator用来遍历Set和List集合,而ListIterator只能遍历List;Iterator只可以向前遍历,而LIstIterator可以双向遍历;ListIterator从Iterator接口继承,然后添加了一些额外的功能,比如添加一个元素、替换一个元素、获取前面或后面元素的索引位置。
7、创建线程的方式?
继承Thread类
实现Runnable接口
使用Executor框架
8、什么是死锁?
两个线程或两个以上线程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是这些线程都陷入了无限的等待中。
9、wait()与sleep()的区别?
sleep()来自Thread类,wait()来自Object类;
调用sleep()方法,线程不会释放对象锁。而调用wait方法线程会释放对象锁;
sleep()睡眠后不出让系统资源,wait让其他线程可以占用CPU;
sleep(milliseconds)需要指定一个睡眠时间,时间一到会自动唤醒。而wait()需要配合notify()
或者notifyAll()使用。
10、什么是ThreadLocal?ThreadLocal和Synchonized的区别?
线程局部变量。是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享。Java提供ThreadLocal类来支持线程局部变量,是一种实现线程安全的方式。
synchronized是利用锁的机制,使变量或代码块在某一时该只能被一个线程访问。而ThreadLocal为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是同一个对象,这样就隔离了多个线程对数据的数据共享。
以上就是极悦注册机构小编介绍的“十道Java热门面试题”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
相关推荐
(初级到高级)
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习