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

2025 Java面试大全技术文章(面试题1)

数据类型与包装类

问题:Java中基本数据类型与包装类的区别是什么?自动装箱与拆箱的底层原理?
答案:
基本数据类型(如intdouble)直接存储值,包装类(如IntegerDouble)是对象,具备方法和属性。自动装箱由Integer.valueOf()实现,拆箱调用intValue(),频繁装箱可能触发缓存(如Integer缓存-128~127)。

Integer a = 100;  // 装箱:Integer.valueOf(100)
int b = a;        // 拆箱:a.intValue()


String、StringBuffer、StringBuilder区别

问题:对比三者的性能及适用场景。
答案:
String不可变,每次修改生成新对象;StringBuffer线程安全,使用synchronizedStringBuilder非线程安全,性能更高。

String str = "a" + "b";  // 编译期优化为"ab"
StringBuffer sb = new StringBuffer().append("a").append("b");


final关键字作用场景

问题:final修饰变量、方法、类分别有什么作用?
答案:

  • 变量:基本类型值不可变,引用类型指向不可变(对象内容可变)。
  • 方法:禁止子类重写。
  • 类:禁止继承。
final List<String> list = new ArrayList<>();
list.add("item");  // 合法,修改对象内容


多态的实现机制

问题:Java多态如何通过JVM实现?
答案:
基于虚方法表(vtable)动态绑定,运行时确定实际调用的方法。父类引用调用子类重写方法时,JVM通过对象实际类型查找方法表。


单例的七种写法

问题:列举线程安全的单例实现方式。
答案:

  1. 双重检查锁(推荐)
public class Singleton {private static volatile Singleton instance;private Singleton() {}public static Singleton getInstance() {if (instance == null) {synchronized (Singleton.class) {if (instance == null) {instance = new Singleton();}}}return instance;}
}

  1. 静态内部类(懒加载)
  2. 枚举(防反射破坏)

JVM类加载机制

问题:描述类加载的双亲委派模型及其打破场景。
答案:
加载流程:Bootstrap ClassLoaderExtension ClassLoaderApplication ClassLoader。打破场景:如JDBC驱动使用ServiceLoader,或自定义类加载器重写loadClass方法。


AQS实现原理

问题:AQS如何管理线程同步状态?
答案:
通过volatile int state和CLH队列实现。ReentrantLock调用acquire()时,CAS修改state,失败则入队阻塞。


Spring事务传播机制

问题:PROPAGATION_REQUIRES_NEW和PROPAGATION_NESTED的区别?
答案:

  • REQUIRES_NEW:新建独立事务,原事务挂起。
  • NESTED:嵌套事务,回滚到保存点而非全事务。

Kafka高可用设计

问题:Kafka如何保证分区消息不丢失?
答案:

  • 生产者:acks=all确保ISR副本写入。
  • Broker:多副本同步+Leader选举。
  • 消费者:手动提交偏移量。

短链服务设计

问题:设计一个高并发短链系统,如何生成唯一ID?
答案:

  • ID生成:Snowflake算法或自增ID+Base62编码。
  • 映射存储:Redis缓存短码到原URL,数据库持久化。
// Base62示例
String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
String shortUrl = encode(longUrl.hashCode(), chars);


Java21虚拟线程

问题:虚拟线程相比平台线程有哪些优势?
答案:
轻量级线程,由JVM调度,无需操作系统线程切换。适合IO密集型任务,显著提升吞吐量。

Thread.startVirtualThread(() -> System.out.println("Virtual Thread"));


CAP理论公式

分布式系统只能满足其中两项:
一致性(C) + 可用性(A) + 分区容错性(P) ≤ 2


其他技术点可参照类似格式展开,如需深入某个主题可进一步细化。

http://www.lryc.cn/news/2399113.html

相关文章:

  • docker 中 什么是「卷」?(Volume)
  • 三维可视化和实时数据处理对前端性能要求以及优化渲染效率
  • 基于VU37P的高性能采集板卡
  • 2025-05-31 Python深度学习10——模型训练流程
  • 卷积神经网络(CNN)、YOLO和人脸识别之间的关系
  • K8S StatefulSet 快速开始
  • 重新测试deepseek Jakarta EE 10编程能力
  • nav2笔记-250603
  • 指纹识别+精准化POC攻击
  • LeetCode[404]左叶子之和
  • mac环境下的python、pycharm和pip安装使用
  • C语言多级指针深度解析:从一级到三级的奥秘
  • uni-app学习笔记十九--pages.json全局样式globalStyle设置
  • BUUCTF[极客大挑战 2019]Havefun 1题解
  • 【基础】Unity中Camera组件知识点
  • Tomcat优化篇
  • Temporal Fusion Transformer(TFT)扩散模型时间序列预测模型
  • 【LangServe部署流程】5 分钟部署你的 AI 服务
  • 攻防世界-unseping
  • 微软推出 Bing Video Creator,免费助力用户轻松创作 AI 视频
  • (13)java+ selenium->元素定位大法之By_partial_link_text
  • Xget 正式发布:您的高性能、安全下载加速工具!
  • [yolov11改进系列]基于yolov11使用FasterNet替换backbone用于轻量化网络的python源码+训练源码
  • 一周学会Pandas2之Python数据处理与分析-Pandas2数据绘图与可视化
  • 企业级安全实践:SSL/TLS 加密与权限管理(一)
  • 2025——》VSCode Windows 最新安装指南/VSCode安装完成后如何验证是否成功?2025最新VSCode安装配置全攻略
  • RabbitMQ如何保证消息可靠性
  • 【MATLAB代码】制导——三点法,二维平面下的例程|运动目标制导,附完整源代码
  • Spring Security用户管理机制详解
  • 如何爬取google应用商店的应用分类呢?