写了5年Java,竟答不出JVM是啥?这12个基础面试题,让多少老司机翻车!😱

最近有个朋友去面试,被问了一个看似简单的问题:“你说说JVM、JDK、JRE三者啥关系?”

结果他支支吾吾半天没答上来。

事后他跟我吐槽:“我天天用Java写代码,这些概念天天见,但真让我说清楚,还真懵了……”

你猜面试官怎么说?

“基本功不扎实。”

就这五个字,基本宣告了面试结束。

很多Java开发者都有这个毛病——代码写了不少,基础一问就倒。今天这篇文章,帮你把Java基础的核心考点捋得明明白白,面试再也不怕被"灵魂拷问"。👇


一、Java凭什么能"一次编写,到处运行"?🌍

答案:JVM(Java虚拟机)

打个比方:Java代码就像一份世界通用菜谱,但每个国家的厨房(操作系统)不一样。JVM就是个万能翻译官,把菜谱翻译成当地厨房能看懂的语言。

这就是Java跨平台的核心秘密!


二、JVM、JDK、JRE,傻傻分不清楚?🤔

记住一句话:JDK > JRE > JVM

  • JVM:只负责运行Java程序(相当于"播放器")
  • JRE = JVM + 核心类库(能运行,但不能开发)
  • JDK = JRE + 开发工具(能运行,也能写代码)

你要写代码,装JDK就够了,它全包了!


三、int 和 Integer,就差一个字母,区别很大?🔢

  • int 是基本数据类型,直接存数值,效率高
  • Integer 是int的"包装盒"(包装类),是一个对象

什么时候用哪个?

  • 日常计算用 int(快!)
  • 集合(List、Map)里只能用 Integer(集合只认对象)

装箱:int → Integer
拆箱:Integer → int


四、面向对象的三大支柱:封装、继承、多态 🏛️

用现实世界来理解:

  • 封装:把东西装进盒子,只留几个按钮给你操作(隐藏细节,暴露接口)
  • 继承:儿子自动拥有老爸的东西(代码复用)
  • 多态:同一个按钮,不同机器按下去效果不一样(同一接口,不同实现)

面试常问:方法重载和方法重写的区别?
答:重载是"同方法名不同参数",重写是"子类改写父类方法"。


五、反射是什么?Java的"照妖镜" 🔍

反射能在运行时知道一个类有什么方法、什么属性,还能动态调用它们。

经典应用:Spring框架就是靠反射把对象自动注入的!


六、注解(Annotation)是怎么起作用的?🏷️

注解就像给代码贴便利贴

比如 @Override 就是在告诉编译器:“这个方法是重写父类的,帮我检查下对不对!”

注解本身不干活,干活的是读取注解的代码(通常用反射实现)。


七、异常处理:try-catch-finally 的正确姿势 🛡️

  • try:可能会出错的代码放这里
  • catch:出错后怎么处理
  • finally:不管出不出错都要执行(通常用来关闭资源)

面试必考:finally 在 return 之前还是之后执行?
答:finally 一定会执行,哪怕 try 里有 return!


八、为什么重写 equals 就必须重写 hashCode?⚖️

因为 hashCode 是对象在哈希表中的"门牌号"

如果你只改了 equals(判断两个对象是否相等),没改 hashCode,那么在 HashMap 里就会出问题——相等的对象可能找不到彼此

记住:equals 相等的两个对象,hashCode 必须相等!


九、String、StringBuffer、StringBuilder 怎么选?📝

  • String:不可变,每次修改都创建新对象(慢,但安全)
  • StringBuffer:可变,线程安全(慢一些)
  • StringBuilder:可变,非线程安全(最快)

频繁修改字符串,用 StringBuilder!


十、Java 8 三大新特性,面试必问!🚀

1️⃣ Lambda 表达式

一句话:让代码更简洁,告别啰嗦的匿名内部类。

// 以前
list.sort(new Comparator<String>() {
    public int compare(String a, String b) {
        return a.compareTo(b);
    }
});

// 现在
list.sort((a, b) -> a.compareTo(b));

2️⃣ Stream API

像流水线一样处理集合数据:

// 找出所有大于18的用户,按名字排序
users.stream()
     .filter(u -> u.getAge() > 18)
     .sorted()
     .collect(Collectors.toList());

3️⃣ CompletableFuture

让异步编程变得简单,再也不用手写回调地狱了!


十一、IO模型:BIO、NIO、AIO 的区别 📡

餐厅点餐来理解:

  • BIO(同步阻塞):一个服务员服务一桌客人,客人没点完就一直等着
  • NIO(同步非阻塞):一个服务员来回巡桌,谁点好了就服务谁
  • AIO(异步非阻塞):客人点完按铃叫服务员,服务员不用一直盯着

高并发场景选 NIO,Netty 就是基于 NIO 的!


十二、设计模式:不是死记硬背,是解决问题的套路 🎯

面试常问的几个:

  • 单例模式:确保一个类只有一个实例(如:数据库连接池)
  • 工厂模式:把创建对象的逻辑封装起来
  • 观察者模式:一个变了,通知所有人(如:事件监听)

记住:设计模式没有标准答案,能解决实际问题就是好模式


📌 总结一下

Java基础面试,考的从来不是"你会不会写代码",而是**“你对这门语言理解有多深”**。

把上面这12个考点吃透,至少在面对Java基础问题时,你能做到对答如流、不露怯


💬 你在面试中遇到过哪些"翻车"的Java基础题?欢迎在评论区分享!

❤️ 觉得有用,点个"在看"再走吧~

🔄 转发给你身边正在找工作的朋友,一起进步!

📢 关注我,下期更新 MySQL/Redis 高频面试题!

更多推荐