Java 基础面试题

目录概述

Java 基础是面试的第一道门槛,也是最容易"表面通过、深层翻车"的模块。String 的不可变性、equalshashCode 的关系、static/final/abstract 的语义、异常体系、泛型擦除、反射与注解——每一个都能追问到 JVM 层面。

这个目录不给你背八股的机会,而是站在面试官视角,告诉你追问的边界在哪里,什么深度才叫"真正理解"。

【面试官心理】 我出 Java 基础题,不是为了考你背概念。我是想看你有没有亲手踩过坑、看过源码、复盘过问题。能清晰解释一个知识点的人,说明他真的做过。而那些只会背概念的人,往往在第一轮追问后就崩了。

内容范围

核心主题

  • OOP 四大特性:封装、继承、多态、抽象
  • equalshashCode 契约:为什么重写一个必须重写另一个
  • String 不可变性:源码级解读 + 性能陷阱
  • static 关键字:类加载、内存布局、单例模式
  • final 关键字:编译期常量、不可变对象、空白 final
  • abstractinterfacedefault 方法、静态方法、JDK 8+ 的演进
  • 泛型详解:类型擦除、条件擦除、泛型数组
  • 泛型通配符:? extends T vs ? super T 的区别和使用场景
  • 异常体系:受检异常 vs 非受检异常、异常链、try-with-resources
  • 反射机制:类加载、性能损耗、框架底层依赖
  • 内部类与静态内部类:内存泄漏隐患、闭包陷阱
  • 值传递还是引用传递:Java 的内存模型决定了一切
  • 对象创建过程:类加载检查、内存分配、构造函数执行
  • 浅拷贝与深拷贝:Cloneable 接口、复制构造函数、序列化方式

面试题分级

级别考察重点期望回答判分标准
P5基本概念、API 使用、常见区别能背出流程,不怵简单追问表面正确即可
P6源码阅读、原理机制、边界条件能回答追问,不怵连环追问深度过关
P7方案选型、生产问题、最佳实践有实战案例,能讲清 trade-off经验闭环

高频必考题 🔴

equalshashCode 契约

面试官问:"HashMap 的 key 为什么建议用 String?重写 equals 不重写 hashCode 会怎样?"

这道题我通常用来测试候选人有没有真正理解"哈希表的契约"。背过源码的占 80%,能讲清楚哈希碰撞和扩容机制的占 50%,能说出这个契约背后原因的只有 10%。

String 不可变性

面试官问:"String 为什么设计成不可变的?String s = new String("abc") 创建了几个对象?"

这道题能追问到字符串常量池、GC 优化、类加载器等多个维度。是测试候选人有无全局视野的经典题。

泛型擦除

面试官问:"List<String>List<Integer> 泛型擦除后变成什么?为什么?"

这道题是泛型部分的杀手题。很多人能背出"类型擦除"三个字,但被追问到"擦除后的类型是什么"、"桥接方法怎么回事"就彻底卡住。

中频常考题 🟡

  • static 关键字与类加载顺序
  • abstractinterface 的选择
  • 异常体系与 try-with-resources
  • 反射机制与性能损耗
  • 值传递与对象引用

低频了解题 🟢

  • 内部类分类与使用场景
  • 浅拷贝与深拷贝的实现方式
  • var 关键字(JDK 10+)

学习路径指引

P5 候选人(校招/初级社招)

重点掌握:OOP 特性、equalshashCode、String 基本概念、异常处理、集合常用 API。达到"能背出流程,不怵简单追问"即可。

P6 候选人(中级社招)

必须在源码层面理解 HashMap、ArrayList、LinkedList 的实现,能够解释为什么 HashMap 用红黑树、ArrayList 扩容为什么是 1.5 倍。泛型、反射、类加载机制要有深度理解。

P7 候选人(高级/架构方向)

除了原理,还要有方案选型能力和生产经验。比如:什么场景下不用 HashMap 而用其他结构、序列化框架如何选择、类加载器的隔离设计。

【面试官心理】 P7 候选人最值钱的地方不是知道得多,而是能在约束条件下做 trade-off。你说你熟悉设计模式,那你在项目里什么时候会违背开闭原则?这种问题比背模式定义重要一百倍。

常见翻车点

翻车点一:只背结论,不懂原理

表现太流畅、一问细节就卡。说明是背的,不是真的理解。

翻车点二:知道但讲不清楚

能实现功能,但在面试压力下无法清晰地解释为什么这么设计。

翻车点三:没有生产经验

能讲清楚概念,但说不出生产环境出过什么问题、怎么排查的。

💡

看完每篇文章后,试着向自己复述三遍:如果我是面试官,我会追问什么?这个问题的边界条件是什么?生产环境这个问题会导致什么后果?

导航指引