DukeDuke
主页
项目文档
技术文档
  • 单机版
  • 微服务
  • 代办项目
  • 优鲜项目
项目管理
关于我们
主页
项目文档
技术文档
  • 单机版
  • 微服务
  • 代办项目
  • 优鲜项目
项目管理
关于我们
  • 技术文档

    • 网络原理

      • 交换机
      • 路由器
      • TCP/IP协议
      • HTTP 与 HTTPS
    • 软件架构

      • 什么是软件架构
      • 分层架构
      • 微服务架构
      • 事件驱动架构
      • 领域驱动设计(DDD)
      • 架构图
      • 高并发系统
    • Vue3

      • Vue3简介
      • Vue3响应式系统
      • Vue3组合式API
      • Vue3生命周期
      • Vue3模板语法
      • Vue3组件系统
      • Vue3 路由系统
      • Vue3 状态管理
      • Vue3 性能优化
      • Vue3 TypeScript 支持
      • Vue3 项目实战
      • VUE 面试题大全
      • Node.js 安装
    • JAVA

      • JVM

        • 认识JVM
        • JVM类加载器
        • 运行时数据区
        • 执行引擎
        • 本地方法接口
        • 本地方法库
        • JVM垃圾回收
        • JVM性能监控
        • JVM调优
      • 设计模式
        • 单例模式
        • 工厂模式
        • 策略模式
        • 适配器模式
        • 建造者模式
        • 原型模式
        • 装饰器模式
        • 代理模式
        • 外观模式
        • 享元模式
        • 组合模式
        • 桥接模式
      • Java多线程

        • Java 线程基础详解
        • Java 线程池详解
        • Java ThreadLocal 详解
        • Java volatile 详解
        • Java 线程间通信详解
        • Java 线程安全详解
        • Java 线程调度详解
        • Java 线程优先级详解

        • Java 线程中断详解
        • Java 线程死锁详解
      • Java反射
      • Java 面试题

        • Java 基础概念面试题
        • Java 面向对象编程面试题
        • Java 集合框架面试题
        • Java 多线程与并发面试题
        • JVM 与内存管理面试题
        • Java I/O 与 NIO 面试题
        • Java 异常处理面试题
        • Java 反射与注解面试题
        • Java Spring 框架面试题
        • Java 数据库与 JDBC 面试题
        • Java 性能优化面试题
        • Java 实际项目经验面试题
        • Java 高级特性面试题
        • Java 面试准备建议
    • Python

      • Python简介
      • Python安装
      • Python hello world
      • Python基础语法
      • Python数据类型
      • Python数字
      • Python字符串
      • Python列表
      • Python元组
      • Python字典
      • Python日期时间
      • Python文件操作
      • Python异常处理
      • Python函数
      • Python类
      • Python模块
      • Python包
      • Python多线程
      • Python面向对象
      • Python爬虫
      • Django web框架
      • Python 面试题

        • Python 面试题导航
        • Python 基础概念
        • Python 面向对象编程
        • Python 数据结构
        • Python 高级特性
        • Python 框架
        • Python 性能优化
        • Python 项目经验
    • Spring

      • Spring
      • Springboot
      • Spring Security 安全框架
      • SpringBoot 中的事件详解
      • SpringBoot 中的定时任务详解
      • SpringBoot 自动装配原理与源码解释
    • Mybatis

      • Mybatis
      • Mybatis-Plus
    • 数据库

      • Redis

        • Redis简介
        • Redis(单机)安装
        • Redis配置
        • Redis数据结构
        • RDB、AOF 和混合持久化机制
        • Redis内存管理
        • Redis缓存一致性
        • Redis缓存穿透
        • Redis缓存击穿
        • Redis缓存雪崩
        • Redis Lua脚本
        • Redis主从复制
        • Redis哨兵模式
        • Redis集群
        • Redis数据分片
        • Redis CPU使用率过高
        • Redis面试题
      • MySQL

        • MySQL简介
        • MySQL安装
        • MySQL配置
        • MYSQL日常维护
        • MYSQL优化-慢查询
        • MYSQL优化-索引
        • MYSQL数据库设计规范
    • 消息队列

      • RocketMQ
      • Kafka
      • RabbitMQ
      • 消息队列面试题
    • 微服务

      • SpringCloud 微服务
      • Eureka 注册中心
      • Nacos 注册中心
      • Gateway 网关
      • Feign 服务调用
      • Sentinel 限流 与 熔断
      • Seata 分布式事务
      • CAP 理论
      • Redis 分布式锁
      • 高并发系统设计
    • ELK日志分析系统

      • Elasticsearch 搜索引擎
      • Logstash 数据处理
      • Kibana 可视化
      • ELK 实战
    • 开放API

      • 开放API设计
      • 开放API示例项目
    • 人工智能

      • 人工智能简介
      • 机器学习

      • 深度学习

      • 自然语言处理

      • 计算机视觉

        • CUDA与cuDNN详细安装
        • Conda 安装
        • Pytorch 深度学习框架
        • yolo 目标检测
        • TensorRT 深度学习推理优化引擎
        • TensorFlow 机器学习
        • CVAT 图像标注
        • Windows 下安装 CUDA、cuDNN、TensorRT、TensorRT-YOLO 环境
        • Windows10+CUDA+cuDNN+TensorRT+TensorRT-YOLO 部署高性能YOLO11推理
    • 大数据

      • 大数据简介
      • Hadoop 数据存储
      • Flume 数据采集
      • Sqoop 数据导入导出
      • Hive 数据仓库
      • Spark 数据处理
      • Flink 数据处理
      • Kafka 数据采集
      • HBase 数据存储
      • Elasticsearch 搜索引擎
    • 图像处理

      • 图像处理简介
      • 医学图像web呈现
      • 医学图像处理
      • 切片细胞分离问题
    • 服务器&运维

      • Linux 系统

        • Linux 系统管理
        • Linux 网络管理
        • Linux 文件管理
        • Linux 命令大全
      • Nginx Web 服务器

        • Nginx 安装 与 配置
        • Nginx 负载均衡
        • Nginx SSL证书配置
        • Nginx Keepalived 高可用
      • Docker 容器

        • Docker 简介
        • Docker 安装与配置
        • Docker 命令
        • Docker 部署 Nginx
        • Docker 部署 MySQL
        • Docker 部署 Redis
      • 服务器

        • 塔式服务器
        • 机架式服务器
        • 刀片服务器
      • Git 版本控制
      • Jenkins 持续集成
      • Jmeter 性能测试
      • Let's Encrypt 免费SSL证书
    • 简历

      • 项目经理简历
      • 开发工程师简历

