Java基础面试题(8)

106.请说一下递归的概念(*)?

        递归是计算机的重要概念,就是在过程或函数里调用自身,以达到能使程序更加简洁、清晰。

107.什么是异常处理机制(*)?

        异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。

108.异常对象的生成的两种方式(*)?

        由虚拟机自动生成:程序运行过程中,虚拟机检测到程序发生了问题,如果在当前代码中没有找到相应的处理程序,就会在后台自动创建一个对应异常类的实例对象并抛出——自动抛出。

        由开发人员手动创建:Exception exception = new ClassCastException();——创建 好的异常对象不抛出对程序没有任何影响,和创建一个普通对象一样。

109.异常的抛出机制(*)?

        如果一个方法内抛出异常,该异常对象会被抛给调用者方法中处理

        如果异常没有在调用者方法中处理,它继续被抛给这个调用方法的上层方法。这个过程将一直继续下去,直到异常被处理。

        这一过程称为捕获(catch)异常。 如果一个异常回到 main()方法,并且 main()也不处理,则程序运行终止。

110.异常体系结构?

        Java 标准库内建了一些通用的异常,这些类以 Throwable 为顶层父类。 Throwable 又派生出 Error 类Exception 类

        错误:Error 类以及它的子类的实例,代表了 JVM 本身的错误。错误不能被程序员通过代码处理,Error 很少出现。因此,程序员应该关注 Exception 为父类的分支下的各种异常类。

        异常:Exception 以及它的子类,代表程序运行时发生的各种不期望发生的事件。可以被 Java 异常处理机制使用,是异常处理的核心。

111.Error 和 Exception 的区别(***)?

        Error 和 Exception 都有一个共同的根类是 Throwable 类。

        Error 是系统中的错误,程序员是不能改变的和处理的,一般是指与虚拟机相关的问题, 对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误, 建议让程序终止。因此我们编写程序时不需要关心这类错误。

        Exception,也就是我们经常见到的一些异常情况,表示程序可以处理的异常,可以捕 获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止 异常。

112.Java 异常的分类(*)?

        Java 的异常从广义上分为检查异常(checked exceptions)非检查的异常(unchecked exceptions)

        检查异常: 编译器要求你必须处置的异常。也就是说,你代码还没运行呢,编译器 就会检查你的代码,会不会出现异常,要求你对可能出现的异常必须做出相应的处理。

        非检查异常:编译器不要求强制处置的异常,虽然你有可能出现错误,但是编译器不会在编译的时候检查。

Java 的异常从狭义上分为运行时异常编译期异常

        运行时异常:是 RuntimeException 类及其子类异常,这些异常是非检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该 从逻辑角度尽可能避免这类异常的发生。

        编译期异常:是 RuntimeException 以外的异常,类型上都属于 Exception 类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。

        检查异常 = 编译期异常;非检查异常 = 运行时异常 + Error;

113.常见的异常有哪些?

java.lang.RuntimeException: 运行时异常

        ClassCastException: 类类型转换异常,当试图将对象强制转换为不是实例的子类时, 抛出该异常;

        ArrayIndexOutOfBoundsException: 数组下标越界异常,当你使用不合法的索引访问数 组时会抛出该异常;

        NullPointerException: 空指针异常,通过 null 进行方法和属性调用会抛出该异常;

        ArithmeticException: 算术运算异常,除数为 0,抛出该异常;

        NumberFormatException: 数字转换异常,当试图将一个 String 转换为指定的数字类 型,而该字符串确不满足数字类型要求的格式时,抛出该异常;

        InputMismatchException: 输入不匹配异常,输入的值数据类型与设置的值数据类型不 能匹配。

java 编译时异常:

        SQLException: SQL 异常,提供有关数据库访问错误或其他错误的信息的异常;

        IOExeption: 输入输出异常,表示发送了某种 I/O 异常的信号。

        FileNotFoundException: 文件找不到异常,通常是两种情况:1、系统找不到指定的路 径 2、拒绝访问(指定的是目录时,就会报拒绝访问异常)

        EOFException: 文件已结束异常,抛出 EOFException 一定是因为连接断了还在继续 read;

java.lang.ClassNotFoundException: 类找不到异常

        当我们通过配置文件去查找一个 类的时候,如果配置路径写错,就会抛出该异常,比如:web.xml 文件中根本就不存在该类 的配置或者配置的路径写错;(比较常见)

114.try...catch...finally 的作用(***)?

        try 块中放可能发生异常的代码。

        catch 块用于捕获并处理一个特定的异常,catch 块可以有多个;

        finally 块无论异常是否发生,异常是否匹配被处理,都会执行,主要做一些清理工作, 比如释放资源; try 必须有,catch 和 finally 都是可选的;但是 try 不能单独存在,至少要和 catch 或 finally 其中一个结合使用;

