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

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.lryc.cn/news/599682.html

相关文章:

  • [Rust 基础课程]猜数字游戏-获取用户输入并打印
  • 不用电脑要不要关机?
  • 【Spring WebFlux】为什么 Spring 要拥抱响应式
  • OT82111_VC1:USB OTG音频解码器固件技术解析
  • c++注意点(12)----设计模式(生成器)
  • Promise的allSettled,all,race
  • 智能网关:物联网时代的核心枢纽
  • 在OpenMP中,#pragma omp的使用
  • 【Linux/Ubuntu】VIM指令大全
  • 如何搭建Linux环境下的flink本地集群
  • 为什么选择EasyGBS?
  • 《解锁前端数据持久化与高效查询:IndexedDB深度剖析》
  • vue3单页面连接多个websocket并实现断线重连功能
  • TDengine 转化函数 TO_TIMESTAMP 用户手册
  • 比特币技术简史 第八章:扩展性解决方案 - 闪电网络与隔离见证
  • 软件工程:软件需求
  • Ethereum:告别 personal API,拥抱 Geth 的独立签名器 Clef
  • CRM 系统:实现商机全流程管理的关键
  • Mkdocs相关插件推荐(原创+合作)
  • 力扣Hot100疑难杂症汇总
  • Java环境配置之各类组件下载安装教程整理(jdk、idea、git、maven、mysql、redis)
  • 如何序列化和反序列化动态 XmlElement ?
  • 【SSL证书校验问题】通过 monkey-patch 关掉 SSL 证书校验
  • Linux725 磁盘阵列RAID0 RAID1
  • [python][flask]Flask-Login 使用详解
  • win通过OpenSSL生成.ssh id_rsa密钥方法
  • 基于libhv实现的TCP Client Server支持同步,异步传输 (C++11)
  • QT开发技术【串口和C++20协程,实现循环发送、暂停、恢复、停止】
  • 上位机知识篇---Jetson Nano的深度学习GPU推理
  • TCP模型,mqtt协议01 day41