Java 基础概念面试题

目录

  • Java 语言特性
  • 基本数据类型
  • String 类详解
  • 变量与常量
  • 运算符与表达式
  • 控制流程
  • 数组
  • 包与导入
  • 基础概念总结

Java 语言特性

1. 什么是 Java?它的特点是什么?

答案要点:

  • 面向对象的编程语言
  • 平台无关性(Write Once, Run Anywhere)
  • 自动内存管理
  • 强类型语言
  • 丰富的标准库
  • 安全性高

示例答案: "Java 是由 Sun Microsystems 开发的一种面向对象的编程语言,现在由 Oracle 维护。Java 的核心特点是平台无关性,通过 JVM(Java 虚拟机)实现'一次编写,到处运行'。Java 是强类型语言,编译时进行类型检查,减少了运行时错误。它提供了自动垃圾回收机制,简化了内存管理。Java 拥有丰富的标准库和第三方生态,支持多线程编程,内置安全机制。这些特性使得 Java 特别适合企业级应用开发。"

深入解析:

  • 平台无关性:Java 源代码编译成字节码,由 JVM 解释执行,实现了跨平台
  • 面向对象:支持封装、继承、多态三大特性
  • 自动内存管理:通过垃圾回收器自动回收不再使用的对象
  • 安全性:沙箱机制、字节码验证、安全管理器等多重安全保护
  • 多线程支持:内置多线程支持,简化并发编程

2. Java 的编译和运行过程是怎样的?

答案要点:

  • 源代码编写
  • 编译过程
  • 字节码生成
  • JVM 执行
  • 类加载过程

示例答案: "Java 的编译和运行过程分为几个阶段。首先编写 .java 源代码文件,然后使用 javac 编译器将源代码编译成 .class 字节码文件。字节码是平台无关的中间代码,包含了类、方法、字段等信息。运行时,JVM 通过类加载器加载字节码文件,进行字节码验证,然后通过解释器或 JIT 编译器执行。JIT 编译器会将热点代码编译成机器码,提高执行效率。整个过程体现了 Java '一次编写,到处运行'的设计理念。"

