技术面试只剩 14 天,先决定练什么,再决定刷多少题
收到面试邀请后,最容易犯的错误是立刻打开 LeetCode,按热门题单一路往下刷。问题在于,SWE、Data Analyst、Data Engineer 和 ML 相关岗位的技术面试,考察组合并不相同。剩下两周时,把时间投错方向,比少做十道题更危险。
短期准备的目标不是补完全部知识体系,而是让你在已排定的面试轮次里稳定交付。先用 JD、招聘邮件和面试安排做一次倒推,再决定算法、SQL、项目、系统设计和行为题各占多少时间。
Introduction
第一步:从面试信息里找优先级,而不是猜流程
第一步:从面试信息里找优先级,而不是猜流程
把招聘邮件、日历邀请和 JD 放在一起看,先标出明确出现的词。
| 线索 |
通常意味着什么 |
两周内的优先动作 |
| “coding interview”“live coding”“data structures and algorithms” |
算法题、代码表达、复杂度分析 |
以限时讲题为主,不只看题解 |
| “SQL assessment”“analytics case”“business metrics” |
SQL、指标定义、数据解释 |
练多表查询、窗口函数、口头解释结果 |
| “technical deep dive”“project discussion” |
项目追问、技术取舍、个人贡献 |
整理 2 个可深挖项目 |
| “system design”“architecture discussion” |
服务设计、数据流、扩展性 |
练需求澄清和分层设计 |
| “ML fundamentals”“modeling case”“ML system design” |
建模决策、评估指标、线上部署 |
同时准备模型原理与项目复盘 |
| “cross-functional”“stakeholder”“behavioral” |
协作、冲突、推进能力 |
准备 STAR 结构案例 |
如果邮件已经写明“60-minute SQL interview”,SQL 的优先级就应高于泛泛刷算法。反过来,若第一轮是 HackerRank 或现场 coding,不要因为 JD 提到“system design”就提前花四天画架构图。系统设计可能在后轮,但第一轮没过,后面的准备不会产生结果。
信息不完整时,可以直接向 recruiter 确认:本轮是否包含 live coding、SQL、系统设计或项目讨论,使用什么语言,是否允许查询标准库语法。这类问题正常且专业,比猜测题型更有效。
第二步:按岗位和轮次,给两周时间定比例
下面的比例适用于基础已经具备、但需要集中冲刺的情况。若某项是明显短板,可以从低优先级项中挪出 10% 到 15%,不要把所有模块同时加量。
SWE:先保证代码轮能稳定完成
对多数 Software Engineer 面试,尤其是初中级岗位,建议把时间分成:算法与编码 50%,项目深挖 20%,系统设计 15%,行为面试 15%。
算法部分不等于做题数量。每天至少完成两道题,其中一道要模拟真实面试:
- 用英文复述题意,并问 1 至 2 个澄清问题。
- 先说暴力解法,再说明为什么要优化。
- 写出可运行代码,边写边解释关键数据结构。
- 主动给出时间复杂度和空间复杂度。
- 用边界案例测试,例如空输入、重复值、极大值或单节点。
若 JD 明确写了 distributed systems、backend architecture 或 senior-level design,再把系统设计提高到 25%。但如果你的 coding 轮正确率不稳定,系统设计不应抢走核心练习时间。
Data Analyst 与 Data Engineer:SQL 不是附属技能
数据岗技术面试常常把 SQL、业务判断和项目表达放在同一轮里。Data Analyst 可按 SQL 与数据解释 40%,项目和业务案例 30%,Python 或统计基础 15%,行为面试 15% 分配。
Data Engineer 则更适合 SQL 与数据建模 35%,Python 或编码 25%,数据管道及项目深挖 25%,系统设计 15%。如果 JD 提到 ETL、Airflow、Spark、warehouse、data quality,不要只复习语法。你要能说明数据从哪里来、如何清洗、如何监控失败、如何处理重复和迟到数据。
数据岗技术面试里,一条 SQL 即使写对,也可能被继续追问:“这个指标的分母是什么?”“用户当天多次访问如何定义?”“为什么用 LEFT JOIN?”练习时必须把口头解释算进完成标准。
ML 与 AI 邻近岗位:项目链路优先于模型名词
ML Engineer、Applied Scientist、Data Scientist 等岗位的重点差异很大。招聘邮件若写明 coding screen,就按 SWE 的方式准备第一轮。若安排模型讨论或 ML system design,可使用以下比例:编码与 SQL 25%,ML 项目深挖 35%,模型基础和实验设计 20%,系统设计 10%,行为面试 10%。
项目深挖至少准备一个端到端案例:问题如何定义,训练数据如何获得,标签或特征有什么风险,为什么选择该模型,离线指标如何选,线上如何监控,失败后做了什么调整。不要只说“准确率提高了”。面试官更可能问,提升是否具有统计意义、样本是否泄漏、类别不平衡怎么处理,以及上线后数据分布变化怎么办。
第三步:14 天不要平均用力,按面试日倒排
第三步:14 天不要平均用力,按面试日倒排
如果面试就在第 14 天,前 10 天用于建立输出能力,后 4 天用于模拟和修补。每天建议安排 2.5 至 4 小时高质量训练,时间更少时,宁可减少题量,也保留讲题和复盘。
| 时间 |
核心任务 |
当天产出 |
| 第 1 天 |
读 JD、邮件和面试安排,列出所有轮次 |
一页优先级表,标注高、中、低投入项 |
| 第 2 至 4 天 |
集中补最高优先级短板 |
6 至 9 次限时练习及错误记录 |
| 第 5 天 |
项目深挖与英文表达 |
2 个项目的 3 分钟和 8 分钟版本 |
| 第 6 至 7 天 |
第二优先级模块训练 |
SQL 题、系统设计或 ML 案例各做一次完整输出 |
| 第 8 天 |
第一次模拟面试 |
录音或请同学计时,复盘卡顿点 |
| 第 9 至 10 天 |
修复模拟暴露的问题 |
重做错题,不新增大量陌生题型 |
| 第 11 天 |
第二次模拟,贴近真实轮次 |
一次 45 至 60 分钟完整演练 |
| 第 12 天 |
整理高频项目、行为题和问题清单 |
可直接复述的要点卡片 |
| 第 13 天 |
轻量复习与环境检查 |
代码模板、设备、路线、面试时间确认 |
| 第 14 天 |
保持状态 |
只看错题和项目提纲,不突击新主题 |
暂缓事项同样重要。若你面的是 Data Analyst,不要把两天花在图算法和复杂系统设计上。若你面的是 entry-level SWE,也不必试图背完分布式数据库细节。没有出现在 JD、邮件或已知轮次中的内容,只保留最低限度浏览,除非它正是你的项目背景。
第四步:把“会做”变成面试官听得懂的回答
很多候选人 LeetCode 面试准备不足,不是因为不会解,而是沉默写代码太久,或者没有解释选择。英文讲题不需要复杂措辞,关键是结构稳定。
可以使用这个最小表达框架:
- “Let me clarify the input and the expected output.”
- “A straightforward approach would be…, but it takes…”
- “I will use a hash map / two pointers / a window because…”
- “The time complexity is…, and the space complexity is…”
- “Let me test this with an edge case.”
每次练习结束,用五分钟写复盘,不要只记录“这题不会”。更有用的是以下四项:
| 复盘问题 |
记录方式 |
| 卡在哪里 |
思路、语法、边界条件、复杂度,选一个具体原因 |
| 面试时会如何暴露 |
沉默过久、没有澄清、代码无法运行、解释不清 |
| 下次的修正动作 |
例如先口述样例,或先写函数签名 |
| 是否值得重做 |
高频题型或真实短板,48 小时内重做 |
两周冲刺的判断标准,不是题库完成百分比,而是你能否在限定时间内,把最可能出现的题型讲清楚、写完整,并解释自己的选择。先让准备内容与实际轮次匹配,再增加题量,面试表现通常会更稳。