Java大厂面试实录:当严肃面试官遇上搞笑程序员谢飞机
·
Java大厂面试实录:当严肃面试官遇上搞笑程序员谢飞机
第一轮:Java基础考察
面试官:谢飞机,你简历上写精通Java?那能说说Java的内存模型吗?
谢飞机:啊?内存模型?就是Java那个...堆啊栈啊什么的吧!(抓头)
面试官:(微笑)不错,能提到堆和栈。那你能详细说说JVM的内存分区吗?
谢飞机:哎呀,这个我懂!堆是放对象的,栈是放局部变量的...还有...那个...方法区?(不确定)
面试官:基本正确,但方法区在JDK8后改名为元空间了。你平时用过多线程吗?
谢飞机:用过用过!我上次还用Thread写了个爬虫呢!(得意)
面试官:那你知道volatile关键字的作用吗?
谢飞机:(支支吾吾)这个...好像是防止指令重排序?
第二轮:Spring框架实战
面试官:你简历里提到Spring Boot,能说说@Autowired的原理吗?
谢飞机:这个...不就是自动注入嘛!Spring会自己找对象!(理直气壮)
面试官:那你遇到过循环依赖的问题吗?怎么解决的?
谢飞机:啊?循环依赖?我一般重启项目就好了!(尴尬)
面试官:(叹气)其实可以用@Lazy或调整依赖关系解决...
第三轮:数据库与ORM
面试官:用过Hibernate吗?说说它的缓存机制。
谢飞机:缓存?Hibernate不是直接连数据库的吗?(一脸懵)
面试官:(摇头)Hibernate有一级缓存、二级缓存...
谢飞机:哦!对对对!我好像用过...但不记得了!(挠头)
技术点总结
- Java内存模型:堆、栈、元空间等。
volatile关键字:保证可见性,防止指令重排序。- Spring依赖注入:
@Autowired的原理与循环依赖解决方案。 - Hibernate缓存:一级缓存(Session)、二级缓存(SessionFactory)。
// 示例:使用volatile关键字
public class Singleton {
private volatile static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
更多推荐

所有评论(0)