在面试时Java异常常被问到,很多人做足了准备但在实际面试中,仍然不能很准确的回答Java异常的问题。到底面试官会怎样提问?针对你的回答又会怎样深挖呢?今天小编就通过一个面试场景模拟,来帮助猿猿们更好的理解Java异常,搞定面试官。

面试官题目

请聊一下,你对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的方式。

总结

通过上面的题目,我们可以清楚的发现,对于面试来说,对于一个问题,面试官一定会深挖,来看看你对知识的了解达到一个什么样的地步。因此,在平时的学习中,我们一定要深入研究每一个基础知识点,它并不是你认为的那么简单。

热点面试题目—Java异常相关推荐

  1. 面试常见java异常题_Java异常面试题(含答案)

    1.Java中异常分为哪两种? 编译时异常 运行时异常 2.异常的处理机制有几种? 异常捕捉:try-catch-finally,异常抛出:throws. 3.如何自定义一个异常 继承一个异常类,通常 ...

  2. 应该是史上最全最新Java和Android面试题目(自己总结和收集的)

    Android面试题目 Java 基础 int占用几个字节 讲一下常见编码方式? UTF-8编码下中文占几个字节 int和Interger的区别 int.char.long各占多少字节数 string ...

  3. java异常 说服力_异常常见面试题目

    1) Java中什么是Exception? 这个问题经常在第一次问有关异常的时候或者是面试菜鸟的时候问.我从来没见过面高级或者资深工程师的 时候有人问这玩意,但是对于菜鸟,是很愿意问这个的.简单来说, ...

  4. java面试题目前为止全内容收集

    目录 java异常处理 Exception类的层次 Java内置异常类 异常方法 JAVA基础 JAVA反射 什么是反射? 为什么需要反射? JAVA接口 为什么要用接口 JAVA构造方法 JAVA集 ...

  5. 夜夜肝到秃顶,2022年Java面试题目收集整理归纳

    开始的碎碎念 本文大多是各大企业的topN题目,针对java中高级开发,本文会持续收集更新内容,如果大家有优质的Java面试题,也欢迎大家来投稿. 特意整理出这个分类的目录,方便大家平时复习和收藏哈. ...

  6. Java开发者跳槽必备:2021阿里Java面试题目大汇总

    5.高并发 6.中间件 7.之前项目经历,运用的技术,遇到的问题,如何解决,个人有什么收获和成长: 8.对于技术的热情(平时是否看些技术书籍,逛论坛,写博客,写源代码或程序等): JAVA开发技术面试 ...

  7. 史上最全阿里Java面试题目大汇总!强烈建议收藏~

    阿里面试题目目录 技术一面(基础面试题目) 技术二面(技术深度.技术原理) 项目实战(项目模拟面试) JAVA开发技术常问的问题 阿里必会知识 阿里面试范畴 阿里面试总结 一:阿里技术一面(基础掌握牢 ...

  8. 视频教程:Java常见面试题目深度解析!

    视频教程:Java常见面试题目深度解析! Java作为目前比较火的计算机语言之一,连续几年蝉联最受程序员欢迎的计算机语言榜首,因此每年新入职Java程序员也数不胜数.很多java程序员在学成之后,会面 ...

  9. JAVA工程师面试题目大全_绝对值得看

    JAVA工程师面试题目大全 一.单选题 1.下列哪种说法是正确的( D) A)实例方法可直接调用超类的实例方法 B)实例方法可直接调用超类的类方法 C)实例方法可直接调用其他类的实例方法 D)实例方法 ...

最新文章

  1. Android源码项目目录结构
  2. Linux系统的CPU使用率和Load
  3. linux命令--VI命令详解(一)
  4. Vue.js-Day09【项目实战(附带 完整项目源码)-day04:用户个人中心页面、用户登录页面、将项目打包部署到服务器上、项目汇报、实训心得】
  5. 【Tools】TortoiseGit安装图解
  6. Word 2010 制作文档结构之章节自动编号
  7. spark减少内存消耗_将内存消耗减少20倍
  8. 房价在手,天下我有 --反手就撸一个爬虫(终)
  9. leetcode 1005. K 次取反后最大化的数组和 思考分析
  10. Hazelcast发布Jet 0.6版本
  11. python list,str的拼接与转换
  12. C#:winform使用chart控件绘制折线图,时间轴可缩放
  13. Linux 实用命令
  14. python编程是干嘛的-python编程能做什么开发
  15. QQ 5.0的一些特效学习 一
  16. HTTP协议(转自:小坦克博客)
  17. python 制作 多种 词云
  18. 海康摄像机RTSP连接Opencv读取视频
  19. 淘宝开店首页装修教程分享
  20. Redis缓存:java解析excel数据

热门文章

  1. 大新闻!HTC旗舰手机已原生支持BCH
  2. 谷歌将比特币现金汇率纳入货币信息搜索
  3. DotNetCore跨平台~EFCore数据上下文的创建方式
  4. 第28篇 js中let和var
  5. 不懂技术的人请不要对懂技术的人说这很容易
  6. Direct2D (23) : 复合几何对象之 ID2D1GeometryGroup
  7. 管理员修改文件的权限
  8. 36晋级12第四场:评委弃权 无人晋级
  9. Flyweight 享元模式
  10. Harbor: 跨数据中心复制Docker镜像的开源实现