Resume and Project Packaging: STAR, README, Architecture Diagrams, a Demo Video, an English Resume
Use the STAR method to turn three repos into resume highlights, round out each with a README and an architecture diagram, record a demo video, and produce an English resume.
今日目标
- 能用 STAR 法则把至少 3 个项目经历写成简历要点
- 能给三个仓库分别补齐一份包含架构图的 README
- 能产出一版可以直接投递的英文简历
昨天(D26)你把系统设计题的答题结构备齐了——需求澄清五分钟、估算三分钟、草图八分钟、深入十五分钟、权衡五分钟。但那道题排在面试流程的中后段,能不能走到那一步,取决于更早的一件事:面试官得先从你的简历上相信「这人真做过」。今天就把三个仓库变成他愿意点开的东西。读完回来把上面三条勾掉。
小白版讲解
同一只保温杯,两种详情页
在电商平台上搜「保温杯」,出来两个链接。第一个标题写「不锈钢保温杯」,第二个写「6 小时保温 65℃ 以上、单手开合、316 食品级钢」。两只杯子可能是同一条产线下来的,但第二个能多卖一倍的价钱,而且点进去的人明显更愿意读完。
差别不在杯子,在详情页有没有给出可以被检验的数字。「不锈钢」是一个类别,说了等于没说,因为所有竞品都能这么写;「6 小时保温 65℃ 以上」是一个承诺,它可以被买回家用温度计打脸,正因为可以被打脸,它才有说服力。
简历就是你这个人的商品详情页,而招聘方在筛选阶段的耐心和网购时一样短。「负责 Agent 服务的开发」是「不锈钢保温杯」;「把客户端断开后的无效生成从 103 个片段降到 6 个」是「6 小时保温 65℃ 以上」。没有数字的详情页,读者划两秒就走——他不是觉得你不行,他是根本没法把你和另外三十份「负责 XX 开发」区分开。
STAR 法则说的就是这件事。它把一段经历拆成四段:情境(Situation,当时是什么处境)、任务(Task,你要达成什么)、行动(Action,你具体做了什么)、结果(Result,最后怎么样了)。很多人把 STAR 当成面试口头回答的框架,其实它更该先用在简历上——简历上的每一条都套同一个句式:
在(约束)下,为了(目标),我(具体技术动作),把(指标)从 X 改善到 Y。这四个空里,前三个多数人都填得出来,卡住的永远是最后那个 Y。而这条公式的纪律恰恰在这里:拿不出 Y 就不要写这一条,换一条能量化的。宁可一份简历上只有三条硬邦邦的量化要点,也不要八条「负责」「参与」「优化」。对比一下同一件事的两种写法:
弱:负责 Agent 服务的流式接口开发,优化了资源占用。
强:为了让用户关掉页面后服务端立刻停止烧 token,把断开信号从请求对象的 close
事件改成监听响应对象、并用 writableEnded 区分正常收尾,单次会话服务端生成的
流式片段从 103 个降到 6 个,约 94% 的无效生成被砍掉。
(测量条件:本地单机、离线模拟模式自检,客户端读满 5 个片段后主动断开)弱的那条里,「优化了资源占用」是自评,面试官只能选择信或不信;强的那条里,103 和 6 是事实,追问只会让它更结实——他问「怎么测的」,你答「自检脚本数了服务端一共生成多少片段」;他问「为什么原来是 103」,你答「因为原来监听错了对象,请求体读完就触发一次 close,被误判成正常请求,于是一路生成到底」。能被追问而不塌,是量化要点的真正价值,不是好看。
那个括号里的「测量条件」不是谦虚,是这一章最要紧的东西。
所以这条公式的难点从来不在造句,在于你手上有没有那个 Y。好消息是你已经有了:过去三周每个实验的自检输出里都印着可以直接用的数字,你当时只把它们当成「跑通了」的标志,没当成简历素材。
三个仓库各挑一条,先把数字找出来
先把名字定下来,后面所有材料都用同一套,别一会儿叫「我的 Agent 项目」一会儿叫「第一周作业」:agent-service(W1 的产出,一个可容器化的单 Agent 服务)、mini-koda(W2 的产出,Gateway 加 worker 池的分布式执行平台)、mini-multi-agent(W3 的产出,多角色协作的编排服务)。
三个仓库各挑一条最能打的,套进那个句式。先看 mini-koda 这条,它是三条里数字最漂亮的:
在单机 docker compose 三个 worker 副本的约束下,为了让同一个用户的消息严格保序,
把分片键从消息长度改成用户 id 的哈希,并给每个分片加了带持有者校验的租约;
分片利用率从 256 个里只占 1 个提升到 256 个全占满,最大桶从 2000 条降到 19 条
(理想值 8 条);持有者假死后另一个副本在 2.8 秒左右接手,接手前后同一个用户的
消息序号仍然是 1 到 6 的严格递增。
(测量条件:本地单机、离线模拟模式自检,2000 个模拟用户、256 个分片)一句话里塞了三个数字,每个都对应一次实测:分片分布是自检第 1 项打印的,2.8 秒是第 4 项 trace 里的,序号有没有乱是第 4 项的对照输出。这条要点为什么好用?因为它天然引出三个追问方向——为什么按用户 id 哈希、租约为什么要带持有者校验、2.8 秒是怎么来的——而这三个追问你都答得出来,等于你在简历上给面试官铺了一条你熟悉的路。
mini-multi-agent 那条挑并行写状态的坑:
在多个子 Agent 并行写同一份图状态的约束下,为了消除工作区里的重复记录,
把 workspace 通道的 reducer 从「追加」改成「按 id 原地更新」;3 件子任务留下的
记录从 6 条(含 3 个重复 id,按 id 查到的第一条还是过期的 pending 版本)
降到 3 条、0 个重复、状态全部为 done。
(测量条件:本地单机、离线模拟模式自检,同一张图只替换 reducer 做前后对照)「同一张图只替换 reducer 做前后对照」这半句是这条的灵魂。能给出对照实验的人,和只会报一个终值的人,在面试官眼里不是同一个水平:前者说明你知道自己改的那一处到底带来了什么,后者只能证明你的程序最后能跑。
三条都写完之后做一次减法:三个仓库如果讲的是同一类能力(都在讲「我会用 Docker」),那就等于只有一条。理想的分工是一条讲协议与流式(agent-service),一条讲分布式与状态(mini-koda),一条讲编排与成本(mini-multi-agent),覆盖面拉开,面试官挑哪个方向切进来都有东西。
README 是写给「三分钟就走」的人看的
简历把人骗到了 GitHub,接下来决定成败的是仓库首页。这里有一个残酷的现实:看你 README 的人,预算是三分钟,而且他不打算 clone 下来跑。所以 README 不是文档,是第二张详情页。
固定七段,顺序照抄,缺一段就补一段:
# mini-koda
一句话定位:Gateway 与 worker 池分离的 Agent 执行平台,用消息总线解耦,
保证同一用户的消息严格保序。
## 架构
(Mermaid 图,见下一节)
## 快速开始
(三条命令之内跑起来)
## 关键设计决策
1. 为什么按用户 id 哈希分片 —— 放弃了什么
2. 为什么租约要带持有者校验 —— 放弃了什么
3. 为什么心跳不进就绪探针 —— 放弃了什么
## 已知限制
## 目录导读
## 许可几段里有三段最容易被写坏,单独说。
「快速开始」的硬指标是三条命令。不是三段说明,是三行可以复制粘贴的命令。超过三条,说明你的项目有隐性依赖没处理好(要手动建库、要手动改配置、要先申请一个 key)。判据也很硬:找一台没跑过这个项目的机器,或者至少一个新建的空目录,照着自己写的敲一遍。你自己的机器上永远能跑起来,因为环境变量、node 版本、镜像缓存都在——这是全课最常见的「在我这儿是好的」。
「关键设计决策」每条必须含「放弃了什么」。这一段是整份 README 里最值钱的部分,因为它是唯一无法从模板里抄来的内容。「用了 Redis Streams 做消息总线」是功能列表;「用 Redis Streams 而不是 Kafka,放弃了跨机房复制和无限回溯,换来单机就能起、一个容器搞定运维」才是决策。面试官会直接从这三条里挑一条开问,你等于自己出了三道题、自己准备好了答案。
「已知限制」反而是加分项。很多人不敢写,怕暴露短板。恰恰相反:主动写出「当前只在单机验证过,没做过跨机房;离线模拟模式下的向量检索是全表扫描,没上索引」,传达的是两件事——你知道自己的边界在哪,以及你不会把 demo 当生产吹。而且它有个实际好处:你先说了,面试官就很难再拿它当把柄,最多顺着问一句「那要上生产你会先补哪个」,这题你答得出来。
一张图只画一件事
架构图固定用 Mermaid,不用截图。理由很实际:Mermaid 在 GitHub 上原生渲染,读者不用点开图片;它的源码是文本,改一个节点是一行 diff,而不是「重新打开画图工具、导出、替换文件」;而且你在写 README 的时候顺手就改了,截图那种要切换工具的做法,最后一定会过期。
画什么不画什么,有一条判据:图上只留下「数据往哪流」和「边界在哪」,其余全删。不画类图,不标依赖版本号,不把每个中间件都摆上去。节点控制在八个以内,多了就拆成两张——一张总览、一张只画你要深入讲的那一块。
mini-koda 那张长这样:
Mermaid source
flowchart LR
C[客户端] -->|POST /chat| G[Gateway]
G -->|落库 runs| DB[(Postgres)]
G -->|按用户分片投递| BUS[[Redis Streams]]
BUS --> W1[Worker 副本 1]
BUS --> W2[Worker 副本 2]
BUS --> W3[Worker 副本 3]
W1 -->|状态与消息| DB
W1 -->|SSE 回推| C八个节点,三种形状:方块是服务,圆柱是存储,双方框是总线。看图的人五秒之内能说出「请求从 Gateway 进、活在三个 worker 里干、状态存在 Postgres」,这张图就成了。
反例是把 Nginx、日志采集、监控、配置中心全画上,再给每条边标上协议和版本号。那种图信息量看着最大,实际传达的最少,因为读者找不到主线。一张图只回答一个问题,你这张回答的是「一条消息的生命周期」,那么和这条生命周期无关的东西一律不上图。
检验方法很省事:把图单独发给一个做后端但没做过 Agent 的朋友,问他「请求从哪进、活在哪干、状态存在哪」。他说得出来就过关,说不出来就是节点太多或者命名太黑话。命名这一条也提一句:节点名写「Gateway」「Worker 副本」这种通用词,别写只有你自己懂的内部缩写。
三到五分钟的 demo 视频
视频这件事很多人跳过,理由是「录了也没人看」。恰恰相反:在一堆只有文字的简历里,一个能跑的 demo 链接是极强的差异化信号,因为它证明了一件文字证明不了的事——这东西真的能跑,而且你能讲。
结构固定四段,总长三到五分钟:
- 前 30 秒:它是什么、解决什么问题。一句话定位说完就够,不要从「大模型的兴起」讲起。
- 中间 90 秒:跑一遍 happy path。真的敲命令、真的看到输出,不要放静态截图。
- 接下来 90 秒:讲一个你觉得最难的设计决策。这是全片最重要的部分,选那条你能说出「放弃了什么」的——和 README 第四段是同一批素材。
- 最后 30 秒:已知限制和下一步。
不要念 README。 这是最容易犯的错,也是最浪费的做法:README 已经把该说的写成文字了,读者两分钟就能读完,你花五分钟把它念一遍,等于把唯一一次「让人看到你怎么思考」的机会用掉了。视频的价值在于文字里没有的那部分——你停顿的地方、你怎么解释一个取舍、你被自己的程序报错时的反应。
几个能省很多时间的现实细节。先把 happy path 跑通再开录,不要指望一次过,第三遍通常就顺了;终端字号调大到手机上能看清,很多人是在通勤路上点开你链接的;不要剪辑掉等待,如果某一步真的要等 8 秒,那就等着并且说一句「这里在等模型返回」,硬剪会让人怀疑你藏了什么;说错了直接重录那一段,重录比后期便宜太多。
顺带说一句:录这段视频其实是明天那件事的预演。你会在录第一遍的时候发现,自己讲到第 40 秒还没说清这个项目是干什么的——这个毛病在视频里可以重录,在面试里不行。
英文简历不是中文简历的翻译
如果你要投海外岗位,英文简历要重写一遍,不是把中文那份丢进翻译工具。差异分成格式和用词两块。
格式的五条硬要求:一页(工作五年以内没有例外);反向时序(最近的经历排最前);每条要点以动词开头;每条都带量化结果;技术栈单列一行,别散在各个项目描述里让人自己找。
动词开头这条要特别当回事。英文技术简历的默认句式就是动词打头:Built、Designed、Implemented、Reduced、Cut、Shipped、Instrumented、Migrated。要避开的是三类开头——Responsible for(说明你在描述岗位职责而不是你的贡献)、Helped with(读起来像你在旁边打下手)、Familiar with(这个词属于技能栏,不属于经历栏)。对照一下:
weak: Responsible for the development of a multi-agent orchestration service.
strong: Cut duplicate task records from 6 to 3 (zero duplicate ids) in a
multi-agent orchestration graph by switching the workspace reducer from
append to upsert-by-id. Measured locally in mock mode, same graph,
reducer swapped for an A/B comparison.中英差异里最需要注意的是「不该出现的东西」:英文简历不放照片、不写年龄和出生日期、不写性别、不写婚姻状况、不写身份证或户籍信息,也不写期望薪资和政治面貌。这不是风格偏好——在美国、加拿大、英国等地,招聘方为了规避雇佣歧视方面的法律风险,收到带照片和年龄的简历时反而会为难。中文简历里那些习以为常的个人信息栏,在英文版里只留姓名、城市、邮箱、电话、GitHub 与领英链接。
项目怎么标注,直接呼应前面的诚信红线:三个仓库在英文简历里写成 Personal project 或 Course project,和 Work experience 分成两个区块。时态上,已经结束的项目用过去时,还在推进的用现在时,别在同一条里混。
最后是单位和货币要写全:p95 latency 320 ms,不写「延迟 320」;成本写 $0.0006 per turn,不写「0.0006 一轮」。海外面试官对量纲很敏感,缺单位的数字他没法判断你说的是好还是坏。
写完之后有一个很有效的自检:把英文简历里所有形容词删掉,看剩下的还能不能读。能读,说明你写的是事实;读不通了,说明你原来靠形容词撑着。
源码导读
动手实验
今天的实验没有代码,产出是四份 Markdown。starter/ 里是四份待填模板,待填处用引用块标了 TODO;solution/ 里是用本课三个项目填好的示范样例。示范样例里的每个数字都必须换成你自己跑出来的——那些数字是在特定条件下测出来的,你的挖空完成度、你的机器都不一样,照抄就变成了假数字。卡住的时候回去翻对应那天实验的自检输出,X 和 Y 基本都印在上面。
- 翻开 D7、D14、D19 三天实验的自检输出,为 agent-service、mini-koda、mini-multi-agent 各挑一个能对照出前后差异的数字,填进 star-bullets.md,每条都补上测量条件。
- 照 readme-template.md 给三个仓库各补一份 README,七段齐全,关键设计决策三条每条写清放弃了什么。
- 给每份 README 画一张 Mermaid 架构图,节点不超过 8 个,推到 GitHub 上确认真的渲染出来了。
- 按 30 秒定位、90 秒 happy path、90 秒最难的设计决策、30 秒已知限制的结构,录一段三到五分钟的 demo 视频,链接放进简历和 README 第一屏。
- 先填 resume-cn.md 再写 resume-en.md,然后自己(或找人)逐条读一遍,把任何夸大、无法追问到底、或者没有测量条件的表述划掉。
面试题
今天 4 道题在下方题库区,全是行为面试题(behavioral),侧重「怎么组织回答」而不是「标准答案是什么」——同样一段经历,讲的顺序不同,面试官听到的水平就不同。展开后先看分析过程再看要点:这四道题的分析过程给的是答题的时间分配和顺序,照着练,比背要点管用。标注「国内高频 / 海外高频」方便按目标市场取舍。
检查清单与明日预告
- 能用 STAR 法则把至少 3 个项目经历写成简历要点
- 能给三个仓库分别补齐一份包含架构图的 README
- 能产出一版可以直接投递的英文简历
- 三条 STAR 要点里的每个数字都说得出「哪一天、哪一项自检、什么测量条件」
- 三份 README 的「关键设计决策」每条都写清了放弃了什么
- 实验的 5 条验收标准全部通过
- 4 道面试题不看要点也能答出至少 3 道
明天(D28)我们做一次完整的模拟面试,国内和海外流程各走一套。今天做的这些东西——简历、README、架构图、demo 视频——全都是静态的:你可以反复改,可以删掉重写,可以让别人帮你看。面试是动态的,只有一次,而且对方随时会打断你。这两件事的难度完全不在一个量级:一份写得很好的简历,配上一个在自我介绍的第 30 秒就开始绕圈子的人,前面所有准备的效果会打对折。所以顺序必须是先写后讲——今天先把内容备齐,明天再练把它讲出来。
Interview questions
Walk me through a technical project of yours using the STAR framework.请用 STAR 法则讲一个你做过的技术项目。
Common in ChinaCommon overseasBasic#behavioral#star#resumeHow to reason about it · think before answering
- This question tests whether you can control information density, not whether you remember four letters. The interviewer has heard STAR dozens of times; what he is actually timing is how long you spend on background versus on what you personally did, and whether you land on a number he can probe.
- Decide the time split before you open your mouth: 20 seconds of situation, 15 of task, 90 of action, 25 of result. The classic failure is spending 90 seconds on situation — it feels safe because it says nothing about your ability, so people hide there.
- In those 90 seconds of action, say 'I', not 'we'. Summarize the team's work in one sentence, then cut straight back to 'my piece was X, and the way I did it was Y'. If your boundary with the rest of the team is unclear, the story is scored as unverifiable.
- The result has to be a before-and-after number, and you volunteer the measurement conditions with it: 'shard utilization went from 1 of 256 to all 256, and the largest bucket dropped from 2000 to 19 — measured locally with 2000 simulated users across 256 shards.' Naming the conditions is not hedging; it shows you know what you measured.
- If it is a personal or course project, say so inside the first 20 seconds rather than waiting to be asked. Volunteering the origin makes your numbers more credible, not less; being caught hiding it forces the interviewer to re-weigh everything you said before.
- Expect two follow-ups: 'how did you measure that?' and 'does this still hold at ten times the scale?' The first tests honesty, the second tests judgment — answer the second by naming the scale at which you would throw this design away.
分析过程 · 先想清楚再作答
- 这题在考「你会不会控制信息密度」,不是考你记不记得 STAR 四个字母。面试官已经听过几十遍 STAR,他真正在数的是:你花了多少时间讲背景、多少时间讲你自己做了什么、最后有没有一个能被追问的数字。
- 先定时间分配再开口,这是可以现场执行的一条纪律:情境 20 秒、任务 15 秒、行动 90 秒、结果 25 秒。绝大多数人的失败模式是情境讲了 90 秒——那部分听起来最安全,因为不涉及你的能力,所以人会不自觉地躲在那里。
- 行动那 90 秒里只讲你亲手做的部分,主语必须是「我」。团队做了什么用一句话带过,然后立刻切回「我负责的是其中的 X,我的做法是 Y」。说不清「我和别人的边界在哪」,这条经历在评分表上会被打成不可验证。
- 结果必须落到一个带前后对照的数字,并且主动补一句测量条件。比如「分片利用率从 256 个里只占 1 个变成全占满,最大桶从 2000 条降到 19 条,这是本地单机、2000 个模拟用户、256 个分片的自检结果」。补测量条件不是示弱——它把「我知道自己测的是什么」这件事直接摆出来了。
- 如果这段经历是学习项目或课程项目,在情境那 20 秒里就说清楚,不要等到被追问。主动交代来源的人,后面报的数字反而更容易被相信;藏着掖着被问出来,之前讲的全部要被重新掂量一遍。
- 可以预期的追问:「这个数字是怎么测的?」以及「如果规模再大十倍,这个做法还成立吗?」第一个考真实性,第二个考边界感——答第二个时要主动说出「在什么规模下我会推翻现在这个设计」,这一句几乎没人说,说了就是加分。
Key points
- Budget the time before speaking: 20s situation, 15s task, 90s action, 25s result — never let background eat half the answer
- Say 'I' in the action section and draw a clear line between your work and the team's
- End on a before-and-after number and volunteer how it was measured
- Disclose that it is a personal or course project up front, not under questioning
- Close by naming the scale at which the design would break — it signals judgment
答题要点
- 开口前先分配时间:情境 20 秒、任务 15 秒、行动 90 秒、结果 25 秒,别让背景吃掉一半时长
- 行动部分主语是「我」,明确说出自己和团队的边界
- 结果给一个带前后对照的数字,并主动补上测量条件
- 学习项目在情境阶段就主动交代,不等追问
- 结尾主动加一句「在什么规模下这个设计会失效」,把边界感摆出来
Tell me about the most challenging project you have worked on. What made it hard?讲讲你做过的最有挑战的一个项目,难在哪里?
Common in ChinaCommon overseasDeep dive#behavioral#project-storytellingHow to reason about it · think before answering
- The hinge is the word 'challenging', and almost everyone falls into the same trap: treating 'a lot of work' as a challenge. Three months of overtime proves stamina, not judgment. The interviewer wants to see how you decide under incomplete information.
- Pick the story first, because it caps everything after it: choose the project where you can name what you gave up. Hard test — if your answer is only 'I did A and it worked', with no 'I chose A over B and paid C for it', pick a different project.
- Order the answer as difficulty, decision, cost, outcome — not chronologically. Chronology drags the listener through a diary; leading with the difficulty pins their attention on the first sentence. 'With three replicas consuming in parallel, one user's messages arrived out of order' beats 'the project started in March'.
- When describing the difficulty, explain why it could not be solved by reading the docs. Real challenges carry conflicting constraints: parallel replicas for throughput versus strict per-user ordering. Surfacing that conflict is what makes the difficulty credible.
- Do not end on pure success. Volunteer one sentence on what you would change today — this is the highest-signal line available on this question, because it shows you kept thinking after shipping.
- Expect: 'did you consider alternatives?' It is nearly guaranteed, so prepare the option you rejected and an engineering reason for rejecting it — latency, cost, operational load — never 'it just felt wrong'.
分析过程 · 先想清楚再作答
- 这题的题眼在「挑战」这两个字上,而它有一个几乎所有人都会踩的陷阱:把「工作量大」当成挑战。加了三个月班、写了两万行代码,这些证明的是耐力,不是判断力。面试官想看的是你在信息不足的情况下怎么做决定。
- 先做选题,这一步决定了后面的天花板:选那个**你能说出「我放弃了什么」**的项目。判据很硬——如果你的答案里只有「我做了 A,效果很好」,没有「我在 A 和 B 之间选了 A,代价是 C」,那这个项目就不适合回答这道题,换一个。
- 组织顺序建议用「困难 → 我的判断 → 代价 → 结果」,而不是时间顺序。时间顺序会把听众拖进流水账;从困难切入,第一句话就把对方的注意力钉住了。比如「三个副本同时消费的时候,同一个用户的消息顺序会乱」,比「这个项目是三月份开始的」有效得多。
- 描述困难时要给出「为什么这不是查一下文档就能解决的」。真正的挑战都带着约束冲突:既要多副本并行提高吞吐,又要同一用户严格保序——这两个诉求天然打架,所以才需要设计而不是查资料。把这层冲突讲出来,难度就立住了。
- 结果那部分不要只报成功。**主动说一句「现在回头看,我会改哪里」**,这是这道题上区分度最大的一句话。它表明你在项目结束之后还继续想过这件事,而不是交付完就翻篇了。
- 可以预期的追问:「当时有没有考虑过别的方案?」这几乎是必问。所以准备答案时要备好那个被你放弃的方案,以及放弃它的具体理由——理由要是工程性的(延迟、成本、运维复杂度),不能是「感觉那样不好」。
Key points
- Challenge means judgment, not volume — overtime and lines of code are not difficulty
- Pick a story where you can say 'I chose A over B and paid C for it'
- Structure it as difficulty, decision, cost, outcome — never as a chronological diary
- Name the conflicting constraints (parallel replicas versus strict per-user ordering) to make the difficulty real
- Close with what you would change today, and have the rejected alternative plus an engineering reason ready
答题要点
- 挑战 = 判断力,不是工作量;别拿加班和代码行数当难度
- 选题判据:这个项目你能说出「我在 A 和 B 之间选了 A,代价是 C」
- 按「困难 → 判断 → 代价 → 结果」组织,不要按时间顺序讲流水账
- 把约束冲突讲出来(比如既要多副本并行、又要同一用户保序),难度才立得住
- 结尾主动说「现在回头看我会改哪里」,并备好那个被放弃的方案和工程性的理由
Suppose I open one of your GitHub projects — what should a good README show me?我们点开了你 GitHub 上的项目,你觉得一份好的 README 应该让我看到什么?
Common in ChinaCommon overseasIntermediate#behavioral#documentation#portfolioHow to reason about it · think before answering
- On the surface this is about documentation conventions; underneath it tests reader awareness. Reciting a list of headings sounds like a template. They want to hear that you know who the reader is, how much time he has, and what he is looking for.
- Define the reader before listing sections: someone skimming a README has about three minutes and has no intention of cloning the repo. So the first screen must answer 'what is this' and 'can it run'; everything deep goes below.
- Then give the structure, naming the reader each part serves: one-line positioning (the resume screener), architecture diagram (anyone building a mental model), quick start (anyone verifying it runs), key design decisions (the interviewer), known limitations (the interviewer), directory guide and license (people who will actually read the code).
- Put the weight on two sections. Quick start has a hard bar — running in three commands or fewer; more than that means hidden setup. Verify it on a machine that has never run the project, not on your own. Key design decisions must each state what you gave up, because that is the one part no template can supply.
- Known limitations deserve a sentence of their own: stating boundaries is not exposing weakness, it demonstrates self-awareness and honesty at once. And once you have said it, it is hard to use against you — at most they ask which gap you would close first, which you already prepared.
- Expect the follow-up: 'which section took you the longest?' Answer 'key design decisions' and then walk through one on the spot. The question is nominally about READMEs, but it is an invitation to talk about your project — take it.
分析过程 · 先想清楚再作答
- 这题表面在问文档规范,实际在考「你有没有读者意识」。答成一串小标题清单(简介、安装、使用、贡献指南)会显得像背模板;面试官想听的是你知道读者是谁、他有多少时间、他在找什么。
- 先把读者说清楚再列结构,这一步就能拉开差距:看 README 的人预算大约三分钟,而且不打算 clone 下来跑。所以第一屏必须解决「这是什么」和「能不能跑」,深入的东西往后放。
- 然后给结构,并且为每一段说出它服务的是哪个读者:一句话定位(筛简历的人)、架构图(想快速建立心智模型的人)、快速开始(想验证能不能跑的人)、关键设计决策(面试官)、已知限制(面试官)、目录导读与许可(真的要读代码的人)。
- 重点落在两段上。「快速开始」的硬指标是三条命令之内跑起来,超了说明有隐性依赖;判据是拿一台没跑过的机器照着敲一遍,而不是在自己机器上试。「关键设计决策」每条要含「放弃了什么」,因为这是唯一无法从模板抄来的部分。
- 「已知限制」值得单独说一句:主动写出边界不是暴露短板,而是同时证明了自我认知和诚信。而且你先说了,对方就很难再拿它当把柄,最多顺着问「上生产你会先补哪个」——那是你准备好的题。
- 可以预期的追问:「你的项目 README 里最花时间的是哪一段?」答「关键设计决策」,然后现场讲一条。这题问的是 README,落点其实是让你讲项目,别错过这个递过来的机会。
Key points
- Start from the reader: a three-minute budget and no intention of cloning, so the first screen answers what it is and whether it runs
- Seven sections: one-line positioning, architecture diagram, quick start, three key design decisions, known limitations, directory guide, license
- Quick start must work in three commands or fewer, verified on a machine that has never run it
- Every design decision states what was given up — the one part no template provides, and where interviewers pick their follow-up
- Use Mermaid rather than screenshots: native GitHub rendering, text diffs, and it does not go stale
答题要点
- 先说读者:三分钟预算、不会 clone 下来跑,所以第一屏解决「是什么」和「能不能跑」
- 七段结构:一句话定位、架构图、快速开始、关键设计决策 3 条、已知限制、目录导读、许可
- 快速开始的硬指标是三条命令之内,且要在一台没跑过的机器上验证
- 关键设计决策每条含「放弃了什么」,这是唯一抄不来的部分,也是面试官挑追问的地方
- 架构图用 Mermaid 而不是截图:GitHub 原生渲染、改动是文本 diff、不会过期
Have you applied overseas? How does an English tech resume differ from a Chinese one?你投过海外岗位吗?英文简历和中文简历在写法上有什么不同?
Common in ChinaCommon overseasBasic#behavioral#resume#global-marketHow to reason about it · think before answering
- This looks like a trivia question, but the signal is whether you have actually applied or only heard about it. 'English resumes should be concise' is hearsay; naming what must never appear, and why, sounds like experience.
- Answer in two halves, forbidden items first, style second — the first half is a hard constraint and the second is preference, and leading with the hard part shows you can tell them apart.
- Forbidden: no photo, no age or date of birth, no gender, no marital status, no national ID or household registration, no expected salary. Give the real reason — in the US, Canada and the UK, employers avoid this information to limit hiring-discrimination exposure. Framing it as the employer's compliance concern rather than 'that's just the local habit' is the highest-signal sentence in this answer.
- Style: one page, reverse chronological, every bullet starting with a verb, every bullet quantified, and the tech stack on its own line. Give both sides on verbs — Built, Designed, Reduced, Cut are right; Responsible for, Helped with and Familiar with describe a job description, an assist, and an awareness respectively, none of which is your contribution.
- Add the detail most people miss: always carry units and currency — 'p95 latency 320 ms', not 'latency 320'; '$0.0006 per turn', not '0.0006 per turn'. Overseas interviewers read magnitudes carefully and cannot judge a bare number. Keep tense consistent too: past tense for finished work, present for ongoing.
- Expect: 'did you write it yourself or translate it?' Say you wrote it, and name a concrete step you took — for instance deleting every adjective from the Chinese version before rewriting, because directly translated adjectives read as empty in English.
分析过程 · 先想清楚再作答
- 这题看着像常识题,区分度藏在「你是真投过还是听说过」。只答「英文简历要简洁」是听说过;答得出「哪些东西在英文简历里绝对不能出现,以及为什么」的,才像真做过。
- 拆成两半答,顺序是「不该有的」在前、「该怎么写」在后。因为前者是硬约束,后者是风格偏好,先说硬的显得你分得清轻重。
- 不该有的那一半:不放照片、不写年龄和出生日期、不写性别、不写婚姻状况、不写身份证与户籍、不写期望薪资。原因要说到点子上——在美加英等地,招聘方为了规避雇佣歧视方面的法律风险,收到这些信息反而为难。说出「这是对方的合规顾虑」而不是「国外习惯这样」,是这题最能体现认知深度的一句。
- 该怎么写的那一半是五条格式硬要求:一页、反向时序、每条动词开头、每条带量化结果、技术栈单列一行。动词开头要给正反例——Built / Designed / Reduced / Cut 是对的,Responsible for、Helped with、Familiar with 是三个要避开的开头,因为它们分别在描述职责、描述协助、描述认知,都不是你的贡献。
- 补一条很多人漏掉的:单位和货币要写全(写 p95 latency 320 ms 而不是「延迟 320」,写每轮 0.0006 美元而不是「一轮 0.0006」)。海外面试官对量纲敏感,缺单位的数字他判断不了好坏。时态上也要一致:结束的项目用过去时,在推进的用现在时。
- 可以预期的追问:「你的英文简历是自己写的还是翻译的?」老实答自己写的,并说出你为此做的一个具体动作——比如把中文那份里的形容词全删掉之后重写,因为直译过来的形容词在英文里会显得空。
Key points
- Lead with the hard constraints: no photo, age, gender, marital status, national ID or expected salary
- The reason is the employer's compliance exposure around hiring discrimination, not local custom
- Five format rules: one page, reverse chronological, verb-first bullets, quantified results, tech stack on its own line
- Avoid Responsible for, Helped with and Familiar with; use Built, Designed, Reduced, Cut
- Always carry units and currency, and keep tense consistent — past for finished work, present for ongoing
答题要点
- 先答硬约束:不放照片、年龄、性别、婚姻状况、身份证与户籍、期望薪资
- 原因是对方的合规顾虑(规避雇佣歧视方面的法律风险),不是「国外习惯这样」
- 格式五条:一页、反向时序、动词开头、量化结果、技术栈单列一行
- 动词开头避开 Responsible for、Helped with、Familiar with,改用 Built / Designed / Reduced / Cut
- 单位与货币写全,时态保持一致:结束的项目用过去时,在推进的用现在时
Comments
Sign in to join the discussion
No comments yet — be the first.