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

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

Java核心语法

数据类型与包装类
Java的8种基本数据类型对应包装类:byte-Byteshort-Shortint-Integerlong-Longfloat-Floatdouble-Doublechar-Characterboolean-Boolean。包装类提供对象操作能力,如集合存储和泛型使用。

自动装箱与拆箱原理
装箱调用valueOf()方法,拆箱调用xxxValue()方法。Integer缓存-128~127的实例,高频复用。

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

String、StringBuffer、StringBuilder区别

  • String不可变,每次操作生成新对象
  • StringBuffer线程安全(synchronized修饰)
  • StringBuilder非线程安全,性能更高

final关键字作用场景

  • 修饰类:不可继承
  • 修饰方法:不可重写
  • 修饰变量:基本类型值不可变,引用类型地址不可变

面向对象特性

多态的实现机制
基于JVM方法调用指令:

  • invokestatic:调用静态方法
  • invokevirtual:调用实例方法(多态核心)
  • invokeinterface:调用接口方法
  • invokespecial:调用构造函数、私有方法等

抽象类与接口的异同

维度抽象类接口
方法实现可包含具体方法Java8后默认方法
变量无限制默认public static final
继承单继承多实现
设计目的代码复用行为契约

JVM深度剖析

内存模型与GC算法

  • 堆分区:新生代(Eden+S0+S1)、老年代
  • GC算法:
    • 标记-清除(产生碎片)
    • 标记-整理(老年代常用)
    • 复制算法(新生代)

类加载机制
双亲委派模型流程:

  1. 加载:获取二进制字节流
  2. 验证:文件格式、元数据等
  3. 准备:分配内存并初始化默认值
  4. 解析:符号引用转直接引用
  5. 初始化:执行<clinit>方法

OOM问题排查

  • java.lang.OutOfMemoryError: Java heap space:堆内存不足
  • java.lang.OutOfMemoryError: Metaspace:元空间溢出
  • java.lang.OutOfMemoryError: unable to create new native thread:线程数超限

并发编程体系

AQS实现原理分析
核心结构:

  • state:同步状态(如ReentrantLock的重入次数)
  • CLH队列:线程等待队列
    关键方法:
public final void acquire(int arg) {if (!tryAcquire(arg) &&acquireQueued(addWaiter(Node.EXCLUSIVE), arg))selfInterrupt();
}

ThreadLocal内存泄漏防范
使用弱引用避免Key内存泄漏,但需手动remove()清理Value。

并发容器源码解读
ConcurrentHashMap JDK8改进:

  • 数组+链表+红黑树
  • CAS+synchronized替代分段锁
  • 扩容时协助迁移

Spring核心技术

IOC容器启动流程

  1. 初始化BeanDefinitionReader
  2. 解析配置生成BeanDefinition
  3. 执行BeanFactoryPostProcessor
  4. 实例化单例Bean(依赖注入、初始化回调)

AOP动态代理实现

  • JDK动态代理:基于接口
  • CGLIB:基于子类继承
public Object getProxy() {return Enhancer.create(target.getClass(), (MethodInterceptor)(obj, method, args, proxy) -> {System.out.println("Before method");Object result = proxy.invokeSuper(obj, args);System.out.println("After method");return result;});
}

分布式系统设计

CAP理论公式
分布式系统最多满足两个特性:
一致性(C) + 可用性(A) + 分区容错性(P) ≤ 2

Kafka高可用设计

  • 分区副本机制(ISR列表)
  • 生产者ACK配置(0/1/all)
  • 消费者偏移量管理

分布式ID生成方案

  • UUID:无序,索引效率低
  • 数据库自增序列:存在单点瓶颈
  • Snowflake算法:
    • 1位符号位 + 41位时间戳 + 10位机器ID + 12位序列号

系统设计案例

短链服务设计

  • 哈希算法:MD5截取/自增ID转62进制
  • 301/302重定向选择
  • 缓存预热策略

