大厂Java面试爆笑实录:小猿的求生欲与技术真相
大厂Java面试爆笑实录小猿的求生欲与技术真相面试官推了推眼镜请坐。先自我介绍一下。小猿搓手我叫小猿三年Java经验会写Hello World也会删库跑路…啊不是会优化SQL第一轮Java基础与集合稳中带皮面试官ArrayList和LinkedList区别什么场景用哪个小猿ArrayList像地铁——查得快插队难LinkedList像火锅店排队——插队快找人慢面试官HashMap底层结构JDK8做了哪些优化小猿数组链表红黑树哦不对…是“数组链表超8个变树”面试官那扩容机制呢小猿翻倍像我工资一样…啊不是是2倍 ✅ 面试官点头嗯基础还行。第二轮并发与JVM渐入深水区面试官线程池7大参数corePoolSize和maximumPoolSize啥关系小猿核心线程像正式工最大线程像外包实习生…活多了就全叫来面试官OOM常见类型如何定位内存泄漏小猿Out Of Memory我上次OOM是因为没关IDEA…啊是jmap -histo面试官CMS和G1区别小猿CMS…C是ConcurrentM是MarkS是SweepG1是Garbage First——它说“我第一个干垃圾” ❌ 面试官皱眉…再想想。第三轮中间件与架构水面下全是冰山面试官Redis缓存穿透、击穿、雪崩怎么解决小猿穿透黑客查不存在的ID我加布隆过滤器击穿热点Key过期我加互斥锁雪崩全缓存失效我加随机过期时间面试官RabbitMQ消息丢失怎么保证小猿生产者confirm、MQ持久化、消费者手动ack面试官xxl-job执行失败怎么重试调度中心高可用怎么做小猿…重试点重试按钮高可用多部署几个 ❌ 面试官合上简历好的今天先到这儿。面试官微笑感谢你的时间我们后续会通知你结果——大概率是“回家等通知”。【答案详解】小白速记版ArrayList vs LinkedListArrayList基于动态数组支持O(1)随机访问插入删除O(n)LinkedList基于双向链表插入删除O(1)访问O(n)。高频查询选ArrayList频繁头尾增删选LinkedList。HashMapJDK8数组链表红黑树。当链表长度≥8且数组长度≥64转为红黑树减少查找时间复杂度至O(logN)。扩容为2倍rehash迁移。线程池7参数corePoolSize常驻线程、maxPoolSize最大线程数、keepAliveTime空闲存活时间、unit、workQueue阻塞队列、threadFactory、handler拒绝策略。core task max时新任务进队列task max时触发拒绝策略。Redis三崩穿透→布隆过滤器/缓存空值击穿→逻辑过期/互斥锁雪崩→随机TTL多级缓存熔断降级。RabbitMQ可靠性生产者开启Confirm模式Exchange/Queue/Message设durabletrue消费者关闭自动ACK业务成功后再手动channel.basicAck()。xxl-job高可用调度中心集群部署依赖DB主键ID生成调度任务执行器注册多实例失败策略支持失败重试、阻塞策略单机串行/丢弃后续/覆盖之前。全文共1980字技术不装腔学习不踩坑。