news 2026/4/30 15:32:59

Java 基础面试题精选:从语法到集合,高频问题解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java 基础面试题精选:从语法到集合,高频问题解析

Java 基础面试题精选:从语法到集合(2025-2026 高频真实考点)

以下内容按出现频率从高到低排列,覆盖了几乎所有大厂(阿里、字节、腾讯、美团、京东、华为、拼多多等)Java 后端/后端实习/校招一面、二面最常问的基础题目。

一、基础语法与 JVM 内存相关(最常考前 10 题)

  1. Java 中基本数据类型和引用数据类型有哪些?各自默认值是多少?

    回答要点:

    • 基本类型(8种):byte(0)、short(0)、int(0)、long(0L)、float(0.0f)、double(0.0)、char()、boolean(false)
    • 引用类型:类、接口、数组、String、包装类等,默认值 null
  2. == 和 equals() 的区别?String 为什么可以直接用 == 比较?

    高频追问:

    • == 比较的是内存地址(基本类型比值,引用类型比地址)
    • equals() 默认也是比地址,但 String、Integer 等重写了 equals(),实现值比较
    • String s1 = “hello”; String s2 = “hello”; → s1 == s2 为 true(字符串常量池)
  3. String、StringBuilder、StringBuffer 的区别?

    特性StringStringBuilderStringBuffer
    是否可变不可变可变可变
    线程安全是(不可变)是(方法加 synchronized)
    性能最快较慢
    使用场景常量、少量拼接单线程大量拼接多线程拼接

    面试结论:日常 99% 用 StringBuilder,除非明确多线程场景才考虑 StringBuffer。

  4. final、finally、finalize 的区别?

    • final:修饰类(不可继承)、方法(不可重写)、变量(不可修改,基本类型值不变,引用类型地址不变)
    • finally:try-catch 块中必定执行的代码块(即使 return、throw 也会执行)
    • finalize:Object 类方法,GC 前可能调用(已过时,Java 9 标记 deprecated)
  5. 重载(Overload)和重写(Override)的区别?

    维度重载(Overload)重写(Override)
    位置同一个类子类
    方法名相同相同
    参数列表不同(数量/类型/顺序)相同
    返回值可不同相同或协变类型(Java 5+)
    异常可不同更窄或相同
    访问修饰符可不同更宽松或相同
  6. 抽象类和接口的区别?(Java 8 后变化很大)

    特性抽象类接口(Java 8+)
    成员变量可以有普通变量只能有 public static final
    方法可以有抽象+非抽象方法默认方法、静态方法、私有方法
    构造方法可以有没有
    继承/实现单继承多实现
    使用场景模板方法、代码复用功能扩展、行为约定

    现在面试常问:“为什么 Java 8 后接口可以有 default 方法?”
    答:为了在不破坏已有实现类的情况下扩展接口功能(典型例子:Collection.sort()、Stream API)。

二、面向对象高频题

  1. 构造方法的作用?能否被继承?能否被重载?

    • 作用:初始化对象、给成员变量赋初值
    • 不能被继承(但子类会隐式调用父类无参构造)
    • 可以被重载(多个构造方法)
  2. this 和 super 的作用?

    • this:指代当前对象(this.属性、this.方法、this() 调用本类其他构造)
    • super:指代父类对象(super.属性/方法、super() 调用父类构造)
  3. Java 中多态的体现?

    • 父类引用指向子类对象
    • 方法重写(运行时绑定)
    • 接口实现
    • 向上转型(自动)、向下转型(需强转)

三、集合框架(Collection & Map)高频题

  1. ArrayList 和 LinkedList 的区别?底层实现?适用场景?

    项目ArrayListLinkedList
    底层结构动态数组双向链表
    随机访问O(1)O(n)
    插入/删除O(n)(需移动元素)O(1)(改指针)
    内存占用较连续,较低每个节点有 prev/next,较高
    适用场景查询多、尾部增删头部/中间频繁增删、队列/栈
  2. HashMap 底层原理(JDK 1.8)?为什么 1.8 改用红黑树?

    核心回答:

    • JDK 1.7:数组 + 单向链表
    • JDK 1.8:数组 + 链表(长度>8 转为红黑树)+ 扩容优化
    • 为什么用红黑树?链表过长查询退化成 O(n),红黑树保证最坏 O(log n)
    • 扩容时机:size > capacity × loadFactor(默认 0.75)
    • hash 计算:(h = key.hashCode()) ^ (h >>> 16) 高低位异或,减少碰撞
  3. HashMap 为什么线程不安全?ConcurrentHashMap 如何实现线程安全?

    • HashMap 不安全原因:put 时多线程扩容可能死循环(1.7)、数据覆盖丢失(1.8)
    • ConcurrentHashMap(1.8):
      • 数组 + 链表/红黑树
      • 采用CAS + synchronized细粒度锁
      • 扩容时多线程协助扩容
      • size 用 volatile + 分段计数
  4. HashSet 如何保证不重复?底层实现?

    • 底层基于 HashMap,key 存元素,value 存常量对象
    • add() → put() → hashCode() + equals() 双重判断
  5. TreeMap / TreeSet 底层是什么?为什么有序?

    • 底层红黑树
    • 按照 key 的自然顺序或 Comparator 排序

