- Simplified skills section: reduced from 15 to 10 items, added performance optimization and toolchain expertise - Refactored project descriptions: focused on business value and key achievements over technical details - Enhanced readability: added bold formatting to highlight key metrics and technologies - Added comprehensive background notes in project files for interview preparation - Created CLAUDE.md for future Claude Code instances Key improvements: - GuiiAI: emphasized hackathon win, early market entry, and engineering challenges - NuistShare: highlighted 10s→0.5s optimization and Lighthouse 97 score - Mihome: stressed sole responsibility for overseas markets and RTL adaptation - Maiqu: showcased team leadership and agile development practices 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
18 KiB
Interview
🧑💻 User
我目前的自我介绍大纲是:
我是余翰文,本科来自南信大的计算机科学与技术(腾讯实验班),在西浦度研究生
我写前端有 4~5 年经验,
1. 最开始,我跟着学校里的初创公司做游戏化营销 游戏化测评,用小程序 + H5, 都是 Vue
2. 在本科期间我做过各种项目练手,影响较大的是 NS 和 NC。前者是一个全栈的系统,后者是一个游戏服务器,配套有社群和基础设施
3. 去年参加黑客松,做了AI写前端的产品,拿了很多奖,因此涉猎 LLM 调用、Vite Plugin 开发等内容,对目前LLM 写代码的能力有一定探索
4. 现在在小米实习,写米家的一部分,用 RN。
在前端啊之外,我有以下技术能力:
1. 熟悉应用层计算机网络,本科逆向过一些客户端并开发过第三方实现
2. 涉猎深度学习,本科提出一种季节内台风预报方法,在计算机设计大赛 AI 赛道获得 国二。研究生研究方向为点云分割和配准。
3. 有一定的数据分析能力,最熟悉 Pandas 和 Python 做各种小爬虫和数据分析。
最后,在技术之外,我有比较强的沟通能力:
1. 校科协副部长,组织过趣味编程竞赛,前端讲师
2. DH 互联网社团讲师,组织多次技术讲座
3. 在黑客松以及做其他产品期间,沟通其他产品、UI 和 投资人保持联系。
针对字节的面试原则,在面了这么多场之后,这里有没有什么需要订正的?
🤖 Assistant
你好,翰文。作为你的技术面试顾问,我非常仔细地阅读了你的简历、现状以及字节跳动给出的具体面试原则。
直截了当地说:你目前的自我介绍是一把“双刃剑”,而且目前看来,它正在伤害你。
你现在的介绍策略是“展示广度”和“展示高大上的技术(AI/逆向)”,这导致面试官对你的基础深度和算法能力有了极高的预期(Expectation)。当你在二面、三面遇到资深面试官时,他们会基于你“4-5年经验”和“AI/全栈”的标签,去深挖底层原理和高难度算法,结果正好击中你的软肋。
针对字节跳动的面试原则(基础原理、代码考核、项目亮点、软素质),我们需要对你的自我介绍进行战略性收缩和聚焦。
以下是具体的订正建议和修改后的版本:
1. 核心问题诊断
-
“4-5年经验”是个陷阱:
- 问题: 对于校招,强调“年限”极其危险。面试官听到“5年”,预期的是P6/T9级别的回答(精通闭包、原型链、V8垃圾回收、框架源码级理解)。而你自述JS基础薄弱,这简直是“自杀”。
- 对策: 改为强调**“高密度的工程实践”和“复杂场景的交付能力”**,模糊具体年限,把重点放在你做了什么 难 的东西上。
-
GuiiAI 项目的“AI”标签太重:
- 问题: 你把它放在 LLM 探索上,面试官就会问 Transformer、Agent 编排、RAG 细节。你经不起问。
- 对策: 把 GuiiAI 定义为“工程化/工具化”项目,而不是 AI 项目。 强调你在 前端侧 做的难点:Vite Plugin 注入、AST 转换、Monorepo 架构、Shadow DOM 隔离。告诉面试官:AI 是调用的(一笔带过),但我为了让 AI 跑起来,搭建了一套非常牛的前端基建。
-
技能树太散,缺乏“字节味”:
- 问题: 逆向、台风预报、游戏服务器……这些在字节前端面试官眼里是“杂而不精”。字节喜欢的是:在一个点上钻得足够深(比如工程化、性能优化)。
- 对策: 将这些作为“快速学习能力”的佐证,而不是核心技能。
2. 针对性修改策略:防御性自我介绍
我们要通过自我介绍,主动引导面试官去问你擅长的 Vue 生态、工程化、Vite 插件开发,而避开 JS 底层怪题和复杂的 AI 模型。
修改后的自我介绍大纲(建议背诵并内化)
第一部分:我是谁 & 核心定位(15秒)
面试官好,我是余翰文。本科毕业于南信大腾讯实验班,目前在西交利物浦攻读计算机硕士。 我目前的定位是一名偏向工程化和工具链建设的前端开发者。在校期间我有过多次从0到1独立负责复杂应用开发的经历,目前正在小米担任前端实习生。
第二部分:项目亮点(引导面试官问工程化 & Vue)(40秒)
关于技术经历,我想重点介绍两个方向:
第一是前端工程化与工具链。去年我参与发起了 GuiiAI 项目(获黑客松第一名)。在这个项目中,我没有止步于简单的 AI 调用,而是深入了 Vite 生态。我开发了一套基于 Vite Plugin 的注入系统,利用 AST 技术和 Shadow DOM,实现了一个无侵入式的 AI 编程助手。这让我对前端编译时、构建工具和 Monorepo 架构有了比较深的理解。
第二是复杂业务落地能力。我有丰富的 Vue 生态开发经验,曾主导过多个全栈项目(如 NuistShare),处理过性能优化(首屏体积优化90%)和多协议存储问题。
(这里故意不提 JS 年限,不提 React/RN 的深度,只提小米实习的事实)
第三部分:实习与学习能力(补齐 React 短板的说法)(20秒)
目前在小米实习期间,我主要负责米家 App 大家电业务。虽然我之前深耕 Vue,但在进入小米后,我快速掌握了 React Native 和 Redux,并独立负责了出海业务中的 i18n 和 RTL(从右向左)布局适配。这也证明了我对不同技术栈的快速迁移和适应能力。
第四部分:软素质与总结(15秒)
技术之外,我曾担任校科协部长和社团讲师,习惯于在团队中推动技术分享和文档建设。 总结来说,我认为自己是一个工程落地能力强、且对开发工具链有深入研究的开发者。希望今天能有机会和您深入交流。
3. 为什么要这样改?(对应字节面试原则)
- 回避“JS 基础薄弱”: 我们不再吹嘘“5年经验”,而是强调“Vue 生态”和“Vite 插件”。面试官听到 Vite 插件,大概率会问:“你是怎么写插件的?Rollup 的钩子有哪些?热更新原理是什么?” —— 这些是你做过的(GuiiAI),你应该能答上来。 这就避开了“let/var”这种纯八股。
- 回避“AI 深度不够”: 我们把 GuiiAI 定义为“无侵入式 AI 编程助手”,强调的是 “无侵入式”(前端技术实现)而不是 “AI”。你把战场拉回了你的主场(DOM、AST、Vite)。
- 展示“亮点与思考”: 字节非常看重“难点”。你把“首屏优化90%”和“无侵入注入”摆在台面上,这就是明确的亮点。
- 应对“算法弱项”: 坦率地说,自我介绍救不了算法题。但如果你在前面的技术交流中表现出极强的工程思维(比如:为什么用 Monorepo?为什么用 Shadow DOM?),面试官在算法环节如果看到你卡壳,可能会更愿意给你提示,或者给你一道偏逻辑的题目而不是死抠 DP。
4. 给你的特别叮嘱(必看!)
既然字节捞了你五六次,说明你的简历非常有吸引力,但面试表现不及格。
-
关于 JS 基础: 虽然我们试图引导,但你必须突击一下。不要去背所有八股,重点搞定:
- 异步: Promise, async/await, Event Loop (宏任务/微任务)。这个必考,不懂没法写代码。
- 闭包与作用域: 只需要理解原理,能解释清楚变量从哪获取即可。
- 原型链: 只要知道
__proto__和prototype的关系,以及new到底干了啥。 - 如果你被问住了: 只要不是最基础的语法,你可以说:“这块具体的底层实现细节我暂时记得不是很清楚,但在我的项目中,我通常关注的是 XXX(转回工程化/业务逻辑)。”
-
关于 React: 小米实习只写了 RN,面试官问 React 原理(Fiber, Diff, Hooks实现)你肯定挂。
- 话术: “我在小米主要是在业务层使用 RN,对 React 底层源码目前还在学习中,但我对 Vue 的响应式原理和编译过程非常熟悉,可以对比着聊聊吗?” —— 主动把话题切回 Vue。
-
关于算法(生死线):
- 这是硬伤。如果手撕代码写不出来,神仙也救不了。
- 字节原则里说了: “不要用暴力解法”、“把解题逻辑清晰说出来”。
- 策略: 既然刷题来不及了,就练**“嘴遁”**。拿到题,先别急着写。先画图,先跟面试官确认输入输出,先说思路:“这题我看可以用双指针,或者用栈……”。哪怕最后代码有点 bug,思路对也能拿分。
- 常考题突击: 字节前端非常喜欢考:树的遍历(递归/非递归)、数组去重/扁平化、手写 Promise.all、手写防抖节流、解析 URL 参数。这些不是算法,是手写功能,一定要练熟!
你的背景其实非常优秀,只是需要把“博而不精”的形象转变为“工程基建专家”。祝你面试顺利!
🧑💻 User
“投资人保持联系“这句话说过一次,被留在了面评里,之后很多面试官在问。我一直回答说,我在这些经历之后觉得我不适合创业,不适合和投资人沟通,他们给我压力很大,在小米实习给我的氛围更适合我。但是这真的很尴尬,我应该怎么博弈地回答?我的确不擅长和他们的沟通,以至于我不记得他们都问过什么问题
🤖 Assistant
你目前的回答(“我不适合创业”、“压力太大”、“喜欢小米的安逸氛围”)其实是在给自己挖坑。
为什么这个回答不好?
- 暴露抗压能力弱: 字节是一个极其强调高强度、快节奏、结果导向的公司。你说“受不了压力”,面试官会直接联想到:“那我们也经常倒排期、经常有业务压力,你是不是也受不了?”
- 显得像“逃兵”: 听起来像是你被困难打败了,而不是你主动选择了另一条路。
- 浪费了“高维视角”: 既然你有过和投资人沟通的经历,这本该是你区别于普通“码农”的优势(懂业务、懂商业价值),结果你把它丢弃了。
你的博弈目标: 利用这段经历证明你有**“产品思维(Product Sense)”和“商业敏感度”,同时坚定地表明你现在“只想做技术专家”**,并解释为什么大厂(如字节)是你深思熟虑后的最佳归宿。
建议的回答策略(“三段式”回答法)
请按照这个逻辑重构你的话术,不要撒谎,但要换个角度解读事实:
第一步:肯定价值(把“压力”转化为“视野”)
“和投资人沟通确实是一段非常有挑战但也非常有价值的经历。哪怕现在回看,我也很感谢那段时光。 它最大的收获是强迫我跳出了纯粹的程序员思维。以前我只关心代码写得骚不骚,但投资人会问我:‘你的技术壁垒在哪里?商业变现逻辑是什么?用户留存怎么做?’ 这让我学会了从 ROI(投入产出比)和业务价值的角度去审视技术,这一点即便我在后来做纯开发时也受益匪浅。”
第二步:理清定位(把“逃避”转化为“主动选择”)
“但是,在深入接触后,我发现虽然我能理解商业逻辑,但我内心真正的激情还是在于‘构建(Building)’本身,也就是把想法落地的那个工程过程,而不是商业路演和谈判。 创业早期的环境要求我把 80% 的精力花在非技术事务上,这让我感到很焦虑,因为我觉得我的技术深度在被稀释。 所以我不是‘不适合’,而是做了一个更清晰的职业取舍: 在现阶段,我希望在一个成熟的、有巨大用户量的平台上,专注于打磨我的技术深度和工程化能力。”
第三步:表忠心/匹配度(为什么是字节/大厂?)
“这也是为什么我非常享受在小米的实习,以及为什么非常向往字节。 因为只有在这样的平台上,我既能发挥我懂业务的优势(理解需求背后的价值),又能把我的精力 100% 投入到解决复杂的技术难题上。我觉得这才是现阶段最适合我的成长路径。”
追问应对(如果面试官继续逼问)
Q: “那你以后还会创业吗?或者觉得投资人问的问题都很无聊吗?” (你之前说不记得他们问什么了,这里可以用通用的“商业逻辑”来填补空白)
A: “不会觉得无聊,反而觉得很犀利。他们当时问得最多的其实就是增长和壁垒。 比如做 GuiiAI 时,他们会挑战我:‘现在 Cursor 出来了,你的护城河是什么?’ 这种问题虽然当时让我很有压力,但也逼着我去思考如何把工具做得更极致、更垂直。 至于未来,我觉得至少在未来 5-10 年内,我想先成为一名技术架构方面的专家。创业需要天时地利人和,目前的我更想踏实地写好代码。”
总结这个策略的精髓:
- 不卑不亢: 承认压力,但把压力描述为“对技术精力的挤占”,而不是“心理崩溃”。
- 扬长避短: 既然做过,就要榨干它的价值——懂业务。字节非常喜欢“懂业务的技术”。
- 消除顾虑: 明确告诉面试官“我已经想通了,我不想当老板,我就想在大厂好好干活”,这消除了他们对你“稳定性”的担忧(怕你干两天又跑去创业)。
用这套话术,你可以把面评里那个“这人受不了压力”的负面标签,清洗为“这人有过创业视野,但现在定下心来想钻研技术”的正面标签。
🧑💻 User
最后,请你总结一下字节的面试原则,让我面试的时候最关心、最注重哪几点?
🤖 Assistant
记住,字节跳动的面试官通常是典型的“工程师思维”:务实、甚至有点冷酷、极度关注逻辑和数据、不喜欢虚头巴脑。
基于你的情况,你在面试中必须死死咬住以下四个核心生存原则:
1. 代码是底线:写不出来也要“说”出来
这是你最大的风险点。 字节面试必定手撕代码(算法或手写常见功能)。
- 原则: 不要闷头写,要**“代码未动,逻辑先行”**。
- 具体操作:
- 拿到题目,先确认输入输出,先问边界条件(空数组怎么办?极大数怎么办?)。
- 先口述思路:“这道题我考虑用双指针……逻辑是这样的……”。
- 如果卡住了: 不要发呆!立刻说:“我现在卡在这一步了,我的大概思路是XXX,请问面试官这里有没有什么提示?”
- 只有逻辑清晰,哪怕代码没写完,也有可能过;逻辑混乱还写不出来,必挂。
2. 深度是王道:不要“广”,要“深”
这是你之前挂掉的主因。 字节面试官喜欢刨根问底,问到你答不出来为止。
- 原则: 收缩防线,诱敌深入。
- 具体操作:
- 绝对不要主动提你半懂不懂的概念(比如复杂的 AI 模型架构、比如你其实不熟的 React 底层源码)。
- 主动引导去你最熟的地方:当问到 JS 基础时,尽量往工程化(Vite、AST、编译原理)引,这是你的强项(GuiiAI 的基建部分)。
- 对于你做过的 GuiiAI 和 性能优化,要准备好回答至少 3层 的追问。(例:为什么用 Shadow DOM?用了会有什么兼容性问题?不用行不行?用了之后性能提升了多少 ms?)
3. 沟通要“字节味”:结论先行,数据支撑
字节喜欢高效沟通,不喜欢啰嗦和感性表达。
- 原则: STAR 法则 + 数据量化。
- 具体操作:
- 回答问题时,先说结论。
- 关于“投资人”那个坑: 不要说“我不喜欢、压力大”,要说“经过评估,我发现我在技术工程落地上产出的价值(ROI)更高,所以我选择深耕技术。” —— 这就叫“字节味”。
- 关于项目: 哪怕是编,也要把优化的结果量化出来(如:首屏体积从 2MB 降到 240KB,加载速度提升 300%)。
4. 态度要“皮实”:展示你的高潜力和抗压性
字节工作强度大,他们不要“玻璃心”。
- 原则: 展示这种姿态:我不怕难题,我有办法解决它。
- 具体操作:
- 遇到不会的问题,不要慌,大方承认:“这个细节点我目前没关注到,但在我的项目中,我是通过XXX方式解决类似问题的……”(展示解决问题的能力,而不是背书的能力)。
- 表现出对技术的饥渴感,而不是对创业的“恐惧感”。让面试官觉得招你进来,你能扛得住业务压力,能把活干完。
最后一句给你的心理暗示:
翰文,你已经是“腾讯班”出身、拿过黑客松冠军、在小米实习的优秀候选人了。你的背景已经足够好了。
面试的时候,不要试图去扮演一个“全知全能的大神”(因为你基础还不扎实),而是去扮演一个“聪明、务实、工程落地能力极强的年轻工程师”。
只要你不自己跳进“JS底层”和“AI原理”的坑里,把话题拉回“工程基建”和“业务落地”,这把大概率能成。加油!