Starboard 的负责人 James Lowman 面试时爱问一句:"讲讲你最近写的三个 Claude Code skills。" 有个实习生答了俩字——没有。 理由是用不起付费工具。
上周 LeadDev 专门发了篇文章,标题翻译过来就是:你的面试题,默认候选人买得起 Claude Code Max。
我刷到这事的时候愣了一下。不是因为心疼那个实习生,是我突然想明白——这两年我面过、看过、听过的 AI 相关面试题,没几个人真正搞懂面试官在问什么。
这不是段子。知乎一篇高赞面经,原话:
"AI 编程标配 Cursor / Claude Code(面试现场允许用 AI 工具解题,观察你怎么用)"
还有个前端跑了五家主打 AI 业务的前端岗,回来写的原话:
"现在面试官根本没兴趣跟你死磕老八股默写……不少面试官开场跳过基础原理,直接上 AI 业务落地、流式交互、模型前端集成、工程质量管控类场景题。"
划重点不是"用没用过 AI",是你怎么用。
博客园有位作者这话挺狠——"面试 AI Coding,我只看你是不是驾驶员。"他说他观察到一个现象,很多人聊 AI 跟聊新闻联播似的,DeepSeek、Agent、上下文窗口、推理模型、多模态、MCP,词儿蹦得贼溜,但全是"知道",没一个"做过"。
这种人就是面试官要刷掉的。
我先把最常见的误区摆出来。很多人以为 AI 面试就是:面试官问你用不用 AI,你说用,然后讲讲用 Cursor 写了个组件。这点分现在不够了。
面试官真正盯的,我归纳了下,没有一条是"你能不能用 AI 写出能跑的代码"。
挑个真题说。前面那篇面经里反复出现的题:能不能解决 SSE 流式渲染卡顿。
AI 给你写流式对话,大概率长这样:
// AI生成的第一版——能跑,用户一多就卡
function ChatPanel() {
const [text, setText] = useState('');
useEffect(() => {
const es = new EventSource('/api/chat');
es.onmessage = (e) => {
setText(prev => prev + e.data); // ← 每来一个chunk就整体拼接+重渲染
};
return () => es.close();
}, []);
return <div className="whitespace-pre-wrap">{text}</div>;
}
"能跑"。但你要是面试官,看着候选人原样照抄、一个字不质疑,心里基本有数了——这人没拿 AI 写过真正上线的流式功能。
因为真到线上,这段代码有几个要命的坑:
prev + e.data,每来一个 token 就拼一次字符串,长对话下是 O(n²) 的字符串操作,越聊越卡面试官想看的,是你会不会自己把这些坑点出来,然后动手填掉:
// 改进版——现场能主动说出这几个问题,就是加分项
function ChatPanel() {
const [chunks, setChunks] = useState<string[]>([]);
const [done, setDone] = useState(false);
useEffect(() => {
const controller = new AbortController();
fetch('/api/chat', { signal: controller.signal })
.then(res => readStream(res.body!, controller)) // 用ReadableStream,绕开EventSource的坑
.finally(() => setDone(true));
return () => controller.abort(); // 卸载即取消,避免泄漏
}, []);
const deferredChunks = useDeferredValue(chunks);
const content = useMemo(() => deferredChunks.join(''), [deferredChunks]);
return (
<div className="whitespace-pre-wrap">
{content}
{!done && <span className="animate-pulse">▍</span>}
</div>
);
}
这里面没一个高深东西。AbortController、useDeferredValue、useMemo,都是 React 基础 API。AI 默认不会主动给你加这些——它默认你要的是"能跑的代码"。
面试官在看的,是 AI 给的是糙活,你能不能看出哪里不够、该补什么。 这就是"驾驶员"的意思——AI 是车,你是握方向盘的。车自己不会变道,是你让它变的。
知乎那篇面经列的高频真题,几乎全是"找坑"型:
没有一个问"怎么写"。全在问"怎么约束 AI 输出的不确定性"。
道理也简单——AI 写代码这事已经不稀罕了。 稀罕的是知道 AI 的输出哪儿会出问题、出了问题怎么兜。
举个常见的。AI 生成的工具调用类型,十有八九长这样:
// AI默认——把所有可能性拍平成一个大type
type AgentResponse = {
thought?: string;
action?: string;
result?: string;
status?: 'thinking' | 'executing' | 'observing' | 'done';
error?: string;
// ...一堆可选字段
};
能跑。但类型基本没起作用——你拿到一个AgentResponse,根本不知道这个状态下哪些字段一定有、哪些一定没有。面试官想看的是你把它拆成"状态 - 数据"绑一块的判别联合:
// 判别联合——每个状态只带它该带的字段,编译器帮你查错
type AgentState =
| { status: 'thinking'; thought: string }
| { status: 'executing'; action: string; tool: string }
| { status: 'observing'; action: string; result: string }
| { status: 'done'; result: string }
| { status: 'error'; action: string; error: string };
function handle(state: AgentState) {
if (state.status === 'done') {
console.log(state.result); // ✅ 有result
// console.log(state.thought); // ❌ 编译报错——done状态不该有thought
}
}
也不是什么高阶技巧。但 AI 默认不会这么写——它默认你要的是"最快能跑的版本"。面试官在筛的,是你有没有那种"AI 给的是糙活、我能把它捋成工程级"的意识。
"没有,用不起。"
这真不是"他不努力"四个字能盖过去的。
LeadDev 引了一篇论文,提出个"Agentic Inequality"框架,三个维度:
| 维度 | 含义 |
|---|---|
| availability(可用性) | 某个 agentic 系统对你是否可用 |
| quality(质量) | 它有多强 |
| quantity(数量) | 你能同时跑多少个 agent |
作者有个说法挺戳人:agent 跟以前的技术不一样——它不是工具,是"能替你行动的劳动力"。 工具的不平等,差距是线性的;"劳动力"的不平等,差距会被复利放大。
四道门槛把关:金钱、算力、专业知识、时间。 Sharp 原话是,你问 skills/workflows 这些,测的不只是能力,还有"谁付得起这样练习"。会把暂时的资源差距,变成永久的筛选机制。
成本摆台面上:Claude Code Pro 约 20 刀/月,Max 5x 是 100 刀,Max 20x 是 200 刀。有开发者追了自己 8 个月,烧了约 100 亿 token,按 API 价折算远超订阅价。对一个大三实习生,200 刀/月就是真金白银的门槛。
所以 James Lowman 那道题,残酷的地方不在"你会不会写 skills",在"你有没有那个经济余裕,把一个付费工具磨到熟练"。
这是我真正想掰扯的。大多数人买不起 Max,也没必要为了面试去买。
LeadDev 那篇的潜台词摆得明白:把面试题建在"候选人买得起特定付费工具"上,不公平。但对个人来说,抱怨不公平没用,得有办法证明自己。
关键是把"会用 AI"拆成能验证的能力,别老想着"我订了哪个套餐"。 几个不花钱也能练、练了面试能讲的角度:
一,用免费的 DeepSeek API + 开源 DSH,自己搭个 coding agent
前两天 DeepSeek 把 Harness 开源了,MIT 协议,npx @deepseek-ai/dsh web一行命令起本地 Web UI。配 DeepSeek 的 API,成本是 Claude 的零头。你能在这个环境里完整跑一遍"模型 + 工具 +Agent Loop"是怎么凑一块的——这比"我订了 Claude Code Max"有信息量多了。
面试能这么讲:"我用 DSH 配 DeepSeek V4 跑过完整前端项目,Harness 里 context 管理、工具调用、容错重试怎么配合的我清楚。" ——比"我用过 Cursor"强。
二,练"否决 AI 代码"——这是面试新维度
CSDN 有个 Node.js 面试指南点出个新趋势:面试官直接问"你用 AI 写过 Node 吗?哪次你否决了 AI 的代码?"
这题答不上来的,基本就是"让 AI 写、自己不审"那类。平时攒着——AI 给的方案,哪些你没用、为啥不用、改成了啥。攒几个真实案例,面试能讲二十分钟。
三,做个集成了 AI 的真实前端项目
不是"用 AI 写项目",是"写一个集成了 AI 的项目"。一个对话界面、一段流式渲染、一个 AI 输出的错误兜底。这种项目面试能被深挖,因为它有真实的边界问题,不是套壳调 API。
把上面那些面经和 LeadDev 的讨论揉一块,候选人现场用 AI 解题,你解题的过程本身就是被观察的题:
| 行为 | 信号 |
|---|---|
| 直接粘 AI 输出,不读不审 | 🔴 红旗——连"质检员"都算不上,是搬运工 |
| AI 输出后,主动点出哪里不安全、会踩坑 | 🟢 绿旗——驾驶员意识 |
| 会反问 AI"这边界 case 咋办",而不是照单全收 | 🟢 绿旗 |
| 只会用一个工具,问备选方案答不上 | 🟡 中性——视野窄 |
| 能讲清 AI 生成代码背后"为啥这么写"的原理 | 🟢 绿旗——最难造假 |
| 光蹦词儿(MCP/Agent/上下文窗口),没一个动手痕迹 | 🔴 红旗——新闻联播型 |
最后一行是面试官最敏感的红线。你能蹦一串词,但没一个真做过、调过、踩过坑的东西兜着,一深挖就露。
AI 能写代码之后,"写得出代码"已经不是稀缺能力,"判断这段代码该不该这么写"才是。
James Lowman 问"你写过 skills 吗",问的是"你有没有把一个工具用到能改造它的程度"——这是驾驶员和乘客的差别。那个实习生答"没有",错不在没买 Max,错在没把任何一个免费工具用到那个深度。
工具不平等是真的,LeadDev 把这层窗户纸捅破了,值得敬。但对个体来说,能证明自己的路没被锁死——DSH 开源了,DeepSeek API 白菜价,Cursor 有免费额度。门槛从来不是"买不买得起 Max",是"有没有花时间,把一个工具用到能讲出细节"。
时间这道坎,倒是真不挑人。
你被问过最刁钻的 AI 题是啥?现场让用 AI 工具解题你碰上过吗?评论区聊聊,我攒一篇面经合集。
觉得有用,点个赞👍让更多正在面试的人看到。