我让 AI 当面试官面了我一轮:第 3 个追问我就卡住了(附 10 道追问清单)

做了件对自己挺狠的事:把简历亮点交给一个 AI 会话,让它扮演面试官------一次只问一个问题、同一主题连续追问、只认数字和证据、不许客套。全场 9 个问题,没有一道聊天题,我每轮都是现场作答,没有预演。

结果比真面试还狠:第一个主题还没面完,第三问,我就交出了"这个数据我没有"。这篇把三场拷问的实录片段、我答跪的地方完整复盘给你,文末有一份 10 道追问清单------建议面试前先拿它面自己一轮。

这场面试是怎么跑的

面试官人设:12 年经验的资深前端,面过几百场,专门戳简历战功里的水分。候选人是我自己的履历:5 年前端,组件库和中后台方向,简历主打"主导过性能优化"和"React 状态管理重构"。

规则就三条:一次只问一个;同一主题至少追两层才换题;每轮输出"点评 + 追问",点评专门说上一答的水分。我给自己定了条底线:不编数据,答不上来当场认。

然后它开始下刀。

主题一:性能优化------数字硬不硬,看它能扛几层追问

我报的第一个数字:运营配置页 LCP 从 p75 4.2 秒压到 2 秒上下,动作是懒加载、图表按需、接口聚合三件事。第一轮点评就抓了个现行------我开头说"首屏渲大表格加两个图表",后面又说"把首屏不需要的两个图表挪走",前后对不上。

真正挤水分的是第二轮:

把懒加载、按需引入、接口聚合这三刀拆开,各自在 p75 上贡献了多少毫秒,你用什么数据把它拆出来的?又怎么排除这种可能:4.2 秒掉到 2 秒,只是因为 LCP 元素从图表换成了一个更小的表格,你把一次口径变化记成了战绩?

这两问我都没接住。当时我们只有总账------预发单变量对比加线上灰度分桶------和"包体积、主线程占用"这类中间指标,毫秒级的拆分没做。LCP 元素换没换?换了,从图表的 canvas 变成了表格首屏行。真实提速和口径变化混在一起,我没法干净拆开,当场认了第一个存疑项。

第三问最狠:

不许再用 LCP。给我一个与它完全无关的指标------TBT、长任务总时长、INP 都行,必须包含中低端机和弱网数据。

Lab 口径的 TBT 我有:800 多毫秒降到 400 上下。但真机、真弱网,没有,没测过------我们只在 throttle 环境里模拟过。面试官当时丢下一句:"这笔账会在低端机滚动时以长任务的形式还回来。"

这段的教训很朴素:数字的硬度 = 单变量拆分程度 × 口径无关程度。两项都不行,你的"优化"扛不过三层追问,就只剩一个故事。

主题二:状态管理------3000 条数据 × 60 页,把我最顺的那句话算没了

这个主题我答得最顺:筛选、分页、选中行,唯一数据源定在 URL query,所有组件从 URL 派生,写操作只改 URL;配三条划线标准------跨会话才进 store、能从 URL 重建就放 URL、服务端数据的投影交给请求缓存层。

第一轮追问,它把场景定死:筛选出 3000 条、每页 50 条,用户先"全选本页"再逐页追加,勾满 60 页,期间每勾一次都按我的说法"只改 URL"。

这 3000 个 id 写进 query 后 URL 大概多长、history 里会躺多少条记录、他点一下返回键会退到哪一步?

现场算账:每个 id 加分隔符约 11 字符,3000 个就是 3.3 万字符的 query,越了浏览器安全线(约 2000 字符)一个数量级;history 按 push 算就是 3000 多条,返回键要弹几千次。结论只能降级:选中行从 URL 收回页面级 store,改成"全选 + 排除集"的规则化建模,我当场认了------"选中行 = URL 唯一源这句话,收回一半。"

但我只算了容量这一笔,还有第二刀:时间。

用户全选 3000、排除 5 条,展示"已选 2995";他什么都没点,期间新增 20 条命中、38 条失效(其中 3 条就在他排除集里),然后他点导出:2982−5=2977 和 2982−2=2980,你交哪个数?

答案:2980。排除集要按集合运算扣,不是按减法扣------那 3 条已经不在命中集里的排除项,不该扣第二遍。但更值钱的是被逼出来的那个问题:"全选"到底是勾选那一刻的快照,还是导出那一刻的谓词? 我最后给的是第三条路------谓词管编辑期、快照管提交期:点导出时服务端把谓词求值一次、冻结成快照,确认框把数字和变化明细摊开,用户看到、确认、导出的,必须是同一次求值的结果。

一句话总结这轮:凡是有后果的动作,用户看到的数、后端算的数、实际发生的数,必须是同一次求值。 把状态放在哪,只是第一层的问题;真正难的是它什么时候求值。

主题三:组件库------两份相反的投诉,一个根因

这轮它给的是一道现场题:假设你的组件库发了三年、被四十多个中后台项目消费,产物 ESM/CJS 双份,主入口 barrel 覆盖 120 个组件,每个组件入口顶部 import './style/index.less'、构建时抽成独立 CSS,package.json 里写着 "sideEffects": false。今天桌上有两份投诉:

webpack5 接入方:"我只 import 了 DatePicker,产物里却躺进 400KB,source map 一看是整个库。"

Vite 接入方:"dev 一切正常,构建产物样式全丢。"

一个多、一个少,症状相反,但根因是同一件事:package.json 对包的描述,和产物的真实结构对不上。