115.try...catch...finally 和 throws 处理异常的区别(*)?

         try...catch...finally 是在方法内部处理异常,通过统一的异常处理方案;

        throws 是方法本身不知道如何处理这样的异常,或者说让调用者处理更好,调用者需要 为可能发生的异常负责。

116.throws 和 throw 的区别(***)?

        throws 定义在方法的声明中,表示调用该方法可能出现一个或多个异常,由该方法的调用者来处理;throws 后面跟的是一个或多个异常类型,让它的使用者知道需要捕获的异常的类型; throws 表示出现异常的一种可能性,并不一定会发生这种异常。

        throw 定义在方法内部,表示方法体内,表示抛出异常,由方法体内的语句处理;throw 是 具体向外抛出异常的动作,该语句的后面必须是一个异常对象; 执行 throw 一定抛出了某种异常。

        两者都是消极处理异常的方式,只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

117.什么是异常链化(*)?

        异常的链化可以将多个模块的异常串联起来,使得异常信息不会丢失。实现方式:以一个异常对象为参数构造新的异常对象。

118.finally 和 return 代码阅读面试题(***)  规则?

        在 try 块中即便有 return,break,continue 等改变执行流的语句,finally 也会执行。

        finally 中的 return 会覆盖 try 或者 catch 中的返回值。

        finally 中的 return 会抑制(消灭)前面 try 或者 catch 块中的异常 finally 中的异常会覆盖(消灭)前面 try 或者 catch 中的异常

119.finally 的使用注意事项(***)?

        不要在 finally 中使用 return。

        不要在 finally 中抛出异常。

        减轻 finally 的任务,不要在 finally 中做一些其它的事情,finally 块仅仅用来释放资源是最合适的。 尽量将所有的 return 写在函数的最后面,而不是 try ... catch ... finally 中。

120.final,finally 和 finalize 的比较(***)?

        final 修饰类,类不能被继承;final 修饰方法,方法不能被重写;final 修饰变量,变 量不能被修改。

        finally 是异常语句块的一部分,无论是否有异常,都会被执行。

        finalize 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此 方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/273270.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

centos破解root密码以及如何防止他人破解root密码

目录 破解root密码 服务器重启 1.再重启页面上下选择第一个按e进入内核编辑模式 2.找到linux16开头的一行,光标移动到最后添加 init/bin/sh Ctrlx 保存 3.进入单用户模式 4.重新挂在根分区 5.关闭selinux 6.更新密码 passwd 7.在根分区下面创建一个隐藏文件…

【设计模式】-工厂模式

工厂模式是一种创建型设计模式,它提供了一种在不指定具体类的情况下创建对象的方法。工厂模式的核心思想是将对象的创建与使用分离,降低系统的耦合度,使系统更加灵活、可扩展。 工厂模式主要分为三种类型:简单工厂模式、工厂方法…

CLIP解读

1、引言 在计算机视觉领域,通常需要经过训练模型来实现对预定类别目标预测(如分类、检测等任务),但是这种形式会限制模型的通用性。比如我们训练完了一个猫狗分类模型,如果现在希望识别一只老虎,那么原来训…

Java基础-lambda表达式

lambda表达式 前言前置知识λ小故事函数式编程起源: λ演算法 概念Lambda && 匿名类无参类型的简写带参函数的简写 简写的依据自定义函数接口lambda && 匿名类JVM层面区别匿名内部类实现Lambda表达式实现推论,this引用的意义 lambda && 集合 前言 函数…

C++_day6:继承、多态