秒杀系统架构

  • 分层削峰:页面静态化+读写分离+队列缓冲
  • 库存扣减:Redis原子操作或分布式锁
  • 限流策略:令牌桶/漏桶算法

Java新特性

虚拟线程(Java21)
轻量级线程,由JVM调度:

Thread.startVirtualThread(() -> {System.out.println("Virtual thread running");
});

GraalVM原生镜像
通过AOT编译生成独立可执行文件:

native-image -jar app.jar


文章转载自:

http://c5GfeJxf.wdrxh.cn
http://eQ2kSNym.wdrxh.cn
http://BgbshBlH.wdrxh.cn
http://C74Ku5WO.wdrxh.cn
http://MvHLbPDc.wdrxh.cn
http://m1qnpuoF.wdrxh.cn
http://uWIGnpDw.wdrxh.cn
http://uoX6YQvc.wdrxh.cn
http://bz2DUn56.wdrxh.cn
http://X7SLOXbe.wdrxh.cn
http://zcib0vTG.wdrxh.cn
http://Ml2qrbzD.wdrxh.cn
http://v0YvFXkm.wdrxh.cn
http://cfYC5bLX.wdrxh.cn
http://HHtqJcXz.wdrxh.cn
http://bZKJ4QET.wdrxh.cn
http://tDpHMR3A.wdrxh.cn
http://qn92eTd1.wdrxh.cn
http://6Dw4VrOK.wdrxh.cn
http://lf4pJada.wdrxh.cn
http://DKtV2dQ9.wdrxh.cn
http://fAhz10rg.wdrxh.cn
http://fpRDpjHH.wdrxh.cn
http://KZRQMzeN.wdrxh.cn
http://5jzn1j86.wdrxh.cn
http://N3XNKmkp.wdrxh.cn
http://iTYeUfjl.wdrxh.cn
http://vVTPVJwT.wdrxh.cn
http://bEXQ97Gr.wdrxh.cn
http://ZgqbQsLZ.wdrxh.cn
http://www.dtcms.com/a/229356.html

相关文章:

  • 文生图模型的dev、fast、full版本的区别
  • 移动端H5输入框调起手机软键盘,导致底部固定定位被顶起解决方法
  • 计算机基础知识(第三篇)
  • 力扣面试150题--二叉搜索树中第k小的元素
  • 线程池RejectedExecutionException异常
  • 用 PyQt5 打造一个可视化 JSON 数据解析工具
  • Playwright 多浏览器并行测试与数据隔离实战指南
  • 【算法设计与分析】实验——汽车加油问题, 删数问题(算法实现:代码,测试用例,结果分析,算法思路分析,总结)
  • ARM架构推理Stable Diffusiond
  • Foundation Models for Generalist Geospatial Artificial Intelligence(NASA发布Prithvi)论文阅读
  • 【运维】统信UOS操作系统aarch64自制OpenSSH 9.6p1 rpm包(含ssh-copy-id命令)修复漏洞
  • OD 算法题 B卷【代码编辑器】
  • Flotherm软件许可与硬件要求
  • 【复习】软件测试
  • RTOS:初始化新任务(含源码复杂点解读)
  • unity UI Canvas“高”性能写法
  • Unity-UI组件详解
  • 【mysql】BIGINT UNSIGNED字段被表示为float科学计数法 丢失精度问题
  • C++初赛的三讲
  • Java详解LeetCode 热题 100(25):LeetCode 141. 环形链表(Linked List Cycle)详解
  • web第八次课后作业--分层解耦
  • PS教程-萌新系统入门课课程视频+素材
  • String 学习总结
  • 力扣刷题 -- 232. 用栈实现队列
  • Android系统进程优先级
  • 组相对策略优化(GRPO):原理及源码解析
  • UE5 2D角色PaperZD插件动画状态机学习笔记
  • 支持TypeScript并打包为ESM/CommonJS/UMD三种格式的脚手架项目
  • 【python】三元图绘制(详细注释)
  • javascript 实战案例 二级联动下拉选框