第一点理解设计动机而不是记住结论八股文最大的问题是只给结论不给原因。比如“ArrayList默认容量是10”背下来有什么用面试官想知道的是为什么是10扩容因子为什么是1.5为什么不是2你如果去看源码注释会发现1.5是空间与时间折中的经验值太大浪费内存太小频繁拷贝。再比如“String为什么不可变”背“线程安全、哈希缓存”只是皮毛真正的原因是安全性和性能的平衡——不可变才能安全地作为HashMap的key才能实现字符串常量池。每一个结论背后都有一串权衡理解了权衡结论不用背也忘不掉。孔子说“学而不思则罔”只背不想就是罔。第二点把知识点串成线而不是散落成点很多人背八股文是孤立地背JVM内存模型是一块GC算法是一块并发编程是一块。面试官问“ThreadLocal内存泄漏”你背了“key弱引用、value强引用”但面试官接着问“为什么这样设计”你就接不上了。如果你把ThreadLocal和JVM的引用类型、GC可达性分析、线程生命周期串起来看答案自然就出来了key弱引用是为了线程池场景下能回收Entryvalue强引用是因为设计者假设你用完会remove。知识点是珠子逻辑是线没有线串起来珠子撒一地捡都捡不起来。面试时你能把三个看似无关的知识点连成因果链面试官就知道你脑子里有地图不是硬盘。第三点用真实案例证明你踩过坑八股文背得再溜不如一句“我遇到过”。比如你讲“Spring循环依赖”不要只说“三级缓存解决”要说“我们项目里有个Service A依赖BB依赖A启动报BeanCurrentlyInCreationException。我先看堆栈定位到AbstractAutowireCapableBeanFactory然后查文档明白三级缓存的作用最后把其中一个依赖改成Lazy解决。”这个故事里有现象、有工具、有分析、有决策。面试官不怕你犯错怕你没犯过错。犯错说明你真写过代码真排查过问题。纸上得来终觉浅绝知此事要躬行。八股文是别人的经验案例是你自己的经验哪个更有说服力八股文该背但不能只背我不否认八股文的价值。基础概念是入场券连volatile和synchronized的区别都说不清确实过不了初筛。但八股文决定你能不能进下一轮思维深度决定你能不能拿高薪。面试的本质是信息不对称下的信号博弈面试官通过你的回答判断你的能力。背答案传递的信号是“我准备了”讲思考传递的信号是“我能干”。前者是及格线后者才是区分线。怎么练费曼技巧加复盘把每个八股文知识点当成一道题用费曼技巧讲给空气听假设对面是个完全不懂的人你能不能用大白话讲清楚它是什么、为什么存在、怎么用、有什么坑。讲不下去的地方就是你的盲区。每个项目结束后花半小时复盘用了什么技术遇到什么问题怎么定位的怎么解决的。把这些复盘写成文档面试前翻一遍比背一百道八股文管用。知识是别人的经验才是自己的。面试官招的是能解决问题的人不是能背诵的人。把三点吃透offer自然来。
