news 2026/4/3 6:48:40

java 面试题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java 面试题

一、基础核心(必问)

1. Java 中的值传递和引用传递有什么区别?

答案:Java 中只有值传递,不存在引用传递:

  • 值传递:方法接收的是实参的拷贝,方法内对参数的修改不会影响原实参(如基本数据类型intchar等)。
  • 引用传递(误区):对于对象类型,方法接收的是对象引用的拷贝(值),如果修改的是引用指向的对象内容(如对象属性),会影响原对象;但如果直接修改引用本身(如重新new一个对象),不会影响原引用。

示例代码

java

运行

public class PassTest { // 基本类型:值传递 public static void changeInt(int a) { a = 10; } // 对象类型:传递引用的拷贝 public static void changeObj(User user) { user.setName("新名字"); // 修改对象内容,影响原对象 user = new User("无关"); // 修改引用本身,不影响原引用 } static class User { private String name; public User(String name) { this.name = name; } // getter/setter 省略 } public static void main(String[] args) { int num = 1; changeInt(num); System.out.println(num); // 输出 1(未改变) User u = new User("旧名字"); changeObj(u); System.out.println(u.getName()); // 输出 新名字(对象内容被改) } }
2. == 和 equals () 的区别?

答案

  • ==
    • 比较基本类型:判断值是否相等;
    • 比较引用类型:判断引用是否指向同一个对象(内存地址是否相同)。
  • equals()
    • Object类的方法,默认实现等价于==(比较地址);
    • 常用类(如StringInteger)重写了equals(),改为比较内容
    • 自定义类如需按内容比较,需重写equals()(建议同时重写hashCode())。
3. String、StringBuffer、StringBuilder 的区别?
特性StringStringBufferStringBuilder
可变性不可变(final)可变可变
线程安全安全(不可变)安全(同步方法)不安全
性能低(频繁创建)
适用场景少量字符串操作多线程字符串操作单线程字符串操作

二、面向对象(核心)

1. 接口和抽象类的区别?
维度抽象类接口
继承 / 实现单继承多实现
方法可含抽象 / 非抽象方法JDK8 + 可含默认 / 静态方法,其余抽象
成员变量可含任意变量只能是public static final
构造方法
设计理念体现 "is-a"(继承)体现 "has-a"(能力)
2. 重载(Overload)和重写(Override)的区别?
  • 重载
    • 发生在同一个类中;
    • 方法名相同,参数列表(个数 / 类型 / 顺序)不同;
    • 返回值、访问修饰符不影响重载;
    • 编译期确定(静态绑定)。
  • 重写
    • 发生在父子类中;
    • 方法名、参数列表、返回值(协变)完全相同;
    • 子类方法访问修饰符不能比父类更严格;
    • 不能重写finalstatic方法;
    • 运行期确定(动态绑定)。

三、JVM(高频)

1. JVM 内存模型(运行时数据区)?

JVM 运行时数据区分为 5 个部分:

  • 程序计数器:线程私有,记录当前线程执行的字节码行号,无 OOM;
  • 虚拟机栈:线程私有,存储方法栈帧(局部变量、操作数栈等),栈溢出(StackOverflowError)或 OOM;
  • 本地方法栈:线程私有,为 Native 方法服务,同虚拟机栈;
  • :线程共享,存储对象实例,GC 核心区域,OOM 高发区(分新生代、老年代);
  • 方法区:线程共享,存储类信息、常量、静态变量等,JDK8 后改为元空间(本地内存),仍可能 OOM。
2. GC 垃圾回收的判断方法?
  • 引用计数法:给对象加引用计数器,引用 + 1,释放 - 1,计数器为 0 则回收;缺点:无法解决循环引用。
  • 可达性分析算法:以 GC Roots(如虚拟机栈引用、静态变量、本地方法栈引用)为起点,遍历对象引用链,不可达的对象标记为可回收。
3. 常见的 GC 收集器?
  • Serial GC:单线程,适合小内存、单核心(客户端);
  • Parallel GC:多线程,注重吞吐量(默认 JVM 收集器);
  • CMS GC:并发标记清除,注重低延迟,缺点:内存碎片、CPU 占用高;
  • G1 GC:分区收集,兼顾吞吐量和延迟,适合大内存(JDK9 默认)。

四、并发编程(高频)

1. synchronized 和 Lock 的区别?
维度synchronizedLock(如 ReentrantLock)
实现方式JVM 层面(关键字)JDK 层面(接口)
释放锁自动释放(异常 / 方法结束)手动释放(finally)
可中断不可中断可中断(lockInterruptibly)
超时获取锁不支持支持(tryLock (time))
公平锁非公平可指定公平 / 非公平
条件变量单一多条件(Condition)
2. 线程池的核心参数(ThreadPoolExecutor)?

核心参数共 7 个,关键 5 个:

