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

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.xdnf.cn/news/10770.html

相关文章:

  • ABP-Book Store Application中文讲解 - Part 6: Authors: Domain Layer
  • (三)动手学线性神经网络:从数学原理到代码实现
  • C++初识—面向对象
  • JavaScript async/await指南
  • 亚远景科技助力东风日产通过ASPICE CL2评估
  • 【数据中心设计】
  • Vehicle HAL(3)--VehicleHalManager 分析
  • 【2025年B卷】OD-100分-斗地主之顺子
  • OD 算法题 B卷【跳格子2】
  • MTK的Download agent是什么下载程序?
  • 网络编程(计算机网络基础)
  • MyBatis 的动态 SQL
  • vSOME/IP与ETAS DSOME/IP通信的问题解决方案
  • malloc 内存分配机制:brk 与 mmap
  • MATLAB实战:四旋翼姿态控制仿真方案
  • AcWing 843:n-皇后问题 ← dfs
  • day45 python预训练模型
  • 机器学习——主成分分析(PCA)
  • React进阶:状态管理选择题
  • 【网络安全】SRC漏洞挖掘思路/手法分享
  • KITTI数据集(计算机视觉和自动驾驶领域)
  • 《前端面试题:CSS对浏览器兼容性》
  • 笔记本电脑开机无线网卡自动禁用问题
  • Could not get unknown property ‘mUser‘ for Credentials [username: null]
  • 农业机器人的开发
  • SpringBoot 自定义注解实现限流
  • Android 11以上App主动连接WIFI的完整方案
  • 【25.06】fabric进行caliper测试加环境部署
  • 人工智能-Chain of Thought Prompting(思维链提示,简称CoT)
  • 项目交付后缺乏回顾和改进,如何持续优化