互联网大厂Java面试实录:三轮技术问答深度解析(含Spring Boot、微服务、电商秒杀设计)
·
互联网大厂Java面试实录:三轮技术问答深度解析(含Spring Boot、微服务、电商秒杀设计)
面试官(M):我们需要一位扎实的Java工程师,希望你展现出你的实力。 谢飞机(X):(嘴角一翘)开始吧,Java的世界,我来了!
第一轮:Java基础与核心技术
M:先说说HashMap的线程安全问题和底层结构。 X:HashMap非线程安全,底层数据结构为数组+链表/红黑树。当并发put时,可能导致数据丢失或死循环。若需线程安全,推荐使用ConcurrentHashMap。
Map<String, String> map = new ConcurrentHashMap<>();
map.put("key", "value");
M:JVM内存模型是什么?GC如何触发? X:JVM分为堆、栈、方法区等。GC主要针对堆内的对象。年轻代GC如Minor GC,老年代界GC如Major/Full GC,可用System.gc()主动触发,或因对象不可达、内存不足等被动触发。
第二轮:Spring Boot与微服务
M:讲一下Spring Boot自动配置原理。 X:Spring Boot基于@EnableAutoConfiguration注解,自动根据classpath下依赖引入相关Bean配置。常见应用如下:
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
M:微服务应用如何服务注册与调用? X:通常使用Eureka、Consul等注册中心。服务间调用可用Feign或RestTemplate。
第三轮:数据库与电商秒杀设计
M:高并发秒杀场景怎么保证一致性与性能? X:采用Redis预减库存,防止超卖;下单采用消息队列削峰。数据库层面利用事务、悲观乐观锁控制一致性。
// Redis预减库存示例
Long stock = redisTemplate.opsForValue().decrement("product_stock:" + productId);
// 判断库存
if (stock < 0) {
throw new OutOfStockException("库存不足");
}
M:给出防止重复下单的设计方案? X:结合去重表、Redis原子操作+唯一token实现。
总结
面试官总结:谢飞机不仅代码扎实,对系统设计和高并发场景也有深入理解。建议持续学习源码和分布式架构。 谢飞机感言:感谢各位面试官,等我拿上offer请大家喝咖啡!
更多推荐


所有评论(0)