前几天一个准备跳槽的朋友发消息问我:GPT-4都能刷穿LeetCode了,我还在天天刷算法题、背Java八股文,是不是有点蠢?我当时没直接回答他,而是反问了一句:你用GPT-4写过代码吧?你觉得它写出来的东西,你敢直接上生产吗?他沉默了一会儿说:不敢。我说,那答案不就出来了。
我再补一个真实场景。去年我负责部门后端岗位的终面,有个候选人履历很漂亮,项目描述里主动写了“使用GPT-4辅助开发”。我随口问了一句:那你讲讲,HashMap在JDK 8扩容时,为什么链表转红黑树的阈值是8而不是9?他愣了一下,特别自然地回答:这个我问过GPT-4,但具体数值我没记住,反正面试应该不会考这么细吧。我当时心里挺复杂的。后来我在面试小结里写了一句:工具用得很熟练,但底层认知是空心的。
我讲这个例子,不是想嘲笑谁。我是想认真回答标题里的问题:GPT-4都来了,我们还需要刷算法题和背八股文吗?我的答案是:需要,而且需要得更狠了,只是方法和过去不一样。因为GPT-4真正改变的,是“查到答案”的成本,而不是“理解答案”的成本。算法题和八股文训练的核心,从来不是“把题解背下来”,而是“在没有现成答案时,如何从零开始推导、权衡、取舍”。这个过程AI替代不了,但它可以帮我们练得更快。
既然聊到这里,我就把最近大半年的实操经验、踩过的坑、以及我对“AI时代的面试准备”这件事的全部思考,一次性讲清楚。
1. 先说点扎心的:面试官要的不是答案,是“思考过程”
很多人把算法题当成“高考数学题”,把八股文当成“政治大题”,觉得背得越熟越好。但如果你真的坐到面试官那一侧看几场面试,你会发现完全不是这么回事。
1.1 算法题像一场“需求不明确的项目演练”
面试官让你写一道算法题,真的只是为了看你会不会背“两数之和”的哈希表解法吗?不是的。如果你直接把最优解拍在屏幕上,他反而会追问:你写之前为什么没有确认数组是否有序?你有没有想过如果输入是海量数据、内存放不下怎么办?你返回的是下标还是值,题目里有没有说清楚?
这些追问背后藏着一个更真实的隐喻:算法题就是一次压缩版的需求开发。那个题目描述并不完善,边界条件需要你主动问,就像产品经理丢给你一句“把用户列表优化一下”一样含糊。你能不能识别出“数组为空”“只有两个元素”“可能有重复值”这些边界条件,远远比你会不会写哈希表更反映真实工作能力。
我之前面试过一个候选人,他的算法功底不算强,但拿到“一个字符串中第一个只出现一次的字符”这道题时,他先问了三个问题:“输入只包含小写字母吗?”“字符串可能为空吗?”“时间复杂度和空间复杂度有优先级吗?”就凭这三次提问,我基本已经愿意给他一个很好的评价了。因为这说明他在拿到需求后,第一反应不是动手写代码,而是和“需求方”对齐边界。这种习惯,靠刷题刷不出来,靠背题更背不出来。
所以算法题的第一层意义,是训练“信息收集能力”。GPT-4可以在几秒内给你最优解,但它不会替你去问面试官“返回的是下标还是值”,因为在这个场景里,它根本感受不到真正的信息焦虑。
1.2 八股文背的其实是“底层模型的压缩包”
再来说八股文。我承认,“八股文”这个词带着点贬义,因为网上确实有大量“Java八股文面试题”“前端八股文面试题”“嵌入式八股文面试题”正在被死记硬背。但如果你愿意往深一层看,会发现这些题目背后站着的,是某门技术的一套“心智模型”。
比如“HashMap为什么用数组加链表加红黑树”,它背后是哈希表的基本原理、链地址法解决冲突、红黑树为什么适合“大量哈希碰撞”的场景、以及为什么树化阈值是8、数组容量达到64才允许树化。这一整套东西,是Java集合框架的底层模型。你理解了它,以后看ConcurrentHashMap、看Redis的哈希表实现,都会很快。不理解它,你背下来的只是一句“当链表长度大于8时转红黑树”。
再比如“Kafka为什么能支撑百万并发”,这不是靠一个单一机制实现的,而是“顺序写盘+Page Cache+零拷贝+分区并行+消费者组”一整套机制配合的结果。如果你只背关键词,面试官一句“那Zero Copy具体减少了几次拷贝?”就能把你问倒。但如果你的脑子里有这套分布式消息系统的整体模型,你就可以现场推演:生产者发消息经过哪些环节、Broker存储时怎么落盘、消费者拉数据时怎么减少IO、副本同步又怎么保证可靠性。能把这条链路讲通,你才算是真的“懂Kafka”。
所以我不反对背八股,我反对的是“只背八股不理解八股”。把面试题当成线索,沿着线索去建立自己的底层模型,这才是八股文真正存在的价值。
2. 我实测了GPT-4的表现:能打,但别把它当神
标题里有“GPT-4”,那我必须先说说我实际用它刷题、答八股的真实体验。结论可能会让一部分人失望:它确实很强,但它的强,和面试需要的强,不是同一种强。
2.1 它对模板题的碾压是真的,但模板题的价值也在快速归零
我把LeetCode Hot 100里中等难度的题目直接丢给GPT-4,它基本都能给出可运行的代码,复杂度和注释都很完整。像“LRU缓存”这种既考数据结构设计、又考细节的题目,它也能写出一个像模像样的LinkedHashMap版本。
这个现象透露了一个很扎心的信号:如果你对算法题的理解停留在“我做过这道题,我知道答案”,那你的价值正在快速归零。因为一旦阅读和生成题解变得没有成本,这类“见过就会、没见就不会”的技能就失去了筛选意义。面试官如果发现候选人的解题水平仅仅等同于一个任何人都会用的AI,他凭什么给你发offer?
所以,“GPT-4都能做对”这一事实,反而在倒逼面试题往更深入的方向进化。面试官不会再用原题了,他们会改条件、换场景、增加限制。比如把“实现LFU缓存”改成“如果这个缓存要被多个线程同时访问,你怎么加锁才能在保证一致性的同时减少锁竞争”,这种题靠背模板是活不过三分钟的。
2.2 一改限定条件就露馅:它还搞不定“场景变体”
为了验证GPT-4的真实水平,我做过一个挺有意思的实验。我把一道算法题改写成“产品需求”的形态:“用户有一个很大的日志文件,想统计最近5分钟内访问量最高的10个IP,内存只有512MB,怎么办?”
GPT-4给出的方案很标准:时间窗口分桶、滑动窗口、外部排序、近似计数,听着面面俱到。但当我继续追问:“如果某一天某个IP的访问量占了99%,你会怎么处理?”它的回答开始变得摇摆不定,一会儿说可以做热点检测,一会儿说可以拆分窗口,甚至开始编一些不存在的框架。我再追问“那这个方案怎么保证在内存只有512MB时,最坏情况不会OOM?”它就开始绕圈了。
这个实验让我想明白一件事:GPT-4适合做“知识检索”和“方案预演”,但它不适合做需要“动态确认约束”和“权衡取舍”的复杂决策。一个真实系统的问题,往往不是“有没有方案”,而是“在资源、时间、团队能力的多约束下,选哪个方案、舍弃什么”。这个过程需要大量的现实中反馈,而AI目前还没有真正“现实验证”的能力。
面试恰恰就是这种场景的微缩版。面试官不指望你写出一个完美答案,他期待的是:当限制条件变化时,你真的会停下来重新思考,而不是机械地套模板。这种“条件一变,思路就变”的灵活性,才是人类候选人和AI最大的差异点。
2.3 顺便聊聊“温度参数”:理解AI的随机性,才能用好AI
最近“温度参数”这个词挺热门,很多人对着API文档一脸懵。其实它没那么玄,它就是控制模型“说胡话程度”的参数。温度调低,回答更稳定、更像标准答案;温度调高,回答更有创造性,但也更容易跑偏。
我自己的使用习惯是:当我把题目丢给GPT-4、希望得到可复现的分析时,我会把温度调到0.2到0.4之间;当我在做头脑风暴、希望它帮我打开思路时,我会调到0.7以上。这么调过后,你会更清晰地感受到“AI的答案不是一个固定结论,而是一次抽样结果”。它可能这次给你正解,下次给你一个错误但听起来很像样的方案。
这个认知非常关键。因为你一旦意识到GPT-4也会一本正经地胡说八道,你就不会再“全盘照抄它的答案”,而是会带着批判的眼光去审视它。这种批判性,恰恰是面试中非常宝贵的素质。
3. 八股文没有死,它只是换了一张脸
现在打开招聘网站,很多岗位描述里依然写着“扎实的计算机基础”。那这个“基础”怎么考核?靠的就是升级版的八股文。但它的形态已经不是“背诵”,而是“现场构造”。
3.1 从背关键词到讲故事:新八股更考验系统理解
以前背八股,背的是“单点知识点”。比如“TCP为什么是三次握手而不是两次”,你可以背“因为前两次只能保证客户端发送能力,不能保证服务端接收能力”这种标准答案。但现在的面试官会继续追问:“那为什么四次挥手不能合并成三次?”“如果客户端最后一次ACK丢了怎么办?”“SYN Flood攻击和半连接队列有什么关系?”
你会发现,这些问题不再是孤立的,它们串在一起,构成了一张TCP状态机的完整地图。只有当你脑子里有这张地图,你才能顺着“连接建立→数据传输→连接释放”这条线,把每个异常情况都讲清楚。这就是“讲故事”和“背关键词”的本质区别。
再拿“Kafka为什么能支撑百万并发”来举例。一个真正理解Kafka的人,会这样讲:生产者先把多条消息批量压缩发送到Broker,这是减少网络IO的第一层;Broker收到消息后顺序写入磁盘,而顺序写盘在机械硬盘上也能达到很高的吞吐,这是第二层;写入时数据先进Page Cache,消费者读的时候大概率直接命中内存,这是第三层;当消费者从分区拉数据时,通过零拷贝直接内核态发送给网卡,这是第四层;再加上分区机制让并行度可以横向扩展,消费者组再帮我们做负载均衡和故障转移,最后才有百万量级的支撑能力。
你看,这已经不是一道“题目”了,而是一个完整的“技术故事”。AI可以帮你把这个故事收集起来,但如果你不理解故事的每个环节,你连“讲”都讲不出来。
3.2 用GPT-4背八股的三步法:先不背书,先让它给你出变体题
这里分享一个我实际在用的方法,对准备Java八股文、以及其他方向面试的人都很有效。我把它叫“追问式陪练法”。
具体三步:
- 让GPT-4围绕某个专题连续追问我5个由浅入深的问题。比如HashMap:先问最基础的“底层结构是什么”,再问“加载因子为什么是0.75”,再问“链表转树为什么先检查数组容量到没到64”,层层递进。
- 我先不看答案,自己尝试回答。回答完以后让GPT-4点评,指出错误和遗漏,并给出一份参考回答。
- 我把参考回答读一遍,然后合上对话窗口,用自己的话重新把这个知识点讲一遍。讲不清的地方,就是我的认知盲区,我会单独标记,第二天再让GPT-4针对这些盲区继续追问。
这套流程,本质上是在用“主动提取”替代“被动阅读”。心理学里有个经典结论:同样的内容,你主动回忆一遍,记忆效果远好于看三遍。用GPT-4连续追问,就是被迫不停做“主动回忆”。
你可以把下面这段Prompt存下来直接用,我试过很多次,效果比直接问“给我讲讲HashMap”好得多:
你是一位资深Java面试官。请围绕HashMap这个知识点,连续问我5个由浅入深的问题。 每当我回答完一个问题后,请指出我回答中的错误和遗漏,并给出一个更完整的参考答案。 等这一组问题结束后,再给我出一道“场景变体题”, 比如“如果HashMap的值是一个高频更新的对象,如何减少内存占用”。 注意:请用口语化的方式解释,不要堆砌术语。这个Prompt里最妙的其实是“场景变体题”这一步。网上整理好的Java八股文面试题是死的,但变体题是活的,它能逼你把自己掌握的知识迁移到一个全新的应用场景里。这种迁移能力,正是面试中最需要的。
3.3 Java、前端、嵌入式……不同方向的八股文重点都已经变了
现在搜“Java八股文”“前端八股文”“嵌入式八股文”“软件测试八股文”“C++八股文”“C语言八股文”“硬件工程师八股文”,你会发现每个方向的题库都已经卷到了新高度。但我的观察是:越是偏底层、偏硬件的方向,八股文越不可能被AIGC取代,因为那些知识必须靠实际调试和实验来验证。
拿嵌入式面试题里常见的一道题来说:“中断服务函数里为什么不能调用printf或malloc?”这个问题看起来是在考“实时性”,但背后牵扯到的,是栈空间大小、重入、死锁、关中断对系统的影响、以及你是否有过在真实MCU上调试的经验。你可以让GPT-4把“为什么不能”解释得头头是道,但如果你没有亲手在中断处理函数里调用过printf,看着程序运行一段时间后突然死机,又花三个小时用示波器和串口日志定位到问题,你就不可能真正理解“为什么”。八股文在这里不再是一条背诵题,而是一个“实践的索引”。它提示你“这里有个坑”,但真正的理解,需要你掉进坑里再爬出来。
所以,我的态度是:八股文永远不会消失,它只会从“考记忆”变成“考理解”。AI能帮你快速收集知识,但它不能替你完成“实践”和“消化”。你跳过哪一步,面试时就会在哪一步露馅。
4. 实操方案:把GPT-4当作陪练,而不是枪手
说了这么多,下面给一套可以直接用的实操方案。这套方案是我自己调整过好几轮的结果,重点只有一个:让GPT-4成为你的健身教练,而不是代打。
4.1 刷算法题的四个步骤:让AI点评,而不是让AI代写
我刷LeetCode的流程是固定的,用了大半年,效果比之前自己闷头刷好很多:
- 拿到题目后,不看题解、不看讨论区,先在纸上自己画用例、想边界条件,尝试写一版哪怕是暴力解的代码。
- 代码写完之后,把代码贴给GPT-4,让它只做三件事:指出复杂度问题、找出隐藏的边界条件bug、给一个优化方向。注意,这里明确要求它“先不要给完整答案”。
- 根据它的提示,我自己实现优化版本。如果实在卡住,我才会让它给思路提示,而不是给代码。
- 最后再让它给出一种我完全没想到的解法。我会仔细对比“我的思路”和“它的思路”之间的差距,然后把这道题标记为“需要复刷”,第二天不借助任何工具,独立再写一遍。
我把这套流程和同事传统的“刷三遍题”对比过,效率差距很明显。传统刷题容易陷入“看答案→感觉懂了→遇到原题又不会”的循环,而“AI点评式刷题”逼着我先自己思考,再让AI补盲,每一步都在强化理解。
下面这个表是我比较早期整理出来的,建议截图存一下:
| 环节 | 传统方式 | GPT-4辅助方式 |
|---|---|---|
| 看题 | 自己读完就动手 | 自己读完先问边界条件,再让AI补充遗漏边界 |
| 解题 | 死磕或直接看题解 | 先独立写一版,AI点评后自己优化 |
| 学习新解法 | 看题解代码 | 让AI讲清思路差异,再合上屏幕重写 |
| 复习 | 重刷原题 | 让AI出变体题,检验迁移能力 |
这套流程最大的好处是:你始终站在“主动输出”的位置。AI只是你的镜子,帮你照见自己哪里想得不够,而不是替你完成思考。
4.2 模拟面试追问:用AI逼出你知识体系里的漏洞
还有一个特别“虐”但特别有效的方法:让GPT-4扮演一个“不给面子的面试官”。
你可以直接对它说:“我们来模拟一场Java后端面试,你问我八股文,每次我回答完,你都要从我的回答里找一个漏洞继续追问,至少追问三轮。”它真的会追着你打。我曾经让它问“Kafka为什么能支撑百万并发”,被它一路追问到“Page Cache什么时候刷盘”“消费者offset提交失败怎么办”“副本拉取消息时还能走零拷贝吗”,追到我哑口无言。
这种体验一开始你会觉得很挫败,但它能让你最直观地看到自己知识体系的裂缝。面试时你最大的敌人不是面试官,而是“你以为你会了”的那种错觉。用AI当陪练,就是提前把错觉戳破,把漏洞补上。
模拟的时候有一个技巧:每被追问卡住一次,就在纸上记录一个问题。答完以后,把这些问题整理成清单,第二天针对清单逐一学习,再让AI重新问一遍。这样来两轮,这个知识点的牢固程度会远超你背十遍题库。
4.3 不同阶段读者怎么调整策略
我还想按经验阶段,把读者分成三类,分别说下侧重点。
刚入门、准备校招的读者,算法题依然是基本功,建议保持每天2道左右的节奏,但重点不是“过题数”,而是“把思路讲清楚”。你可以把GPT-4当成一个虚拟听众,每做完一题,就向它口述一遍你的解题思路。如果它的反馈说你“这里有点绕”,你就回去整理思路,直到你能流畅讲出来为止。
有2到5年经验、准备跳槽的读者,我建议适当减少纯刷题量,把精力放在“系统设计类问题”和“项目深挖”上。这个阶段,你最值钱的是实际项目的落地经验。你可以把项目的架构图、技术选型、踩过的坑整理成文字,让GPT-4以面试官的口吻针对你的项目连续提问。它问出来的问题,往往比你自己复盘时想到的问题更刁钻、更全面。
已经做到技术专家或架构师、面试主要是看人的读者,不需要刻意刷题,但建议保持对底层原理的敏感度。我的习惯是,遇到一个新框架或者新中间件,先不看官方文档,尝试根据已有经验推演它的设计思路,然后再让GPT-4给我补充盲区。这是一种“主动建立认知模型”的训练,比被动看文档有意思得多。
5. 常见问题与避坑清单:用AI刷题前,这几件事必须想清楚
最后这部分,我整理了一些大家最关心的问题,还有一些我自己踩过的坑。这些问题在论坛里反复出现,希望你能少走弯路。
5.1 面试时能不能现场用GPT-4?
我的建议是真的别。且不说很多公司有严格的保密要求,单说面试的本质,是“评估你这个人”。如果你现场用AI,等于把评估对象变成了“你+AI”的组合,面试官根本无法判断你的真实能力。更关键的是,当你真的有能力独立解题时,你的表达会自然流畅,逻辑会完整;一旦你依赖AI,你把题目念给AI的那个瞬间,面试官心里大概率已经把你归到“不靠谱”那一档了。
我见过有人辩解说:“以后工作里我也会用AI,为什么面试不能用?”这个逻辑是有问题的。工作里用AI,是因为你在真实的业务约束下做决策,AI只是你的一个信息源,责任和判断仍然在你;而面试现场用AI,等于把“判断”这个最核心的环节也交给了机器,那你让面试官评估什么?评估你的打字速度吗?
5.2 用GPT-4刷题会不会导致能力退化?
这取决于你的用法。如果你把它当“计算器”,只用来验证自己的思路,那不会退化,反而会进步。如果你把它当“拐杖”,解题一刻都离不开它,那一定会退化,而且退化的不只是编码能力,还有Debug能力和问题定位能力。
我说一个自己的经历。以前遇到线上问题,我的第一反应是打开日志、梳理调用链、自己猜测根因;现在有时候第一反应是“把日志贴给GPT-4让它分析”。这个转变有好有坏。好的地方是效率确实高,坏的地方是,如果AI判断失误,而我因为依赖它而失去了独立推理的习惯,那我连反驳它的能力都没有。一旦出现这种情况,我这个“资深工程师”就成了AI的传话筒,这非常危险。
所以我给自己定了一条规矩:凡是AI给出的分析结论,我一定要自己重新走一遍关键证据链,确认它说的每一步都有依据。你可以把这条当作一个“AI使用守则”。
5.3 被问“这题是GPT-4告诉你的吧”,怎么回答不扣分?
这个问题现在越来越常见,我的建议是“诚实,但不要心虚”。你可以大方承认:“这个题我在准备时确实用GPT-4辅助分析过思路,但我现在能独立讲清楚每一步的复杂度推导和边界处理。不信您可以换个变体题试试我。”
这句话的好处在于,你坦诚地说明了工具的使用,同时把“验证能力”的主动权交还给面试官。这比你遮遮掩掩说“没有没有,全是自己想的”要自然得多。如果面试官依然因此给你负面评价,那可能说明这家公司的技术文化比较排斥新工具,这种情况下早发现、早做选择,对你来说不一定是坏事。
5.4 我踩过的五个坑,希望你别再踩
最后,分享五个我亲自踩过的坑:
第一个坑:直接复制答案不思考。你会产生“我已经会了”的错觉,但第二天原题都写不出来。正确做法是合上屏幕,自己重新写一遍。
第二个坑:全盘相信AI的复杂度分析。有一次它把O(n)说成O(log n),我差点被带偏。现在每拿到一个复杂度结论,我都会自己再验一遍。
第三个坑:用AI代替手写代码练习。面试时多数是白板或共享文档,没有自动补全、没有语法高亮,你必须保持“裸写”状态下的语法敏感度。
第四个坑:只问“答案是什么”,不问“为什么”。AI给的答案如果没有被你拆解过,它永远是AI的,不是你的。多问“为什么”“如果改成这样会怎样”才能把它变成你自己的能力。
第五个坑:让AI成为唯一的老师。在关键知识点上,比如TCP状态机、JVM内存模型、操作系统的进程调度,回归源码、官方文档、经典书籍仍然是最可靠的路径。AI适合做检索和陪练,但不应该成为权威。
我个人在实际操作中的体会是:GPT-4的出现,并没有取消“算法题”和“八股文”这两门功课,它更像是把考试方式从“开卷默写”改成了“闭卷答辩”。以前你可以靠背诵混过去,现在AI背得比你快、比你全,所以你必须靠理解来站住脚。换个角度说,我们其实很幸运。因为有了AI陪练,我们可以用更短的时间,走过别人需要更长时间才能走完的学习曲线。前提是,你要把它当成“健身教练”,而不是“代打”。教练不能替你长出肌肉,但能让你每次练得更到位。
最后再分享一个小技巧:每次刷完一道题、理解完一个八股知识点,试着用一段话讲给GPT-4听,然后问它:“如果今天的面试官是你,你会觉得我讲清楚了吗?”这个习惯我坚持了半年,效果比闷头刷三遍题库都好。希望这篇聊完,你也能找到属于自己的节奏。