  • corePoolSize:核心线程数(常驻线程);
  • maximumPoolSize:最大线程数;
  • keepAliveTime:非核心线程空闲超时时间;
  • workQueue:任务队列(如 ArrayBlockingQueue、LinkedBlockingQueue);
  • threadFactory:线程创建工厂;
  • handler:拒绝策略(如 AbortPolicy、CallerRunsPolicy)。

五、集合(必问)

1. HashMap 的底层实现(JDK8)?
  • 底层:数组 + 链表 + 红黑树(链表长度≥8 且数组长度≥64 时转红黑树);
  • 哈希计算:hash(key) = key.hashCode() ^ (key.hashCode() >>> 16),再与数组长度 - 1 取模;
  • 扩容:默认初始容量 16,负载因子 0.75,扩容为 2 倍,重新哈希;
  • 线程安全:非线程安全,并发场景用 ConcurrentHashMap(JDK8 用 CAS+synchronized)。
2. ArrayList 和 LinkedList 的区别?
维度ArrayListLinkedList
底层实现动态数组双向链表
随机访问快(O (1))慢(O (n))
增删操作慢(需移动元素)快(仅改指针)
内存占用连续内存,有扩容冗余每个节点存前后指针,占用更多
适用场景大量读取、少量增删大量增删、少量读取

总结

  1. 基础核心:重点掌握值传递 / 引用传递、==/equals、String 相关、OOP 特性(封装 / 继承 / 多态);
  2. 高频进阶:JVM 内存模型、GC 机制、HashMap 实现、线程池、并发锁(synchronized/Lock)是面试重中之重;
  3. 答题技巧:回答时先给出核心结论,再补充细节 / 示例,结合使用场景说明(如 "HashMap 非线程安全,所以高并发下用 ConcurrentHashMap")。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 7:15:55

动手试了TurboDiffusion:AI视频生成效果超出预期

动手试了TurboDiffusion:AI视频生成效果超出预期 1. 开箱即用的视频生成加速器 第一次打开TurboDiffusion镜像时,我本以为会遇到复杂的环境配置和漫长的编译等待。结果出乎意料——点击"webui"按钮,几秒钟后就进入了简洁的界面。…

作者头像 李华
网站建设 2026/3/31 6:04:26

高校电工课程中Multisim14的教学实践:完整指南

以下是对您提供的博文《高校电工课程中Multisim14的教学实践:完整技术分析指南》的 深度润色与结构重构版 。本次优化严格遵循您的全部要求: ✅ 彻底去除AI腔调与模板化表达(如“本文将从……几个方面阐述”) ✅ 摒弃刻板章节标题,代之以自然、有张力的技术叙事逻辑 …

作者头像 李华
网站建设 2026/4/1 21:27:50

开源大模型新方向一文详解:Glyph视觉压缩+GPU按需部署

开源大模型新方向一文详解:Glyph视觉压缩GPU按需部署 1. 什么是Glyph?不是“加长版”文本模型,而是视觉化推理新思路 你有没有遇到过这样的问题:想让大模型处理一篇20页的技术文档、一份完整的会议纪要,或者一段超长…

作者头像 李华
网站建设 2026/4/1 14:13:03

菲利普费雪的成长股选择标准

菲利普费雪的成长股选择标准 关键词:菲利普费雪、成长股、选择标准、投资分析、企业评估 摘要:本文深入探讨了菲利普费雪的成长股选择标准。首先介绍了相关背景,包括目的范围、预期读者等内容。接着详细阐述了成长股选择标准的核心概念及其联…

作者头像 李华
网站建设 2026/3/15 5:24:43

Qwen-Image-2512-ComfyUI实战:生成一张有故事感的家庭照

Qwen-Image-2512-ComfyUI实战:生成一张有故事感的家庭照 1. 为什么是这张家庭照?——从“出图”到“动心”的一步之遥 你有没有试过让AI画一张全家福,结果生成的却像影楼精修模板:笑容标准、站位对称、背景虚化得毫无呼吸感&…

作者头像 李华
网站建设 2026/3/27 2:54:22

Z-Image-Turbo生成质量提升秘籍,值得收藏

Z-Image-Turbo生成质量提升秘籍,值得收藏 在用Z-Image-Turbo生成图像时,你是否也遇到过这些情况: 明明写了很详细的提示词,结果画面构图混乱、主体模糊; 想生成一张高清古风山水画,却总带出现代建筑或违和…

作者头像 李华