Vite 侧尤其典型。"sideEffects": false 是向打包器承诺"整个包没有副作用",而 import './style/index.less' 恰恰是个不绑定任何东西的纯副作用 import------Rollup 在构建时把它当可删项摇掉了;dev 不跑摇树,所以一切正常。"dev 好、build 坏"这个组合,基本只有一个解释。

webpack 侧则是解析落到了不可摇的入口:CJS 的 barrel 是运行时属性导出,静态分析摇不动,整个库就进了包。这里有个容易忽略的点------sideEffects 对这条链路帮不上忙,它是承诺,不是机制

然后它又追了 SSR 一刀,掀出一个"监控全绿、用户裸奔"的坑:SSR 首屏 HTML 里有类名,但样式在客户端 chunk 里、600 毫秒后才注入。类名是组件 JS 生成的字符串,它证明不了浏览器里存在一个字节的 CSS------我原本准备的"HTML 带类名"断言,被判了空断言。用户在那 600 毫秒里看到的是"有结构没皮"的页面,而监控里一切正常。

这轮的教训一句话:跨打包器的公共契约(按需引入 + 样式注入),写在文档里不算验,跑进消费侧矩阵里才算。

面试官最后给了我什么判定

没有安慰,直接引原话:

  • 性能主题画像:"能做对动作,不能辩护结果。"
  • 状态管理主题:"经验真、抽象强、边界意识慢一拍。"
  • 组件库主题:"懂行、想得全、发不出货------在这场语境里,发不出货就是没货。"
  • 全场出现的频率最高的一句:"机制我推得出、验证我没有"------出现了四次:真机弱网、消费侧矩阵、SSR 样式清单、组件库迁移工具链。
  • 最扎心的收尾:"你离高一档差的不是认知,是证据。"

如果把这场面试当体检,报告就是一句话:不缺方法,缺闭环。 每个机制我都推得出来,但每个机制都停在"验证没跑过"。

10 道追问清单:面试前,先拿它面自己一轮

把整场追问压成 10 道通用题,准备面试、写项目总结、复盘事故时都能用:

# 追问模板 它在验证什么 我的结局
1 这个数字是怎么测出来的?线上和线下口径分别是什么? 数据可辩护性 过了
2 把几件事拆开,各自贡献多少?怎么排除口径变化被算成战绩? 归因能力 半跪:只有总账
3 换一个与它无关的指标,必须包含真机、弱网数据 有没有第二口径 跪:TBT 有,真机没有
4 同一份状态在系统里有几份副本、分别在哪?你踩过的事故是什么? 状态单一归属 过了
5 极端规模算账:3000 条 × 60 页,URL 多长、history 几条、返回键退到哪? 容量边界 半跪:收回一半
6 这个数是勾选那刻的快照还是导出那刻的谓词?三方怎么保证同一次求值? 时间一致性 过了(现场推出来的)
7 两份症状相反的投诉,先看什么、怎么验证、根因是不是一件事? 定位方法 过了
8 你的断言证明的是"没炸"还是"到位"? 空断言识别 跪:类名断言被判空
9 加约束之后,老用法哪些硬失败、哪些静默换了解析目标?扫过吗? 兼容面 过了
10 迁移成本谁买单?"升级后大家不炸"你拿什么证? 收尾能力 纸面通过

怎么给自己安排同一场拷问

把下面这段发给常用的 AI 会话就能开面。规则比人设重要:

markdown 复制代码
你现在是一位严格的前端面试官:12 年经验,面过几百场,专戳简历里的水分。
候选人背景:<两行简历亮点>。
规则:
1. 一次只问一个问题;同一主题至少连追两层,答不出数字就继续追;
2. 只认数字、口径、取舍,不认流程和形容词;
3. 每轮只输出两部分:【点评】上一条回答的水分;【追问】下一个问题,要具体场景、要数字;
4. 全程不许客套。追问到底后,给一个整体评价,直说哪几条说服不了人。

两个使用建议。一、答之前先想"这题被追到第三层,我还剩什么",答不上就换一段经历讲;二、把它的【追问】全部攒下来------那是一份只针对你的私人题库,比任何通用面经都准。

最后

这 10 道题,你能过到第几轮?评论区报个号,我看看哪道最难。

如果也想去开一场,记住我的教训:别只顾着准备"怎么答",先确认每个答案被追问三层之后,还剩多少能被验证的东西。 你离下一档差的那点东西,可能不是认知,是证据。


相关推荐
IT_陈寒2 小时前
Python的GIL把我坑惨了,多线程跑得比单线程还慢
前端·人工智能·后端
小虎AI生活2 小时前
企业AI落地七步法:把老板脑中的工作流交给AI
ai编程
杨Young2 小时前
openSensus:给 Agent 做一层感知,而不是给它更多工具
ai编程
前端snow2 小时前
ai agent --- 多agent框架之图编排引擎-langgraph
前端
Nturmoils2 小时前
电商资料包合规体检实战:用蓝耘元生代把 20 分钟人工核验压成一分半
ai编程
竹林8182 小时前
OmniPic Studio v3.2.1 核心技术架构与全平台发版解析文档
前端·浏览器
JamesZhang800782 小时前
页面内存只涨不跌? 一次泄漏排查, 牵出 WeakMap 的诞生
前端
Z小明3 小时前
第 6 章 组件进阶
前端·vue.js
草帽lufei3 小时前
当zf开始全员推广AI,软件供应商的生计没了
ai编程·trae