深入解析:

  • 编译阶段:javac 编译器进行语法检查、语义分析、生成字节码
  • 类加载:Bootstrap ClassLoader、Extension ClassLoader、Application ClassLoader
  • 字节码验证:确保字节码符合 Java 语言规范
  • 执行引擎:解释执行 + JIT 编译优化

3. JVM、JRE、JDK 的区别是什么?

答案要点:

  • JVM 的作用和组成
  • JRE 的组成和功能
  • JDK 的组成和功能
  • 三者之间的关系

示例答案: "JVM(Java Virtual Machine)是 Java 虚拟机,负责执行字节码,是 Java 跨平台的核心。JRE(Java Runtime Environment)是 Java 运行环境,包含 JVM 和 Java 标准库,用于运行 Java 程序。JDK(Java Development Kit)是 Java 开发工具包,包含 JRE 和开发工具(如编译器、调试器、文档生成器等),用于开发 Java 程序。关系是 JDK 包含 JRE,JRE 包含 JVM。开发时需要 JDK,运行程序时只需要 JRE。"

深入解析:

  • JVM:字节码执行引擎、内存管理、垃圾回收
  • JRE:运行时库、Java API、JVM
  • JDK:开发工具、编译器、调试器、JRE

基本数据类型

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

答案要点:

  • 8 种基本数据类型
  • 内存占用和取值范围
  • 包装类的作用
  • 自动装箱和拆箱

示例答案: "Java 有 8 种基本数据类型:byte(8 位)、short(16 位)、int(32 位)、long(64 位)、float(32 位)、double(64 位)、char(16 位)、boolean(1 位)。每种类型都有对应的包装类,如 Integer、Long 等。包装类提供了对象操作能力,支持 null 值,并且包含很多实用的静态方法。从 Java 5 开始支持自动装箱和拆箱,简化了基本类型和包装类之间的转换。在实际开发中,我通常使用基本类型处理数值计算,使用包装类处理可能为 null 的场景。"

深入解析:

类型大小取值范围默认值包装类
byte8 位-128 到 1270Byte
short16 位-32,768 到 32,7670Short
int32 位-2³¹ 到 2³¹-10Integer
long64 位-2⁶³ 到 2⁶³-10LLong
float32 位IEEE 7540.0fFloat
double64 位IEEE 7540.0dDouble
char16 位0 到 65,535'\u0000'Character
boolean1 位true/falsefalseBoolean

5. 什么是自动装箱和拆箱?有什么注意事项?

答案要点:

  • 自动装箱和拆箱的概念
  • 实现原理
  • 性能影响
  • 注意事项

示例答案: "自动装箱是基本类型自动转换为对应的包装类,拆箱是包装类自动转换为基本类型。这是 Java 5 引入的语法糖,编译器会自动插入转换代码。例如,Integer i = 100; 会自动装箱为 Integer.valueOf(100)。自动装箱和拆箱虽然方便,但会带来性能开销,因为会创建对象。在循环中频繁使用可能导致大量对象创建,影响性能。另外,包装类的比较应该使用 equals 方法而不是 == 操作符,因为 == 比较的是对象引用。"

深入解析:

  • 装箱:基本类型 → 包装类,调用 valueOf() 方法
  • 拆箱:包装类 → 基本类型,调用 xxxValue() 方法
  • 缓存机制:Integer 缓存 -128 到 127 的对象
  • 性能考虑:避免在循环中使用自动装箱

6. 基本类型和包装类的选择原则是什么?

答案要点:

  • 使用场景对比
  • 性能考虑
  • 空值处理
  • 集合使用

示例答案: "选择基本类型还是包装类需要考虑多个因素。基本类型性能更好,内存占用少,适合数值计算和性能敏感的场景。包装类支持 null 值,适合表示可能不存在的值,如数据库字段。在集合中必须使用包装类,因为集合不能存储基本类型。在方法参数和返回值中,如果需要表示可能不存在的值,使用包装类;如果值总是存在,使用基本类型。在实际项目中,我会根据具体场景选择,优先使用基本类型,只有在需要 null 值或集合操作时才使用包装类。"

深入解析:

  • 基本类型优势:性能好、内存少、计算效率高
  • 包装类优势:支持 null、对象方法、集合兼容
  • 选择原则:性能优先用基本类型,功能需求用包装类

