2020Java最新面试题整理

内容分享3周前发布
0 0 0

    目前市面上的面试题存在两大问题:第一,题目太旧好久没有更新了,还都停留在 2010 年之前的状态;第二,近几年 JDK 更新和发布都很快,Java 的用法也变了不少,加上 Java 技术栈也加入了许多新的框架,列如 Spring Boot、Spring Cloud 等,但类似的面试题却极少。

相比与这些问题,我的这些面试题具备以下优点:

披沙拣金提炼出每个 Java 模块中最经典的面试题;

答案准确,每个题目都是我仔细校对过的;

接近最真实的企业面试,题目实用有效果;

难懂的题目,我加入了代码解析和原理分析。

Java 基础

1.JDK和JRE有什么区别

JDK:Java Development Kit 的简称,java开发工具包,提供了java开发环境和运行环境

JRE:Java Runtime Environment 的简称,java运行环境,为java提供了运行环境

==和equals的区别

==解读

对于基本类型和应用类型==的作用和效果是不同的,

基本类型:比较的是值是否一样

引用类型:比较的是引用是否一样

代码示例:

2020Java最新面试题整理

equals解读:

 equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。看下面的代码就清楚了。

第一来看默认情况下 equals 比较一个有一样值的对象,代码如下:

2020Java最新面试题整理

2020Java最新面试题整理

总结 :== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是许多类重新了 equals 方法,列如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。

final 在 java 中有什么作用?

final修饰的类叫最终类,该类不能被继承

final修饰的方法不能被重写

final修饰的变量叫常量,常量必须初始化,初始化之后值不能被修改

java 中的 Math.round(-1.5) 等于多少?

等于 -1,由于在数轴上取值时,中间值(0.5)向右取整,所以正 0.5 是往上取整,负 0.5 是直接舍弃。

String 属于基础的数据类型吗?

String 不属于基础类型,基础类型有 8 种:byte、boolean、char、short、int、float、long、double,而 String 属于对象。

如何将字符串反转

使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。

代码如下:

2020Java最新面试题整理

String类的常用方法有哪些?

indexOf():返回指定字符串索引

charAt():返回指定索引处的字符

replace():字符串替换

trim():去除字符串两端的空白

split():分割字符串,返回一个分割后的字符串数组

getBytes():返回字符串的byte类型数组

length():返回字符串长度

toLowerCase():将字符串转换为小写字母

toUpperCase():将字符串转换为大写字母

substring():截取字符串。

equals():字符串比较。

抽象类必须有抽象方法嘛?

不需要,抽象类不必定要有抽象方法

普通类和抽象类的区别

普通类不能包含抽象方法,抽象类可以包含抽象方法

抽象类不能直接实例化,普通类可以直接实例化

抽象类可以有final修饰吗?

不能,定义抽象类就是让其他类继承的,如果定义为final该类就不能被继承,这样就会彼此产生矛盾,所以final不能修饰抽象类

接口和抽象类有哪些区别?

实现:抽象类的子类用extends来继承,接口用implements来实现

构造函数:抽象类可以有构造函数,接口不能有

实现数量:类可以有多个接口;但只能继承一个抽象类

访问修饰符:接口中的方法默认使用public修饰;抽象类中的方法可以是任意修饰符

 Java 中 IO 流分为几种?

按功能来分:输入流(input)、输出流(output)。

按类型来分:字节流和字符流。

字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...