java异常常见面试问题
java异常常见面试问题
一、java异常的理解
异常主要是处理编译期不能捕获的错误。出现问题时能继续顺利执行下去,而不导致程序终止,确保程序的健壮性。
处理过程:产生异常状态时,如果当前的context不具备处理当前异常的能力,将在heap上new出来一个异常对象,停止当前的执行路线,把产生的异常对象抛给更高层的context。
Throwable:异常类 Error:系统异常;不能恢复;Exception :普通异常;可恢复
利用try/catch/finally处理异常
什么时候使用Finally呢?
某些事物(除内存外)在异常处理完后需要恢复到原始状态,如:开启的文件,网络连接等。
二、运行时异常和一般异常有何异同:
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,
是一般常见的运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出
未被捕获的运行时异常。
异常分为runtime exception和checked exception
checked exception :java编译器强制要求catch此类异常,如io异常、sql异常。
runtime exception:不需要强制性处理,一旦出现异常,交由虚拟机接管。
三、遇到的异常类有哪些?产生的原因?
NullPointException:空指针
ArrayIndexOutOfBoundsException:数组越界
IllegalArgumentException:参数非法
BufferOverflowExeption:缓存溢出
ClassNotFoundException:在编译时无法找到指定类
ClassCastException:类型强转
ExceptionInInitializerError:静态初始值或静态变量初始值期间发生异常
UnsatisfiedLinkError:JNI加载dll或者so文件时未找到
NoClassDefFoundError:在编译时能找到合适的类,而在运行时不能找到合适的类
四、OutOfMemoryError(内存溢出)
产生原因:
1、内存中加载的数据量过于庞大,如上一次从数据库取出过多的数据。
2、集合类中有对对象的引用,使用完后未清空,使得JVM不能回收。
3、代码中存在死循环或循环产生过多重复的对象实体。
4、使用的第三方软件中的Dug
5、启动参数内存值设定的过小
重点排查一下几点:
1、检查代码中是否有死循环或递归循环
2、检查是否有大循环重复产生新对象实体。
3、检查对数据库查询中,是否有一次获得全部数据的查询,一般来说,如果一次取出十万条记录到内存中,就可能引起内存溢出,这个问题
比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出,因此对于数据库查询尽量采用分页
的方式查询。
4、检查LIst、Map等集合对象是否有使用后,未清除的问题,List、Map等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。
5、检查对大文件的读取是否采用类nio的方式。
java异常常见面试问题的更多相关文章
- Java异常的面试问题及答案-Part 1
本文由 ImportNew - 韩远青 翻译自 Journaldev. Java提供了一个健壮的.面向对象的方法来处理出现异常,称为Java异常处理.我以前写过一篇长文章来介绍Java异常处理,今天我 ...
- Java集合类常见面试知识点总结
微信公众号[Java技术江湖]一位阿里Java工程师的技术小站 Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾. 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java ...
- Java学习、面试、求职、干货资源精品合集
本系列文章整合了本号发表和转载过的,有关Java学习.进阶.面试.做项目.求职经验等方面的文章,希望对想要找工作,以及正在找工作的你,能够有所帮助. 原创Java学习专题文章: 如何才能够系统地学习J ...
- java异常面试常见题目
在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它 ...
- java中异常的面试
https://blog.csdn.net/qq_36523638/article/details/79363652 1) Java中的检查型异常和非检查型异常有什么区别? 这又是一个非常流行的Jav ...
- Java面试题集(七)--Spring常见面试问题【重要】
以下为spring常见面试问题: 1.什么是Spring框架?Spring框架有哪些主要模块? Spring框架是一个为Java应用程序的开发提供了综合.广泛的基础性支持的Java平台. Spring ...
- Java 异常面试问题与解答
Java 提供了一种健壮且面向对象的方法来处理称为 Java异常处理的异常情况. 1. Java中的异常是什么? 异常是在程序执行期间可能发生的错误事件,它会破坏其正常流程.异常可能源于各种情况,例如 ...
- 常见 Java 异常解释(恶搞版)
常见 Java 异常解释:(译者注:非技术角度分析.阅读有风险,理解需谨慎o(╯□╰)o) java.lang ArithmeticException 你正在试图使用电脑解决一个自己解决不了的数学问题 ...
- 【译】常见 Java 异常解释(恶搞版)
常见 Java 异常解释:(译者注:非技术角度分析.阅读有风险,理解需谨慎o(╯□╰)o) java.lang ArithmeticException 你正在试图使用电脑解决一个自己解决不了的数学问题 ...
随机推荐
- 回滚 - 每天5分钟玩转 Docker 容器技术(141)
kubectl apply 每次更新应用时 Kubernetes 都会记录下当前的配置,保存为一个 revision(版次),这样就可以回滚到某个特定 revision. 默认配置下,Kubernet ...
- 厉害了!阿里安全图灵实验室在ICDAR2017 MLT竞赛刷新世界最好成绩
近日,阿里安全图灵实验室(Alibaba Turing Lab)的ATL Cangjie OCR算法在ICDAR2017的MLT(Competition on Multi-lingual scene ...
- Java微服务对UTC时间格式的处理
一.背景 先说一下为什么要使用UTC时间.开发一个全球化的系统,服务端(Java微服务)集中部署在同一个地方,用户在全球通过浏览器.手机客户端访问.不同地区的时区是不一样的,同一个时间戳,不同的用户看 ...
- vue-cli工具搭建vue-webpack项目
1.安装node环境 下载地址 https://nodejs.org/en/download/ node -v 安装成功后在命令行查看node版本 npm-v 安装成功后在命令行查看npm版本 ...
- 【Unity3D与23种设计模式】享元模式(Flyweight)
GoF中定义: "使用共享的方式,让一大群小规模对象能更有效地运行" 享元模式一般应用在游戏角色属性设置上 游戏策划需要通过"公式计算"或者"实际测试 ...
- PHP方法实现1-9数列中添加‘+’,‘-’或'',使和为100,并输出数列
今天收到个题目:编写一个在1,2,3,4,5,6,7,8,9(顺序不能变)数字之间插入 + 或- 或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性.例如 1+2+34-5+67-8+9 ...
- 员工选票系统-java
Yuangong.java package com.toupiao; public class Yuangong { private String name; private int piao; pu ...
- 20165226 学习基础和C语言基础调查
心得体会 驱动迭代 学习是一个老师与学生互动的过程,二者关系又恰如健身教练与学员,在进行基础知识的培训后还需借助工具加强相关方面的训练.学习提升的过程离不开学生在实践中发现问题并在老师的帮助下解决问题 ...
- 关于脱离laravel框架使用Illuminate/Validation验证器
1.关于Illuminate/Validation验证器 Validation 类用于验证数据以及获取错误消息. github地址:github.com/illuminate/validation 文 ...
- 关于html文档的规范
1. <!DOCTYPE html> 告诉浏览器该文档使用哪种html或xhtml的规范 2. 元数据中的X-UA-Compatible <meta http-equiv=" ...