String 类详解

7. String 类的特点是什么?为什么是不可变的?

答案要点:

  • 不可变性
  • 字符串常量池
  • 线程安全
  • 性能影响

示例答案: "String 类在 Java 中是不可变的,一旦创建就不能修改。这种设计有几个重要原因:首先,不可变性保证了线程安全,多个线程可以安全地共享字符串对象。其次,字符串常量池的实现依赖于不可变性,相同的字符串字面量可以共享同一个对象,节省内存。不可变性还简化了字符串作为 HashMap 键的使用。但是,频繁的字符串拼接会产生大量临时对象,影响性能。因此,对于频繁修改的字符串,应该使用 StringBuilder 或 StringBuffer。在实际项目中,我会根据使用场景选择合适的字符串处理方式。"

深入解析:

  • 不可变性实现:final 类、final 字段、无修改方法
  • 常量池机制:字符串字面量存储在常量池中
  • 线程安全:不可变对象天然线程安全
  • 性能优化:使用 StringBuilder 进行字符串拼接

8. String、StringBuilder、StringBuffer 的区别是什么?

答案要点:

  • 可变性差异
  • 线程安全性
  • 性能对比
  • 使用场景

示例答案: "String 是不可变的,每次修改都会创建新对象,适合字符串内容不经常变化的场景。StringBuilder 是可变的,线程不安全,但性能最好,适合单线程环境下的字符串拼接。StringBuffer 也是可变的,但线程安全,性能介于 String 和 StringBuilder 之间,适合多线程环境。在实际项目中,我会优先使用 StringBuilder,只有在多线程环境下才使用 StringBuffer,避免使用 String 进行频繁的字符串拼接操作。"

深入解析:

类可变性线程安全性能使用场景
String不可变是差字符串常量
StringBuilder可变否好单线程拼接
StringBuffer可变是中多线程拼接

9. 字符串常量池的工作原理是什么?

答案要点:

  • 常量池的概念
  • intern() 方法
  • 内存优化
  • 注意事项

示例答案: "字符串常量池是 JVM 中存储字符串字面量的特殊内存区域。当创建字符串字面量时,JVM 首先检查常量池中是否已存在相同的字符串,如果存在则返回引用,否则创建新对象并加入常量池。intern() 方法可以将字符串加入常量池,如果常量池中已存在则返回引用。常量池机制可以节省内存,提高性能。但是,过度使用 intern() 方法可能导致常量池过大,影响性能。在实际项目中,我会利用常量池机制优化字符串使用,但避免滥用 intern() 方法。"

深入解析:

  • 常量池位置:Java 7 之前位于方法区,之后位于堆内存
  • intern() 方法:手动将字符串加入常量池
  • 内存优化:相同字符串共享内存
  • 性能考虑:避免常量池过大

变量与常量

10. Java 中的变量类型有哪些?

答案要点:

  • 局部变量
  • 实例变量
  • 类变量(静态变量)
  • 参数变量

示例答案: "Java 中的变量分为四种类型。局部变量在方法、构造方法或语句块中声明,只在声明的作用域内有效,必须初始化后才能使用。实例变量在类中声明,但在方法、构造方法和语句块之外,每个对象都有独立的实例变量副本。类变量(静态变量)使用 static 关键字声明,属于类而不是实例,所有实例共享同一个类变量。参数变量是方法参数,在方法调用时传入。在实际项目中,我会根据变量的作用域和生命周期选择合适的变量类型,合理使用 static 关键字。"

深入解析:

  • 局部变量:方法内部,栈内存,必须初始化
  • 实例变量:对象级别,堆内存,有默认值
  • 类变量:类级别,方法区,所有实例共享
  • 参数变量:方法参数,栈内存

11. final 关键字的作用是什么?

答案要点:

  • 修饰变量
  • 修饰方法
  • 修饰类
  • 使用场景

示例答案: "final 关键字可以修饰变量、方法和类。修饰变量时,变量成为常量,一旦赋值就不能修改。修饰基本类型变量时,值不能改变;修饰引用类型变量时,引用不能改变,但对象内容可以改变。修饰方法时,方法不能被子类重写,但可以重载。修饰类时,类不能被继承,如 String 类。final 关键字提供了不变性保证,有助于提高代码的安全性和可读性。在实际项目中,我会使用 final 修饰不应该改变的变量,使用 final 方法防止子类修改关键逻辑,使用 final 类防止继承。"

