中高级java开发面试题有哪些?中高级java开发面试题

今天给大家分享一些中高级java开发面试题,中高级java跟初级java肯定是有所不同的,知识点上肯定更有难度,所以大家可以收集这些中高级java开发面试题,为自己沉淀知识。

1. Java中的异常有哪几类?分别怎么使用?

检出异常,非检出异常。检出异常需要try...catch才能编译通过。非检出异常不用try...catch也能编译通过。

RuntimeException是非检出异常,不需要try...catch也能编译通过。

IoException,SQLException等等其他所有异常都是检出异常,必须要try...catach才能编译通过。

2.ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和各自适应的场景是什么?

ArrayList,是数组结构:少用与中间的增删。多用于查询,修改。每次增删元素顺序都会操作每个元素。

LinkedList,是链表结构:多用于中间,开头增删。少用查询,修改。查询时会遍历大量元素。

3. 内存溢出是怎么回事?

对象有被指向的引用,但是再也用不到它就是内存溢出了。

GC机制:复制回收,标记清除,引用计数(如果有循环引用后,会影响垃圾回收,所以JVM虚拟机没有采用此方法进行垃圾回收)。

4. ClassLoader有什么用?

类加载器:所有类都需要Classloader来加载。

BoostrapClassLoader,加载系统(java包下)的类,SystemClassLoader,加载系统扩展类(少用),AppClassloader应用类加载器,还有针对每个项目的类加载器。

5.Java中如何获取到线程dump文件

死循环、死锁、阻塞、页面打开慢等问题,打线程dump是最好的解决问题的途径。所谓线程dump也就是线程堆栈,获取到线程堆栈有两步:

(1)获取到线程的pid,可以通过使用jps命令,在Linux环境下还可以使用ps-ef|grepjava

(2)打印线程堆栈,可以通过使用jstackpid命令,在Linux环境下还可以使用kill-3pid

另外提一点,Thread类提供了一个getStackTrace()方法也可以用于获取线程堆栈。这是一个实例方法,因此此方法是和具体线程实例绑定的,每次获取获取到的是具体某个线程当前运行的堆栈,

这些都是一些常见的中高级java开发面试题,大家觉得有价值的话,可以将这些题目收藏起来。最后大家如果想要了解更多java面试题知识,敬请关注奇Q工具网。

推荐阅读:

fastjson常用方法有哪些?fastjson有哪些特性?

java单线程是什么?java单线程如何实现?

MySQL数据库答辩题目有哪些?MySQL数据库相关答辩题目