当前位置: 首页 > backend >正文

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 教程】
1Openlayers 【入门教程】 - 【源代码+示例 300+】
2Leaflet 【入门教程】 - 【源代码+图文示例 150+】
3MapboxGL【入门教程】 - 【源代码+图文示例150+】
4Cesium 【入门教程】 - 【源代码+综合教程 200+】
5threejs【中文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道
1Java面试题及详细答案120道(01-20)
2Java面试题及详细答案120道(21-40)
3Java面试题及详细答案120道(41-60)
4Java面试题及详细答案120道(61-80)
5Java面试题及详细答案120道(81-100)
6Java面试题及详细答案120道(5101-120)
http://www.xdnf.cn/news/16267.html

相关文章:

  • 计算机网络(第八版)— 第2章课后习题参考答案
  • 机器学习中knn的详细知识点
  • 【面试场景题】外卖点餐系统设计思路
  • Flink 自定义类加载器和子优先类加载策略
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-评论用户时间占比环形饼状图实现
  • 编程语言Java——核心技术篇(三)异常处理详解
  • Springboot+activiti启动时报错XMLException: Error reading XML
  • 深度学习day02--神经网络(前三节)
  • Elasticsearch-8.17.0 centos7安装
  • Ubuntu 环境下创建并启动一个 MediaMTX 的 systemd 服务
  • 栈与队列:数据结构核心解密
  • 链表反转算法详解
  • Fluent自动化仿真(TUI命令脚本教程)
  • springboot(3.4.8)整合mybatis
  • 【图像理解进阶】如何对图像中的小区域进行细粒度的语义分割?
  • WAIC2025预告|英码深元AI一体机将亮相华为昇腾展区,以灵活部署的能力赋能行业智能化转型
  • Nginx简单介绍
  • Java-Properties类和properties文件详解
  • 图论:最小生成树
  • classgraph:Java轻量级类和包扫描器
  • linux C — udp,tcp通信
  • 【Chrome】下载chromedriver的地址
  • 深入解析浏览器存储方案:Cookie、localStorage和sessionStorage特性与应用
  • GPU 服务器ecc报错处理
  • Java排序算法之<冒泡排序>
  • 单片机(STM32-ADC模数转换器)
  • 优思学院|QC七大手法之一的检查表应如何有效使用?
  • CSS 盒子模型学习版的理解
  • 数据结构 二叉树(1)
  • yarn在macOS上的安装与镜像源配置:全方位指南