深入解析:

  • final 变量:常量,不可修改
  • final 方法:不可重写,可以重载
  • final 类:不可继承
  • 不变性:提高代码安全性

运算符与表达式

12. Java 中的运算符有哪些类型?

答案要点:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 条件运算符

示例答案: "Java 中的运算符分为六种类型。算术运算符包括 +、-、*、/、%、++、--,用于数值计算。关系运算符包括 ==、!=、>、<、>=、<=,用于比较操作,返回布尔值。逻辑运算符包括 &&、||、!,用于布尔运算。位运算符包括 &、|、^、~、<<、>>、>>>,用于位操作。赋值运算符包括 =、+=、-= 等,用于赋值操作。条件运算符(三元运算符)格式为 condition ? value1 : value2,用于条件判断。在实际项目中,我会根据操作需求选择合适的运算符,注意运算符的优先级和结合性。"

深入解析:

  • 算术运算符:数值计算,注意整数除法和浮点除法
  • 关系运算符:比较操作,注意 == 和 equals() 的区别
  • 逻辑运算符:短路求值,&& 和 || 的短路特性
  • 位运算符:位操作,常用于性能优化

13. == 和 equals() 的区别是什么?

答案要点:

  • == 的作用
  • equals() 的作用
  • 重写 equals() 的规则
  • 使用场景

示例答案: "== 是关系运算符,用于比较基本类型的值或引用类型的引用地址。对于基本类型,== 比较值是否相等;对于引用类型,== 比较引用是否指向同一个对象。equals() 是 Object 类的方法,用于比较对象的内容是否相等。Object 类的 equals() 方法默认使用 == 比较,但很多类重写了 equals() 方法,如 String 类比较字符串内容。重写 equals() 时必须同时重写 hashCode() 方法,保证相等的对象有相同的哈希码。在实际项目中,我会使用 == 比较基本类型和引用地址,使用 equals() 比较对象内容。"

深入解析:

  • == 比较:基本类型比较值,引用类型比较地址
  • equals() 比较:对象内容比较,需要重写
  • 重写规则:自反性、对称性、传递性、一致性
  • hashCode() 重写:相等的对象必须有相同的哈希码

控制流程

14. Java 中的控制流程语句有哪些?

答案要点:

  • 条件语句
  • 循环语句
  • 跳转语句
  • 使用场景

示例答案: "Java 中的控制流程语句包括条件语句、循环语句和跳转语句。条件语句有 if-else 和 switch,用于根据条件执行不同的代码分支。循环语句有 for、while、do-while 和增强 for 循环,用于重复执行代码。跳转语句有 break、continue 和 return,用于改变程序执行流程。在实际项目中,我会根据具体需求选择合适的控制流程语句,注意避免深层嵌套,保持代码的可读性。对于复杂的条件判断,我会考虑使用策略模式或状态模式重构代码。"

深入解析:

  • 条件语句:if-else、switch(支持字符串和枚举)
  • 循环语句:for、while、do-while、增强 for
  • 跳转语句:break、continue、return
  • 最佳实践:避免深层嵌套,保持代码清晰

15. switch 语句的特点和使用注意事项是什么?

答案要点:

  • switch 语句的语法
  • 支持的数据类型
  • break 语句的作用
  • 使用注意事项

示例答案: "switch 语句用于多分支选择,支持 byte、short、int、char、String、枚举等数据类型。每个 case 分支后通常需要 break 语句,否则会继续执行下一个 case(称为穿透)。从 Java 14 开始,switch 支持表达式形式,可以使用 yield 返回值。在实际项目中,我会使用 switch 语句处理多分支逻辑,确保每个 case 都有 break 语句,避免意外的穿透行为。对于复杂的条件判断,我会考虑使用 if-else 或策略模式。"

深入解析:

  • 支持类型:基本类型、String、枚举
  • 穿透行为:缺少 break 会继续执行
  • 表达式形式:Java 14+ 支持 yield 返回值
  • 最佳实践:每个 case 添加 break,考虑使用 default

数组

16. Java 数组的特点是什么?

答案要点:

  • 数组的定义和初始化
  • 数组的特点
  • 数组的访问
  • 多维数组

