写了5年Java,竟答不出JVM是啥?这12个基础面试题,让多少老司机翻车![特殊字符]
写了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 高频面试题!
更多推荐


所有评论(0)