1.封装一个动物的基类,类中有私有成员:姓名,颜色,指针成员年纪 再封装一个狗这样类,共有继承于动物类,自己拓展的私有成员有:指针成员:腿的个数(整型 int count&#xf…

arcgis 点连接到面(以地级市图层为例)

地级市图层进行“点到面”的连接,并输出 在点击地级市图层,右击——连接和关联——连接 选择基于空间位置的另一图层数据,文件选择上面输出并添加的图层文件,进行“点到面”的连接,可依据新需求选择平均值&#xff0c…

upload-labs-pass01

1.安装好环境进入关卡(记得打开小皮) 2.可以看到第一关是要求上传图片,但是同时限制了图片类型,那么如果我们将木马写入图片,但是类型又不在白名单,就要想办法绕过 3.可以看到这里的要求是有check&#xff…

1.中医学习-总论

目录 1.为什么要学中医 2.什么是中医 介绍 中医例子1: 中医例子2: 中医最高境界“大道至简” 中医讲究的是本质 中医核心:阴阳、表里、寒热、虚实 ​编辑医不叩门 3.阴阳 1.一天中的阴阳 2.一年中的阴阳 3.阴阳之间的关系 4.阴阳四季的变化 …

使用exe4j将java项目打包为exe文件(包含普通maven项目打jar包)

目录 背景实操普通maven项目打jar包手动构建修改pom文件 使用exe4j工具官网下载配置 注意事项(锦囊)jdk11没有jre文件夹生成独立的jre文件夹🌂经雨者,愿为人遮风挡雨(jdk11直接生成的jre不行)指定环境 过程…

PostgreSQL中vacuum 物理文件truncate发生的条件

与我联系: 微信公众号:数据库杂记 个人微信: iiihero 我是iihero. 也可以叫我Sean. iiheroCSDN(https://blog.csdn.net/iihero) Sean墨天轮 (https://www.modb.pro/u/16258) 数据库领域的资深爱好者一枚。 水木早期数据库论坛发起人 db2smth就是俺&am…

牛客题霸-SQL入门篇(刷题记录二)

本文基于前段时间学习总结的 MySQL 相关的查询语法,在牛客网找了相应的 MySQL 题目进行练习,以便加强对于 MySQL 查询语法的理解和应用。 以下内容是牛客题霸-SQL入门篇剩余的第 21-39 道题目的 SQL 代码答案。 由于涉及到的数据库表较多,因…

通过调整报文偏移解决CAN应用报文丢帧或周期过长问题

偏移原理 报文很多都是周期性发送的,但是如果每条报文都以一开始作为开始计时的时间点,也就是一开始就发送第一条报文,可能会导致CAN堵塞,导致丢帧或者某些报文某一时刻周期过长,就像下图这样,同一时刻CAN…

RVA和FOA转换---三

文章目录 修改初始值RVA和FOA转换RVAFOARVA和FOA的关系 本次内容包含如何修改程序中的初始值,和如何转换内存和文件的地址。 修改初始值 问题: 我们写了一个程序,可以输出一个结果,那么我们可以通过修改PE文件来改变这个输出结果…

数据结构与算法Bonus-KNN问题的代码求解过程

一、问题提出 (一)要求 1.随机生成>10万个三维点的点云,并以适当方式存储 2.自行实现一个KNN算法,对任意Query点,返回最邻近的K个点 3.不允许使用第三方库(e.g.flann,PCL,opencv)! 4.语言任选(推荐…

【JS逆向学习】猿人学第六题 js混淆 回溯

逆向目标 网址:https://match.yuanrenxue.cn/match/6接口:https://match.yuanrenxue.cn/api/match/6参数:payload(m、q) 逆向过程 老规矩,先来分析网络请求,加密的地方一目了然,没什么可多说的&#xff…

数目之差

解法一&#xff1a; 显然只需让多的在限度内最多即可 #include<iostream> #include<algorithm> using namespace std; #define endl \n void solve() {int n, k, num0 0, num1 0;cin >> n >> k;string s;cin >> s;for (int i 0; i < s.s…

【Paper Reading】6.RLHF-V 提出用RLHF的1.4k的数据微调显著降低MLLM的虚幻问题

分类 内容 论文题目 RLHF-V: Towards Trustworthy MLLMs via Behavior Alignment from Fine-grained Correctional Human Feedback 作者 作者团队&#xff1a;由来自清华大学和新加坡国立大学的研究者组成&#xff0c;包括Tianyu Yu, Yuan Yao, Haoye Zhang, Taiwen He, Y…

upload-labs 0.1 靶机详解

下载地址https://github.com/c0ny1/upload-labs/releases Pass-01 他让我们上传一张图片&#xff0c;我们先尝试上传一个php文件 发现他只允许上传图片格式的文件&#xff0c;我们来看看源码 我们可以看到它使用js来限制我们可以上传的内容 但是我们的浏览器是可以关闭js功能的…

【Spring MVC】Spring MVC拦截器(Interceptor)

目录 一、拦截器介绍 二、拦截器 Interceptor 定义 2.1 HandlerInterceptor接口 2.2 Spring MVC中提供的一些HandlerInterceptor接口实现类 1、AsyncHandlerInterceptor 2、WebRequestInterceptor 3、MappedInterceptor 4、ConversionServiceExposingInterceptor 三、拦…

《我的AUTOSAR之路》ECUM(二) 唤醒处理

ECUM唤醒 1 EcuM 唤醒源2 EcuM 唤醒源配置3 Can 通道唤醒源调用解析1 EcuM 唤醒源 AUTOSAR 唤醒过程包含的步骤 检查唤醒源和上报唤醒时间唤醒源保护唤醒过程是独立于 EcuM 休眠阶段的,但是唤醒时间可以用于休眠阶段 在整个 Ecu 所有阶段,唤醒事件都可以存在唤醒不单单指 Ecu …
最新文章