示例答案: "Java 数组是相同类型元素的集合,具有固定长度,一旦创建就不能改变大小。数组可以通过索引访问元素,索引从 0 开始。数组的声明方式有 int[] arr 和 int arr[] 两种,推荐使用第一种。数组初始化可以通过 new 关键字或直接赋值。多维数组实际上是数组的数组,每一维的长度可以不同。在实际项目中,我会根据数据特点选择合适的数组类型,对于需要动态大小的场景使用 ArrayList 等集合类。"

深入解析:

  • 固定长度:创建后不能改变大小
  • 索引访问:从 0 开始,越界会抛出异常
  • 内存连续:数组元素在内存中连续存储
  • 多维数组:数组的数组,支持不规则数组

17. 数组和集合的区别是什么?

答案要点:

  • 大小固定性
  • 类型安全性
  • 功能丰富性
  • 性能对比

示例答案: "数组和集合在多个方面有重要区别。数组大小固定,创建后不能改变,而集合大小可变,可以动态添加和删除元素。数组只能存储基本类型和对象,而集合只能存储对象,基本类型需要装箱。数组功能简单,只有基本的访问和赋值操作,而集合提供了丰富的操作方法,如排序、搜索、过滤等。数组性能更好,内存占用少,而集合功能更强大,但性能开销更大。在实际项目中,我会根据具体需求选择,对于固定大小、性能敏感的场景使用数组,对于需要动态操作、功能丰富的场景使用集合。"

深入解析:

  • 大小:数组固定,集合可变
  • 类型:数组支持基本类型,集合只支持对象
  • 功能:数组简单,集合丰富
  • 性能:数组更好,集合功能更强

包与导入

18. Java 包的作用是什么?

答案要点:

  • 包的概念
  • 包的作用
  • 包的命名规范
  • 包的使用

示例答案: "Java 包是组织类和接口的命名空间,用于避免类名冲突,提供访问控制,便于代码组织和管理。包名通常使用小写字母,采用反向域名命名规范,如 com.example.project。包提供了访问控制机制,public 类可以被其他包访问,包私有类只能被同一包内的类访问。在实际项目中,我会合理设计包结构,按照功能模块组织类,使用有意义的包名,遵循命名规范。"

深入解析:

  • 命名空间:避免类名冲突
  • 访问控制:包级别的访问控制
  • 代码组织:按功能模块组织
  • 命名规范:反向域名,小写字母

19. import 语句的作用和使用注意事项是什么?

答案要点:

  • import 语句的作用
  • 静态导入
  • 通配符导入
  • 使用注意事项

示例答案: "import 语句用于导入其他包中的类,简化类的使用。可以使用具体的类名导入,也可以使用通配符 * 导入包中的所有类。静态导入可以导入类的静态成员,使用 static import 语法。在实际项目中,我会避免使用通配符导入,明确指定需要的类,提高代码可读性。对于频繁使用的静态方法,我会使用静态导入简化代码。"

深入解析:

  • 类导入:导入其他包的类
  • 静态导入:导入静态成员
  • 通配符:导入包中所有类
  • 最佳实践:避免通配符,明确指定类

基础概念总结

核心要点回顾

  1. Java 语言特性:面向对象、平台无关、自动内存管理
  2. 数据类型:8 种基本类型 + 包装类,注意自动装箱拆箱
  3. String 类:不可变性、常量池、StringBuilder/StringBuffer
  4. 变量类型:局部变量、实例变量、类变量、参数变量
  5. 运算符:算术、关系、逻辑、位运算等
  6. 控制流程:条件、循环、跳转语句
  7. 数组:固定长度、索引访问、多维数组
  8. 包与导入:命名空间、访问控制、代码组织

面试重点

  • 深入理解 Java 的核心特性
  • 掌握基本数据类型和包装类的使用
  • 理解 String 类的不可变性和性能影响
  • 熟悉各种运算符和控制流程语句
  • 了解包和导入机制

常见陷阱

  • 自动装箱拆箱的性能影响
  • String 拼接的性能问题
  • == 和 equals() 的使用混淆
  • switch 语句的穿透行为
  • 数组越界异常

注:本文档涵盖了 Java 基础概念的核心面试题,在实际面试中应结合具体场景和代码示例进行回答。建议通过实际编程练习加深理解。

最近更新:: 2025/9/4 10:51
Contributors: Duke
Next
Java 面向对象编程面试题