想问问最新Java面试题怎么样

蒲志斌 2019-05-16 10:21:45
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的方法是同步的。 、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为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是 同一个对象,这样就隔离了多个线程对数据的数据共享。
...全文
144 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