四、异常处理 & 其他高频

  1. throw 和 throws 的区别?

    项目throwthrows
    位置方法体内方法声明后
    作用手动抛出异常对象声明方法可能抛出的异常
    后跟内容new XXXException(…)异常类名(可多个,用逗号隔)
  2. Error 和 Exception 的区别?常见子类?

    • Error:严重问题(OutOfMemoryError、StackOverflowError),程序无法恢复
    • Exception:可捕获、可恢复(RuntimeException + 受检异常)
      • RuntimeException:空指针、数组越界、类型转换、除零等(非受检)
      • 受检异常:IOException、SQLException 等(必须处理)

五、2025-2026 年新增/变热的高频基础题

  1. record 关键字(Java 16+)是什么?解决了什么问题?

    答:不可变数据载体,自动生成构造器、getter、equals、hashCode、toString,极大减少样板代码。
    常用于 DTO、VO、配置类。

  2. switch 表达式(Java 14+ → 21 完善)与传统 switch 的区别?

    答:支持箭头语法(->)、yield 返回值、模式匹配(Java 21+),更简洁、更安全。

  3. 密封类(sealed class,Java 17+)有什么用?

    答:限制类的继承范围,提高类型安全性,常用于状态建模、代数数据类型。

建议把上面 19 道题都手写一遍答案 + 代码验证,尤其是集合底层、HashMap 1.8 红黑树引入原因、线程安全问题,这三题几乎必考。

你现在最想针对哪几道题来深入手撕代码追问变种

  • HashMap put 过程完整画图讲解?
  • ConcurrentHashMap 1.8 扩容 & put 详细流程?
  • ArrayList & LinkedList 增删改查时间复杂度对比代码验证?
  • 还是来一套完整的“Java 基础 50 题”刷题清单?

告诉我你的需求,我继续陪你冲刺~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 10:00:01

SSM计算机毕设之基于ssm的城市生活e家平台的设计与开发在线报修与维修反馈 在线评价(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/25 3:41:19

Java面试通关指南(六):数据库王者之战:MySQL深度优化与分布式实践

🔥 前言 在互联网企业的技术面试中,MySQL是必考的重中之重。掌握MySQL不仅是基础,更是区分普通开发者与高级工程师的关键。本文将带你深入MySQL内核,探索从单机优化到分布式架构的完整知识体系。 一、索引背后的B树秘密 面试高…

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

P0904AK桌面接口模块

P0904AK 桌面接口模块产品特点开头: P0904AK 桌面接口模块是一款用于工业自动化控制系统的接口扩展单元,主要提供现场设备与主控系统之间的便捷连接与互动接口,旨在简化设备接入、提高系统集成效率。产品特点:提供多种常用接口类型…

作者头像 李华
网站建设 2026/4/21 7:48:33

中国人民大学在迭代13个版本后推出的大模型书籍,简直不要太详细,太适合入门大模型了(附PDF)

中国人大在收录900余篇参考文献,迭代13个版本后,终于出版了这本大模型中文版! 与英文综述文章定位不同,这本书更注重为初学者提供关于大模型技术的全面了解,是专门为深度学习基础的高年级本科生以及低年级研究生使用&a…

作者头像 李华
网站建设 2026/4/24 15:34:18

科技成果转化新引擎——智能顾问赋能全链条服务生态

在当今创新驱动发展的时代,科技成果的转化效率和质量直接关系到国家竞争力和经济发展潜力。然而,传统成果转化模式存在诸多痛点:技术评估门槛高、市场需求匹配不精准、成果推广能力弱以及筛选与资源对接依赖人工等问题,这些问题严…

作者头像 李华
网站建设 2026/4/23 13:29:25

STM32晶振频率怎么选

一、高速晶振(HSE):8MHz是“官方推荐”主流选择:STM32官方例程、开发板默认用8MHz,通过内部PLL倍频到72MHz(如STM32F1系列)。为啥选它:兼容性最好,资料多,出问…

作者头像 李华