首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Java面试三连击:原理拆解+实战避坑

Java面试三连击:原理拆解+实战避坑

作者头像
予枫
发布2026-01-12 14:41:18
发布2026-01-12 14:41:18
780
举报
文章被收录于专栏:Java 筑基与进阶Java 筑基与进阶

很多刚学 Java 的小伙伴在面试时都会遇到一个尴尬的情况:题目明明看着很眼熟,答案也能背个大概,但面试官稍微追问一句“为什么”,就立刻哑口无言。

今天我们精选了 3 道 Java 面试中出镜率最高的“老生常谈”,不讲枯燥的概念,只讲核心原理和实战场景,助你从容应对!

1. 夺命三连问:finalfinallyfinalize 有什么区别?

这道题简直是面试界的“大家来找茬”,长得像但实际上毫无关系。

  • final (修饰符): 它是“不可变”的意思。
    • 修饰变量:一旦赋值,不可修改(常量)。
    • 修饰方法:不能被子类重写(Override)。
    • 修饰:不能被继承(比如 String 类就是 final 的,谁也别想改它)。
  • finally (关键字): 它是异常处理 try-catch 的“老搭档”,通常用来关闭资源(如数据库连接、IO 流)。
  • 这里有两个高频面试考点,请务必记清楚:
    • 1. 经典的“回马枪”:如果在 try 块里写了 returnfinally 还会执行吗?
    • 答案:会!
    • 细节: finally 块里的代码会在 return 语句执行之后、但在方法真正返回给调用者之前执行。
    • 注意:不要在 finally 里写 return,否则会覆盖掉 try 里的返回值,导致难以排查的 Bug。
    • 2. 唯一的“死穴”:finally 真的不管发生什么都会执行吗?
    • 答案:不是。
    • 如果代码中执行了 System.exit(0)(终止 JVM 运行),或者线程被强行杀死、电脑断电等物理因素,finally不会执行
    • 这在面试中属于“进阶回答”,能体现你对 Java 虚拟机运行机制的了解。
  • finalize (方法): 它是 Object 类的一个方法,用于垃圾回收(GC)。 千万别用它! 它不仅运行不确定,还严重影响性能。Java 9 之后已经被标记为“过时(Deprecated)”,面试官问这个主要是看你知不知道它已经被淘汰了。
2. 字符串三兄弟:StringStringBufferStringBuilder 选谁?

你可能知道 String 是不可变的,但什么时候该用另外两个?

  • String
    • 特点: 每次修改(拼接、裁剪)都会产生一个新的字符串对象,非常耗内存。
    • 场景: 少量数据的操作,或者作为常量使用。
  • StringBuilder (推荐):
    • 特点: 可变,拼接字符串效率极高。但它是线程不安全的。
    • 场景: 单线程环境下的大量字符串拼接(例如:在一个循环里拼 SQL 语句)。
  • StringBuffer
    • 特点:StringBuilder 一样可变,但加了锁(synchronized),是线程安全的,因此速度稍慢。
    • 场景: 多线程环境下的字符串操作(现在用的比较少了,通常用局部变量配合 StringBuilder)。

一句话总结: 随手写用 String,循环拼接用 StringBuilder,多线程并发才考虑 StringBuffer

3. 集合双雄:ArrayListLinkedList 的底层战争

这道题考察的是你对数据结构的理解。

  • ArrayList (基于数组):
    • 原理: 就像一排紧挨着的柜子。
    • 优势: 查东西超快(随机访问),只要知道编号(索引),瞬间就能拿到。
    • 劣势: 增删慢。如果你要从中间拿走一个柜子,后面的所有柜子都要往前挪一位,累死人。
  • LinkedList (基于链表):
    • 原理: 就像寻宝游戏,每个节点手里都拿着下一张纸条的线索。
    • 优势: 增删超快。只要改一下纸条上的线索指向就行,不需要挪动其他人。
    • 劣势: 查东西慢。想找第 100 个人,必须从第 1 个人开始顺藤摸瓜一个个问下去。

实战选择:

90% 的业务场景中,我们都是“读多写少”,所以 ArrayList 是首选。除非你真的需要在列表头部频繁插入删除数据,否则请忘记 LinkedList。


总结

面试不是背书,而是展示你对技术的理解。

  • 分清长得像的关键字。
  • 根据场景(单/多线程)选择字符串工具。
  • 根据操作类型(查/改)选择集合容器。

掌握了这些底层逻辑,面试官再怎么变着法问,你都能从容接招!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 夺命三连问:final、finally、finalize 有什么区别?
  • 2. 字符串三兄弟:String、StringBuffer、StringBuilder 选谁?
  • 3. 集合双雄:ArrayList 和 LinkedList 的底层战争
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档