从今天觉醒,技术赋予每一个人数字生命
与 AI 搏斗失败后重新开始找工作:经验分享与半可靠避雷指南
最近在少数派的社区里,一篇关于“与 AI 搏斗失败后重新找工作”的分享引发了热烈讨论。作为一名常年带新人的技术老兵,我太懂这种挫败感了。现在的初级开发者找工作,简直就像被丢进了一个没有硝水的滚筒洗衣机——你刚把简历投进去,AI 就把它甩得找不到北。
很多在校生和转行者满怀希望地学了两年语法,背了八股文,结果在面试时被问及真实项目协作与约束,瞬间大脑空白。今天,我们不讲大道理,只从一个真实的“翻车”场景切入,聊聊在 AI 时代,如何重新武装自己,找到第一份工作。

30 秒结论
- 本文判断:在 AI 辅助甚至替代部分编码工作的当下,初级岗位的竞争已从“语法熟练度”转向“逻辑控制与系统边界感知”。只会写增删改查(CRUD)的流水线代码已无竞争力。
- 适用对象:计算机在校生、培训班毕业生、自学转行者。你学过基础语法,但缺少真实项目里的协作、约束与排错经验。
- 不适合谁:期望通过背题库直接拿 Offer 的人;想要一套大厂级生产环境微服务架构的人。
关键证据
展开说明
让我们看一个真实场景。某次面试中,我给候选人出了一道经典的位运算题:用位掩码来管理用户权限。候选人用大模型几秒钟生成了如下代码:
// 判断用户是否同时拥有读和写权限
public boolean hasReadAndWrite(int userPermissions) {
int READ = 1; // 0001
int WRITE = 2; // 0010
return (userPermissions & READ) && (userPermissions & WRITE);
}
看起来很整洁,逻辑也很清晰,对吧?但这段代码连编译都过不去。
这就是 AI 搏斗失败的典型现场。候选人没有意识到,大模型在这里混淆了“逻辑与”和“按位与”。
在计算机科学中,“与”运算分为两种:
- 按位与(&):对两个二进制数的每一位进行逻辑与运算。两位同时为 1 时结果为 1,否则为 0。常用于掩码和状态提取。
- 逻辑与(&&):用于布尔逻辑判断,且具有短路特性。
大模型生成的代码中,(userPermissions & READ) 返回的是一个 int 类型(要么是 0,要么是 1),而不是 boolean。在 Java 中,不能将 int 直接作为布尔值用于 && 运算。正确的写法应该是:
// 正确写法:使用按位与提取状态,再进行逻辑判断
public boolean hasReadAndWrite(int userPermissions) {
int READ_AND_WRITE = 3; // 0011
return (userPermissions & READ_AND_WRITE) == READ_AND_WRITE;
}
在这个小例子中,隐藏着一个可以写进作品集的“一小段能力”:对底层内存交互与状态管理的精准控制。行业里,这个技能常用于嵌入式开发、游戏引擎底层、高频交易系统的状态机设计。当你能在面试中主动指出 AI 生成代码的这类缺陷,并解释 & 和 && 在字节码层面的差异时,你就从“AI 的搬运工”变成了“AI 的驾驭者”。
面试常被追问的点:为什么 && 叫短路运算?如果左边表达式为 false,右边还会执行吗?这在实际开发中如何避免空指针异常(NPE)?
落地建议
不要再去写又一个 TODO List 了。今天开始,做这三件事:
风险与反例
当然,强调底层逻辑并不意味着你要去手写所有的东西。
什么情况下结论不成立?
如果你应聘的是偏向业务前端的岗位,或者是一些外包实施岗,面试官可能根本不关心位运算。在这些岗位上,能够快速用 AI 搭建出可用的页面、熟悉当前最新框架(如 React 19 或 Vue 3.5)的 API,可能比懂 & 和 && 的区别更吃香。
反例:有候选人过度追求底层,在面试中强行向面试官炫耀自己用 C 语言手写了内存池,但被问到如何处理跨域请求(CORS)时却支支吾吾。这就本末倒置了。底层知识是你的护城河,但前提是护城河里面得有一座能住人的“业务城堡”。
找工作是一场与行业的博弈,也是一场与自己的和解。AI 拿走了那些不用动脑子的体力活,留下的,恰恰是那些需要真正思考和判断的硬骨头。咬碎它们,你的路才会宽。

