<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>JVM on Blog</title><link>https://blog.iam041.com/tags/jvm/</link><description>Recent content in JVM on Blog</description><generator>Hugo</generator><language>zh_CN</language><lastBuildDate>Sun, 03 May 2026 11:00:00 +0800</lastBuildDate><atom:link href="https://blog.iam041.com/tags/jvm/index.xml" rel="self" type="application/rss+xml"/><item><title>Java核心面试题与八股知识点速记</title><link>https://blog.iam041.com/posts/java%E6%A0%B8%E5%BF%83%E9%9D%A2%E8%AF%95%E9%A2%98%E4%B8%8E%E5%85%AB%E8%82%A1%E7%9F%A5%E8%AF%86%E7%82%B9%E9%80%9F%E8%AE%B0/</link><pubDate>Sun, 03 May 2026 11:00:00 +0800</pubDate><guid>https://blog.iam041.com/posts/java%E6%A0%B8%E5%BF%83%E9%9D%A2%E8%AF%95%E9%A2%98%E4%B8%8E%E5%85%AB%E8%82%A1%E7%9F%A5%E8%AF%86%E7%82%B9%E9%80%9F%E8%AE%B0/</guid><description>&lt;p&gt;Java 作为现代企业级分布式系统与微服务架构的基石语言，其核心底层机制、集合实现、JVM 运行时原理以及 JUC 并发编程是技术面试与工程实践中最关键的核心基线。本文对高频核心考点进行系统化模块解构与深度剖析，剔除表层快餐记忆，直击底层源码设计与设计权衡。&lt;/p&gt;&#10;&lt;p&gt; &lt;/p&gt;&#10;&lt;h2 id="1-java-基础语法与核心机制"&gt;1. Java 基础语法与核心机制&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;h3 id="11-面向对象思想与对象创建"&gt;1.1 面向对象思想与对象创建&lt;/h3&gt;&#10;&lt;p&gt;面向对象与面向过程是两种截然不同的程序设计范式，在系统建模与工程演进中承担不同职责：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;面向过程（POP）&lt;/strong&gt;：核心以算法步骤为中心，将业务需求拆解为按顺序调用的函数序列。其主要优势在于调用开销低、性能高，常用于底层操作系统开发或单片机固件；缺点在于业务逻辑高度耦合，维护与扩展成本高。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;面向对象（OOP）&lt;/strong&gt;：核心以现实世界或业务概念的模型实体为中心，通过类与对象将数据（属性）与行为（方法）高度聚合，具备三大核心特征：&#10;(1) &lt;strong&gt;封装&lt;/strong&gt;：隐藏对象内部实现细节，仅对外暴露安全受控的访问接口，保护内部数据一致性。&#10;(2) &lt;strong&gt;继承&lt;/strong&gt;：子类复用并扩展父类的属性与方法，建立代码复用机制，同时构建类型多态体系。&#10;(3) &lt;strong&gt;多态&lt;/strong&gt;：父类引用指向子类具体实现，在程序运行时动态绑定（动态分派）具体调用的实例方法，是实现低耦合与设计模式的基础。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Java 中创建对象实例的底层途径主要包含四种方式：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;new 关键字&lt;/strong&gt;：最基础的方式，编译器生成 new 字节码指令分配内存，并调用对应的构造函数完成初始化。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;反射机制&lt;/strong&gt;：通过 Class.newInstance() 或 Constructor.newInstance() 动态获取构造器并创建对象，常用于框架依赖注入与动态代理。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;对象克隆&lt;/strong&gt;：目标类实现 Cloneable 接口并重写 clone() 方法，通过 JVM 底层内存拷贝直接生成新对象，不调用任何构造函数。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;反序列化机制&lt;/strong&gt;：借助 ObjectInputStream 将字节流反序列化为内存对象实例，同样不依赖构造函数执行。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;在对象拷贝场景中，浅拷贝与深拷贝存在本质区别：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;浅拷贝（Shallow Copy）&lt;/strong&gt;：仅克隆基本数据类型的字段值；对于引用类型字段，仅复制对象引用的内存地址，新旧对象依然共享同一个底层堆对象实例。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;深拷贝（Deep Copy）&lt;/strong&gt;：不仅复制基本数据类型，还会递归克隆所有引用对象，在堆内存中完整重建整棵对象关系树，新旧对象完全隔离独立。深拷贝通常通过手动重写 clone()、序列化反序列化（如 Jackson/Kryo）或拷贝构造器实现。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="12-核心关键字底层剖析"&gt;1.2 核心关键字底层剖析&lt;/h3&gt;&#10;&lt;p&gt;Java 语言关键字直接影响类的继承结构、内存分配以及字段行为：&lt;/p&gt;&#10;&lt;p&gt;(1) final 关键字的作用边界：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;修饰类&lt;/strong&gt;：表明该类为最终类，不可被任何类继承，其所有成员方法隐式声明为 final（例如 String、Integer 等不可变类，确保安全性与不可篡改性）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;修饰方法&lt;/strong&gt;：锁定方法逻辑，禁止任何子类重写（Override），但子类依然可以继承使用；JIT 编译器可据此进行内联展开优化。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;修饰变量&lt;/strong&gt;：作为常量使用，必须在声明时或构造器执行完毕前完成显式赋值，赋值后引用地址不可变。若修饰的是引用类型，仅保证指针指向不变，所指向对象内部的状态与属性仍然可变。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;(2) static 关键字的加载行为：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;修饰变量与方法&lt;/strong&gt;：归属于类元信息本身而非特定对象实例。在 JVM 类加载的准备阶段完成空间分配并赋零值，在初始化阶段执行显式赋值，全局仅存在一份内存，可直接通过类名访问。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;修饰代码块&lt;/strong&gt;：静态代码块在类初次被主动使用、执行类构造器方法（clinit）时按书写顺序触发，生命周期内仅执行一次，常用于初始化重量级系统资源。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;静态导包&lt;/strong&gt;：通过 import static 语法直接导入指定类的公共静态成员，调用时无需携带类名前缀。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;(3) instanceof 关键字与类型模式匹配：&lt;/p&gt;</description></item></channel></rss>