Java高频面试题1:Java SE

一、Java概述

1. Java语言的特点?

  • 面向对象:封装、继承、多态。
  • 跨平台:通过JVM实现“一次编写,到处运行”。
  • 内存管理:自动垃圾回收(GC),避免手动内存管理。
  • 多线程:内置多线程支持,通过Thread类和Runnable接口实现。

2. JVM、JDK、JRE的区别?

组件描述包含内容
JVMJava虚拟机,负责执行字节码解释器、即时编译器(JIT)
JREJava运行时环境JVM + 核心类库(如java.lang
JDKJava开发工具包JRE + 编译器(javac)、调试工具等

二、基础语法

3. Java基本数据类型有哪些?

  • 数值型byteshortintlong(整数);floatdouble(浮点数)。
  • 字符型char
  • 布尔型boolean

4. 自动拆箱与装箱?

  • 装箱:基本类型 → 包装类(如intInteger)。
  • 拆箱:包装类 → 基本类型(如Integerint)。
  • 缓存机制Integer缓存范围为-128~127,超出范围会创建新对象。

三、面向对象

5. 面向对象的三大特性?

  • 封装:数据和方法绑定,通过访问修饰符(publicprivate等)控制访问。
  • 继承:子类复用父类属性和方法,使用extends关键字。
  • 多态:父类引用指向子类对象,运行时动态决定调用的方法。

6. 抽象类与接口的区别?

特性抽象类接口
实例化不能直接实例化不能直接实例化
方法可包含抽象和非抽象方法所有方法均为抽象方法
继承单继承多实现

四、字符串处理

7. String、StringBuilder、StringBuffer的区别?

特性StringStringBuilderStringBuffer
不可变性不可变(线程安全)可变(非线程安全)可变(线程安全)
性能拼接效率低(生成新对象)高(直接操作数组)高(线程安全但稍慢)
场景常量字符串单线程下频繁拼接多线程下频繁拼接

8. String的intern()方法作用?

  • 将字符串对象放入字符串常量池。若池中已存在相同内容的字符串,则返回池中的引用;否则,将当前对象加入池中并返回。

9. String的不可变性有什么好处?

  • 安全性(如作为HashMap的键)。
  • 字符串常量池优化内存。
  • 哈希值固定,提高哈希表效率。

五、异常处理

10. 异常的分类?

  • Error:JVM错误(如OutOfMemoryError),程序无法处理。
  • Exception
    • 编译时异常(Checked):需显式处理(如IOException)。
    • 运行时异常(Unchecked):无需显式处理(如NullPointerException)。

11. finally块的执行顺序?

  • try中的return语句会先暂存返回值,再执行finally,最后返回暂存值。
  • finally中也有return,会覆盖try中的返回值。

六、IO与网络

12. BIO、NIO、AIO的区别?

模型阻塞性核心机制适用场景
BIO同步阻塞线程 per 连接连接数少且长连接
NIO同步非阻塞通道 + 选择器连接数多且短连接
AIO异步非阻塞事件 + 回调高并发、长连接

13. 序列化的作用?

  • 将对象转换为字节流,用于存储或网络传输。需实现Serializable接口,transient关键字可忽略某些字段。

14. 字节流和字符流的区别?

  • 字节流(如FileInputStream)处理二进制数据,字符流(如FileReader)处理文本数据。
  • 字符流内部通过字节流实现,自动处理编码转换。

七、多线程与并发

15. 线程的生命周期?

  • 新建(New) → 就绪(Runnable) → 运行(Running) → 阻塞(Blocked/Waiting/Timed Waiting) → 终止(Terminated)。

16. wait()和sleep()的区别?

  • wait():释放锁,需在synchronized块中调用。
  • sleep():不释放锁,可在任意位置调用。

八、 反射与注解

17. 什么是反射?反射的应用场景有哪些?

  • 反射允许在运行时动态获取类信息、调用方法、访问字段。
  • 应用场景:框架开发(如Spring)、单元测试、动态代理。

18. 常见的Java注解有哪些?

  • 内置注解:@Override(重写方法)、@Deprecated(过时)、@SuppressWarnings(抑制警告)。
  • 元注解:@Retention(生命周期)、@Target(作用目标)。
  • 框架注解:@Component(Spring)、@Autowired(依赖注入)。

九、其他高频问题

19. ==和equals的区别?

  • ==:比较引用地址(基本类型比较值)。
  • equals():默认比较引用地址,常被重写为比较内容(如String)。

20. 为什么重写equals必须重写hashCode?

  • 哈希表(如HashMap)通过hashCode定位存储位置,若equals相等但hashCode不等,会导致数据不一致。

21. 泛型的作用?

  • 类型安全:编译期检查类型错误。
  • 代码复用:减少强制类型转换,提高可读性。

十、代码实战

22. 以下代码输出什么?

Integer a = 127;
Integer b = 127;
Integer c = 128;
Integer d = 128;
System.out.println(a == b); // true(缓存范围内)
System.out.println(c == d); // false(超出缓存范围)

23. finally块中的return会覆盖try中的return吗?

public static int test() {try {return 1;} finally {return 2; // 最终返回2}
}

总结:以上题目覆盖Java基础核心知识点,建议结合实际项目经验,重点掌握String特性、异常处理、多态、IO模型等模块。面试时需结合代码示例说明原理,展示对底层机制的理解。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于RapidIO接口的DSP+GPU工业AI实时计算解决方案

基于RapidIO接口的DSPGPU工业AI实时计算解决方案是一种面向高性能、低延迟工业应用的异构计算架构,适用于工业自动化、机器视觉、预测性维护、机器人控制等场景。以下是该方案的核心设计思路和技术要点: 1. 方案背景与目标 工业需求: 工业…

SQL DB 数据类型

SQL DB 数据类型 引言 在数据库管理系统中,数据类型是定义和存储数据的方式。SQL(结构化查询语言)数据库中的数据类型决定了数据的存储格式、大小、取值范围以及如何处理数据。合理选择和使用数据类型对于确保数据库性能、数据完整性和应用程序的准确性至关重要。 SQL 数…

常见电源模块设计

目录 1. 5V电源模块 2. 3.3V电源模块 3. 1.9V电源模块 4. 220V转12V电源模块 1. 5V电源模块 参考电路 电路说明: 这个电路采用的是稳压芯片78L05,我是用的12V的电源模块转成为5V,为后续的供电。 2. 3.3V电源模块 参考电路: 电路说明…

python操作es

1、常用操作 ### 创建索引 bash curl -u elastic:123 -X PUT -H "Content-Type: application/json" -d mapping.json "http://0.0.0.0:9200/ai_kg_extraction_new_lower_tag_index" ### 删除索引 bash curl -u elastic:123 -X DELETE "http://0.0…

记一个.NET AOT交叉编译时的坑

记一个.NET AOT交叉编译时的坑 背景: 使用.NET9开发的Avalonia项目需要部署到Linux-arm64 踩坑: 根据官方AOT交叉编译文档配置后执行打包 dotnet publish -r linux-arm64提示error : The PrivateSdkAssemblies ItemGroup is required for _ComputeA…

【Linux篇】探索进程地址空间:计算机背后的虚拟世界

进程地址空间的奥秘:让你理解程序如何在计算机中生存 一. 程序地址空间1.1 基本概念1.2 虚拟内存管理1.3 为什么存在虚拟地址空间1.3.1 意义 2. 最后 本文将介绍进程地址空间的基本概念与结构,帮助读者理解操作系统如何管理和分配内存。进程地址空间指的…

17查询文档的方式

目录 1.鼠标放在你要查询的地方或者选中,按FnF1 2Assistant文档 3帮助菜单界面 1.鼠标放在你要查询的地方或者选中,按FnF1 2Assistant文档 3帮助菜单界面 大家一定要有 查询文档 的意识!! 未来实际开发中,一定会用到很多的第三方库和框架的. 很可能用到的…

壹起航:引领中国工厂迈向全球市场的先锋

在全球化的浪潮中,中国工厂正积极寻求拓展海外市场的新机遇。面对激烈的国际竞争,如何脱颖而出,成为行业翘楚?壹起航凭借其深厚的行业积淀和创新的营销理念,为中国工厂提供了全方位的出海解决方案。 一、构建国际化外…

“数据导航仪”:企业迁移知识库如何赋能精准决策

在全球化与区域经济一体化的浪潮下,企业迁移已成为经济发展的重要现象。 无论是为了拓展市场、降低成本,还是为了寻找更好的政策环境,企业迁移都牵动着无数从业者的心。 然而,面对海量且分散的企业迁移信息,金融机构…

理解激活函数,多个网络层之间如何连接

1. 激活函数如何在两个层之间作用 如果不在两个层之间添加激活函数,模型将无法学习非线性关系,表现出像线性模型一样的局限性。 LeakyReLU(0.2) 是一个激活函数,它的作用是对每一层的输出进行非线性转换。激活函数通常在神经网络中用于增加网…

红帽Linux怎么重置密码

完整流程 ●重启操作系统,进入启动界面 ●然后按进入选择项界面 ●找到linux单词开头的那一行,然后移动到该行末尾(方向键移动或者使用键盘上的end),在末尾加入rd.break ●按ctrl x进入rd.break模式 ●在该模式下依次…

pycharm与python版本

python 3.6-3.9 pycharm 2021版本搭配最好 python 3.8 pycharm 2019版本搭配最好 pycharm各版本下载

Java系统集成AI大模型:是否需要训练模型及实现路径

越来越多的Java系统希望通过集成AI大模型能力来提升智能化水平。然而,许多开发者在面对这一任务时,常常会有一个疑问:是否需要训练AI大模型才能实现这一目标?本文将深入探讨这一问题,并提供详细的解决方案。 一、是否…

论文阅读笔记:Denoising Diffusion Implicit Models (3)

0、快速访问 论文阅读笔记:Denoising Diffusion Implicit Models (1) 论文阅读笔记:Denoising Diffusion Implicit Models (2) 论文阅读笔记:Denoising Diffusion Implicit Models &#xff08…

【Linux】Linux 系统启动流程详解

1. BIOS/UEFI 阶段 硬件自检(POST) BIOS/UEFI 执行硬件检查(内存、CPU、外设等)。若硬件异常,通过蜂鸣码或屏幕提示错误。 选择启动设备 按配置顺序(硬盘、U盘、网络等)寻找可引导设备。BIOS&a…

C++封装、继承、多态(虚函数)

目录 1、封装 2、继承 继承方式: (1)公有继承;public (2)保护继承;protected (3)私有继承;private 菱形继承: 同名隐藏? 含义…

蓝桥杯冲刺:一维前缀和

系列文章目录 蓝桥杯系列:一维前缀和 文章目录 系列文章目录前言一、暴力的写法:二、一维前缀和的模板: 具体实现: 三、具体例题:求和 1.题目参考:2.以下是具体代码实现: 总结 前言 上次我介绍…

使用UDP建立连接,会存在什么问题?

使用UDP建立连接,会存在可靠性、有序性、连接状态管理等方面的问题: 1、数据传输不可靠: UDP没有确认和重传机制,发送方发送数据后,不会等待接收方的确认消息。这意味着如果数据在传输过程中丢失,发送方不…

YOLOv5配置训练以及华为昇腾910B推理

参考文章: 保姆式yolov5教程,训练你自己的数据集 - 知乎 Windows 10|11下安装mmyolo-0.5.0版本 - 知乎 Ubuntu22.04安装教程&基于华为Ascend AI处理器的om模型atc转换环境安装_ubuntu安装atc工具-CSDN博客嵌入式AI---在华为昇腾推理自己的yolov5目标…

基于yolov11的汽车损伤检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv11的汽车损伤检测系统是一种先进的计算机视觉技术,旨在快速准确地识别汽车的各种损伤类型。该系统利用YOLOv11模型的强大性能,实现了对车辆损伤的精确检测与分类。 该系统能够识别的损伤类型包括裂纹(crack&#xff…