Java面试题及详细答案120道之(001-020)
《前后端面试题
》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux… 。
文章目录
- 一、本文面试题目录
- 1. JDK和JRE的区别是什么?
- 2. 什么是Java中的回调机制?请举例说明。
- 3. 两个对象的hashCode()相同,则equals()也一定为true,对吗?
- 4. final在java中有什么作用?
- 5. java中的Math.round(-1.5)等于多少?
- 6. 面向对象的特征有哪些方面?
- 7. 访问修饰符public, private, protected,以及不写(默认)时的区别?
- 8. String是最基本的数据类型吗?
- 9. float f = 3.4;是否正确?
- 10. short s1 = 1; s1 = s1 + 1;有错吗? short s1 = 1; s1 += 1;有错吗?
- 11. Java有没有goto?
- 12. int和Integer有什么区别?
- 13. Java中的main()方法可以返回任何数据吗?
- 14. 什么是Java Packages?其意义是什么?
- 15. 我们可以声明一个抽象类,但是没有任何抽象方法吗?
- 16. Java中的抽象类和接口有什么区别?
- 17. 接口对抽象类的性能影响是什么?
- 18. Java中导入包时,其子包是否会被导入?
- 19. 类中的main方法可以声明为private?
- 20. 我们能不能通过引用向函数传递参数?
- 二、120道面试题目录列表
一、本文面试题目录
1. JDK和JRE的区别是什么?
- 答案:JDK是Java开发工具包,包含了JRE和一系列开发工具,是Java开发的核心,面向Java开发者。JRE是Java运行时环境,是Java程序运行的基础,确保Java程序能在不同平台运行,面向Java程序使用者。即JDK包含了JRE,JRE是JDK的一部分。
2. 什么是Java中的回调机制?请举例说明。
答案:
回调机制:一个对象(A)将自身的引用传递给另一个对象(B),B在适当的时候调用A的方法(回调方法),实现反向通信。
示例(异步回调):
// 回调接口
interface Callback {void onComplete(String result);
}// 服务类(B)
class DataService {// 接收回调对象,处理完成后调用回调方法public void fetchData(Callback callback) {new Thread(() -> {// 模拟耗时操作try { Thread.sleep(1000); } catch (InterruptedException e) {}callback.onComplete("数据加载完成"); // 回调}).start();}
}// 客户端(A)实现回调接口
public class Client implements Callback {public void start() {DataService service = new DataService();service.fetchData(this); // 传递自身引用}@Overridepublic void onComplete(String result) {System.out.println(result); // 接收回调结果}public static void main(String[] args) {new Client().start(); // 输出:数据加载完成(1秒后)}
}
3. 两个对象的hashCode()相同,则equals()也一定为true,对吗?
- 答案:不对。hashCode()返回对象的哈希码值,用于哈希表等数据结构中快速定位对象。同一个对象多次调用hashCode()方法应返回相同的值,但不同对象可能会有相同的哈希码(哈希冲突),所以两个对象hashCode()相同,不意味着equals()一定为true。
4. final在java中有什么作用?
- 答案:final是修饰符,作用如下:
- 修饰类:类不能被继承,如Java标准库中的String类。
- 修饰方法:方法不能被子类重写,防止关键业务逻辑被子类改变。
- 修饰变量:变量成为常量,其值在初始化后不能再被修改。
5. java中的Math.round(-1.5)等于多少?
- 答案:结果是-1。Math.round()方法用于将浮点数四舍五入为最接近的整数,处理负数时采用“向零舍入”策略,即向着零的方向进行舍入。
6. 面向对象的特征有哪些方面?
- 答案:面向对象的特征主要有抽象、继承、封装和多态性。
- 抽象:将一类对象的共同特征总结出来构造类,包括数据抽象和行为抽象,只关注对象属性和行为,不关注细节。
- 继承:从已有类得到继承信息创建新类,提供继承信息的类是父类,得到继承信息的类是子类,继承让软件系统有延续性。
- 封装:把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口,隐藏实现细节,只向外界提供简单编程接口。
- 多态性:允许不同子类型的对象对同一消息作出不同响应,方法重载实现编译时多态性,方法重写实现运行时多态性。
7. 访问修饰符public, private, protected,以及不写(默认)时的区别?
- 答案:public修饰的成员在任何类中都能访问;private修饰的成员只能在本类中访问;protected修饰的成员在本类、同包子类及不同包的子类中能访问;不写访问修饰符时,默认为default,对于同一个包中的其他类相当于公开,对于不同包中的类相当于私有。
8. String是最基本的数据类型吗?
- 答案:不是。Java中的基本数据类型只有8个,即byte、short、int、long、float、double、char、boolean,String是引用数据类型。
9. float f = 3.4;是否正确?
- 答案:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型,会造成精度损失,需要强制类型转换,如float f = (float)3.4;或者写成float f = 3.4F;。
10. short s1 = 1; s1 = s1 + 1;有错吗? short s1 = 1; s1 += 1;有错吗?
- 答案:short s1 = 1; s1 = s1 + 1;有错,因为1是int类型,s1 + 1运算结果也是int型,需强制转换类型才能赋值给short型。short s1 = 1; s1 += 1;没错,s1 += 1相当于s1 = (short)(s1 + 1),有隐含的强制类型转换。
No. | 大剑师精品GIS教程推荐 |
---|---|
0 | 地图渲染基础- 【WebGL 教程】 - 【Canvas 教程】 - 【SVG 教程】 |
1 | Openlayers 【入门教程】 - 【源代码+示例 300+】 |
2 | Leaflet 【入门教程】 - 【源代码+图文示例 150+】 |
3 | MapboxGL 【入门教程】 - 【源代码+图文示例150+】 |
4 | Cesium 【入门教程】 - 【源代码+综合教程 200+】 |
5 | threejs 【中文API】 - 【源代码+图文示例200+】 |
11. Java有没有goto?
- 答案:goto是Java中的保留字,在目前版本的Java中没有使用。
12. int和Integer有什么区别?
- 答案:int是基本数据类型,Integer是int的包装类。从JDK 1.5开始引入自动装箱/拆箱机制,使得二者可以相互转换。例如Integer b = 3;是将3自动装箱成Integer类型;Integer c = 5; int d = c;是将Integer类型的c自动拆箱成int类型赋值给d。
13. Java中的main()方法可以返回任何数据吗?
- 答案:不能,main()方法的返回类型始终是void。
14. 什么是Java Packages?其意义是什么?
- 答案:Java Packages是为了更好地组织类而提供的包机制,用于区别类名的命名空间。其意义在于:
- 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
- 避免名字冲突,不同包中的类名可以相同,调用时通过包名区分。
- 限定访问权限,拥有包访问权限的类才能访问包中的类。
15. 我们可以声明一个抽象类,但是没有任何抽象方法吗?
- 答案:可以。但一旦一个类中含有一个抽象方法,那么该类必须声明为抽象类。
16. Java中的抽象类和接口有什么区别?
- 答案:
- 抽象类可以有任意范围的成员数据,也可以有非抽象方法;接口只能有静态、不能修改的成员数据,且所有方法都必须是抽象的。
- 抽象类是对类整体抽象,包括属性和行为;接口是对类局部(行为)抽象。
- 一个类只能扩展一个抽象类,但可以实现多个接口。
17. 接口对抽象类的性能影响是什么?
- 答案:与抽象类相比,接口性能较慢。一个类只能扩展一个抽象类,却能实现许多接口,随着接口在类中的实现,会给开发人员带来额外负担。
18. Java中导入包时,其子包是否会被导入?
- 答案:不会,开发者需要单独导入子包。
19. 类中的main方法可以声明为private?
- 答案:不能。Java中main方法必须是public,若为private,编译时不出错,但运行时会出错。
20. 我们能不能通过引用向函数传递参数?
- 答案:不能,只能通过引用将值传递给函数。
二、120道面试题目录列表
文章序号 | Java面试题120道 |
---|---|
1 | Java面试题及详细答案120道(01-20) |
2 | Java面试题及详细答案120道(21-40) |
3 | Java面试题及详细答案120道(41-60) |
4 | Java面试题及详细答案120道(61-80) |
5 | Java面试题及详细答案120道(81-100) |
6 | Java面试题及详细答案120道(5101-120) |