热点面试题目—Java异常
2017-12-15 00:00
239 查看
点击上方“程序员大咖”,选择“置顶公众号”
关键时刻,第一时间送达!
在面试时Java异常常被问到,很多人做足了准备但在实际面试中,仍然不能很准确的回答Java异常的问题。到底面试官会怎样提问?针对你的回答又会怎样深挖呢?今天小编就通过一个面试场景模拟,来帮助猿猿们更好的理解Java异常,搞定面试官。
[b]面试官题目[/b]
请聊一下,你对java异常的理解?区分一下运行时异常和一般异常有何异同?你在平时工作中遇到的异常类有哪些,详细说明一下这些异常是怎么产生的?
考点分析
根据这个题目,我们可以把它拆分为三个小问题,来解答;主要考察来我们对异常的理解,以及对java基础的深度研究,比如题中说到你工作中遇到的异常有哪些,这就是对你进行知识深度的挖掘;题中也提到这些异常产生的原因,也是来进一步挖掘你在哪些方向研究的比较深入。
回答
0,Java异常的理解?异常主要处理编译期不能捕获的错误。出现问题时能继续顺利执行下去,而不导致程序终止。确保程序的健壮性。处理过程:产生异常状态时,如果当前的context不具备处理当前异常的能力,将在heap上new出来一个异常对象,停止当前的执行路线,把产生的异常对象抛给更高层的context。Throwable:异常类;Error :系统异常;不能恢复;Exception :普通异常;可恢复。利用try/catch/finally来处理异常。在你会到了上面的东西,有的面试官会问你什么时候用到finally呢?你应该这样回答,某些事物(除内存外)在异常处理完后需要恢复到原始状态,如:开启的文件,网络连接等。
1,运行时异常和一般异常有何异同?
异常分为runtime exception和checked exception。
checked exception:java编译器强制要求catch此类异常,如io异常、sql异常。
runtime exception:不需要强制性处理,一旦出现异常,交由虚拟机接管。
2,遇到的异常类有哪些?产生的原因?
NullPointerException:空指针。
ArrayIndexOutOfBoundsException:数组越界。
IllegalArgumentException:参数非法。
BufferOverflowException:缓存溢出。
ClassNotFoundException:在编译时无法找到指定的类。
ClassCastException:类型强转。
ExceptionInInitializerError:静态初始值或静态变量初始值期间发生异常。
UnsatisfiedLinkError:JNI加载dll或者so文件时未找到。
NoClassDefFoundError:在编译时能找到合适的类,而在运行时不能找到合适的类。
上面说了这么多常见的异常类,下面咱们详细的聊一下OutOfMemoryError(内存溢出)这个异常。
产生的原因:
1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据。
2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收。,3,
3.代码中存在死循环或循环产生过多重复的对象实体。
4.使用的第三方软件中的BUG。
5.启动参数内存值设定的过小。
重点排查以下几点:
1.检查代码中是否有死循环或递归调用。
2.检查是否有大循环重复产生新对象实体。
3.检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
4.检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。
5.检查对大文件的读取是否采用类nio的方式。
[b]总结[/b]
通过上面的题目,我们可以清楚的发现,对于面试来说,对于一个问题,面试官一定会深挖,来看看你对知识的了解达到一个什么样的地步。因此,在平时的学习中,我们一定要深入研究每一个基础知识点,它并不是你认为的那么简单。
[b]
【点击成为Python大神】[/b]
关键时刻,第一时间送达!
在面试时Java异常常被问到,很多人做足了准备但在实际面试中,仍然不能很准确的回答Java异常的问题。到底面试官会怎样提问?针对你的回答又会怎样深挖呢?今天小编就通过一个面试场景模拟,来帮助猿猿们更好的理解Java异常,搞定面试官。
[b]面试官题目[/b]
请聊一下,你对java异常的理解?区分一下运行时异常和一般异常有何异同?你在平时工作中遇到的异常类有哪些,详细说明一下这些异常是怎么产生的?
考点分析
根据这个题目,我们可以把它拆分为三个小问题,来解答;主要考察来我们对异常的理解,以及对java基础的深度研究,比如题中说到你工作中遇到的异常有哪些,这就是对你进行知识深度的挖掘;题中也提到这些异常产生的原因,也是来进一步挖掘你在哪些方向研究的比较深入。
回答
0,Java异常的理解?异常主要处理编译期不能捕获的错误。出现问题时能继续顺利执行下去,而不导致程序终止。确保程序的健壮性。处理过程:产生异常状态时,如果当前的context不具备处理当前异常的能力,将在heap上new出来一个异常对象,停止当前的执行路线,把产生的异常对象抛给更高层的context。Throwable:异常类;Error :系统异常;不能恢复;Exception :普通异常;可恢复。利用try/catch/finally来处理异常。在你会到了上面的东西,有的面试官会问你什么时候用到finally呢?你应该这样回答,某些事物(除内存外)在异常处理完后需要恢复到原始状态,如:开启的文件,网络连接等。
1,运行时异常和一般异常有何异同?
异常分为runtime exception和checked exception。
checked exception:java编译器强制要求catch此类异常,如io异常、sql异常。
runtime exception:不需要强制性处理,一旦出现异常,交由虚拟机接管。
2,遇到的异常类有哪些?产生的原因?
NullPointerException:空指针。
ArrayIndexOutOfBoundsException:数组越界。
IllegalArgumentException:参数非法。
BufferOverflowException:缓存溢出。
ClassNotFoundException:在编译时无法找到指定的类。
ClassCastException:类型强转。
ExceptionInInitializerError:静态初始值或静态变量初始值期间发生异常。
UnsatisfiedLinkError:JNI加载dll或者so文件时未找到。
NoClassDefFoundError:在编译时能找到合适的类,而在运行时不能找到合适的类。
上面说了这么多常见的异常类,下面咱们详细的聊一下OutOfMemoryError(内存溢出)这个异常。
产生的原因:
1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据。
2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收。,3,
3.代码中存在死循环或循环产生过多重复的对象实体。
4.使用的第三方软件中的BUG。
5.启动参数内存值设定的过小。
重点排查以下几点:
1.检查代码中是否有死循环或递归调用。
2.检查是否有大循环重复产生新对象实体。
3.检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
4.检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。
5.检查对大文件的读取是否采用类nio的方式。
[b]总结[/b]
通过上面的题目,我们可以清楚的发现,对于面试来说,对于一个问题,面试官一定会深挖,来看看你对知识的了解达到一个什么样的地步。因此,在平时的学习中,我们一定要深入研究每一个基础知识点,它并不是你认为的那么简单。
来自:Java面试那些事
程序员大咖整理发布,转载请联系作者获得授权[b]
【点击成为Python大神】[/b]
相关文章推荐
- 热点面试题目—Java异常
- 热点面试题目—Java异常
- Java常见笔试面试题目解析(十):Java中检查的异常与未检查的异常
- Java常见笔试面试题目解析(三):Java中异常执行流程
- java异常面试常见题目
- Java异常的面试问题及答案
- Java面试常被问到的题目+解答
- Java异常的面试问题及答案
- Java面试题目总结
- 谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式
- Java面试题目
- 【LeetCode-面试算法经典-Java实现】【所有题目目录索引】
- 中华网Java面试题目[收藏:)]
- Java面试中遇到的一些经典算法题目
- [java面试]宇信易诚 广州分公司 java笔试题目回忆录
- java基础面试题目
- Java面试题目
- java初中级工程师面试笔试题目及心得(全部实战经验)(答案)
- Java高级工程师面试题目汇集
- 【应聘】阿里巴巴Java面试题目