如何准备技术工作面试——基于我成功获得工作的经验
你好,我是 Ilyas。我是一名 Web 开发者,这是我关于如何在长时间内挣扎于面试,以及最终是什么帮助我突破困境的故事。我将谈谈在基本面试问题上失败的经历教会了我关于记忆、准备和更明智求职的事情。
如果你是一位不断被拒绝,且不完全理解原因的初级、中级或自学开发者,我希望这能有所帮助。
以下是我将要涵盖的内容:
- 我 18 个月的求职挣扎
- 我未曾预料的面试问题
- 发现主动回忆和闪卡
- 我的面试准备系统
- 成果
- 改变我寻找工作的方式
- 将我的系统转化为一个小工具
- 我学到的经验教训
- 最后的思考
我 18 个月的求职挣扎
18 个月里,我一直在努力寻找一份远程或可搬迁的 Web 开发工作。
在那段时间里:
- 我申请了超过 1,000 个职位
- 我经历了大约 20-30 次面试
- 我搞砸了其中大部分面试
这令人筋疲力尽。我感觉自己付出了很多努力,却几乎没有任何成果。随着时间的推移,我开始怀疑自己的技能,并想知道我是否还能找到一份真正令自己满意的工作。
更令人困惑的是,就在几年前(2021 年),我几乎没有任何经验,却只用了三周就找到了一份美国公司的远程工作。显然,有些事情已经行不通了。
我未曾预料的面试问题
经过数十次面试后,我注意到一个模式:我失败的原因不是无法解决复杂的算法问题或在压力下构建功能。我是在基本的技术问题上栽了跟头。
例如这样的问题:
- “React 中的 Portals 是什么?”
- “你能解释一下 HTTP GET 请求是如何工作的吗?”
这些并不是难题。这些都是我以前学过的东西。但在面试中,在压力之下,我就是无法回忆起来。或者仅仅是因为在准备时跳过了它,因为没有相应的系统。
那时我意识到了真正的问题:我不是不理解概念,而是无法快速回忆起它们。
我的第一反应是学习更多。更多的教程、更多的文章、更多的视频。
但被动学习并没有解决问题。我仍然在面试时大脑一片空白。我真正需要的是一种训练记忆力的方法,而不仅仅是消费信息。
发现主动回忆和闪卡
就在这时,我遇到了闪卡和主动回忆的概念。
主动回忆意味着反复测试自己所学的内容,而不是仅仅重读材料。你先尝试凭记忆回答问题,然后核对答案。这种方法在一个多世纪前就得到了研究的支持。
我开始用这种方式练习小而具体的概念,比如:
- React 基础知识
- JavaScript 基础
- HTTP 方法
- 浏览器行为
我反复练习,直到回忆答案变得自然而然。
这在面试中产生了巨大的不同。闪卡帮助你过滤噪音,真正学到重要的东西。这不仅仅是记忆事实——而是关于真正理解、快速记忆,并在你学习的每个概念中打下坚实的基础。
所以,为了帮助你准备面试,我结合了多年的经验和科学的学习方法,将它们转化为一种工具和方法,让你在正确的时间获得正确的信息。
我的面试准备系统
一旦我找到了正确的学习方法,我就围绕它建立了一个简单的系统。
第一步:询问需要准备什么
我不再猜测要学什么,而是开始直接询问招聘人员: “我应该为技术面试准备哪些主题?”
令人惊讶的是,他们中的许多人回复了一个清晰的列表,这帮助我只专注于真正重要的内容,避免过度准备随机主题。根据我的经验,很多 HR 代表对求职者相当有帮助。
例如,当我申请一个 React 前端 Web 开发职位时,HR 专员建议我主要专注于 React 和 JavaScript。所以我准备了所有围绕提升(JS)、事件循环(JS)、React 底层工作原理、props 是什么以及如何工作等热门问题。
总的来说,那次面试进展顺利——但当我遇到一个关于 React Portals 的问题时,我无法正确解释它。因此我没有得到这个职位。但我不为此责怪自己,因为这是一个非常冷门的话题。😊
我还申请了另一个前端开发职位,HR 专员建议我主要准备关于 GSAP、Framer Motion 和 React/Next JS 的问题。这很有道理,因为该公司主要构建现代动画网站。
在我的面试中,理论部分进行得很顺利,但我失败了带回家的作业。那时我意识到我在这些领域技能不足。
在另一家公司,我向 HR 询问了文化面试,这是最后一轮。那位代表说:“别担心,你这边困难的工作已经完成了。只需准备一个轻松的对话。”
而在我提交的最后一份申请(并且实际上得到了工作录用通知)之前,HR 专员告诉我重点准备 CSS——尤其是 Flexbox 和 Grid。这很有道理,因为这个职位是 HTML 标记开发人员。因此,我练习了关于这些主题的所有细节,甚至是比较冷门的部分。
我对每一轮面试都采用同样的方法。
第二步:使用闪卡(谨慎使用 AI)
我使用 ChatGPT 为每个主题生成闪卡,并每天复习它们。
我学到的一个重要事情是:AI 有时会出错。为了减少错误,我开始在提示中添加官方文档的链接,以便答案基于可靠的来源。
我保持学习时间简短而连贯。这种连贯性比长时间的学习更重要。
AI 出错是我创建 99cards.dev 的原因
以下是我在 ChatGPT 中使用的提示:
你是一位拥有 20 年经验的 Web 开发专家。你的任务是帮助我为面试做准备。 请准备 10 张关于 CSS Flexbox 主题的闪卡。格式为一个问题附带四个答案。其中一个答案是正确的。 你将逐个提供所有问题。在我回答之后,你给我反馈,然后给我下一个问题。
请注意,你应该根据你的需求和需要复习的内容来调整你的提示。
你可以尝试各种因素,例如:
- 难度:初学者或高级
- 具体性:从模糊(例如:我想练习 CSS)到高度具体(例如:我想练习 CSS Flexbox 中的 flex 属性)
- 问题数量:最佳范围是 10 到 20 个
- 添加上下文:好的做法是添加官方文档的链接,因为这可以减少 AI 幻觉的机会
以下是 ChatGPT 创建的典型闪卡:
如果你提供了答案,你会得到这样的反馈:
成果
几周后,面试感觉大不相同了。
我更加冷静。我能回答基本问题而不会恐慌。我能清晰而自信地解释概念。
在我最后的面试过程中,我一口气通过了四轮面试,并在技术测试中获得了 95% 的分数。
不久之后,我收到了一份录用通知:每月 5,500 美元,并为我和我的家人提供付费搬迁套餐。
很长一段时间以来,我的努力第一次与成果匹配。
改变我寻找工作的方式
在获得录用通知的大约六周前,我还改变了寻找工作的渠道。
我不再仅仅依赖大型招聘平台,而是开始使用像 Telegram 工作群组这样的小型社区。
这有两个好处:
- 竞争更少:许多小公司在那里发布职位,申请者较少
- 直接沟通:我可以在申请前直接给招聘人员发消息
在提交申请之前,我会问: “我看到了这个职位。这是我的简历和 LinkedIn。我是否适合?”
如果答案是肯定的,我就申请。如果不是,我立即转向下一个。
这为我节省了大量时间和精力。
将我的系统转化为一个小工具
在为面试做准备时,我为自己创建了数千张闪卡。在笔记中管理它们变得很困难,所以我最终将它们变成了一个名为 99cards.dev 的小工具。
它只是一个经过事实核查的 Web 开发闪卡集合,按主题分组,基于帮助我停止在基本面试问题上失败的同一种方法。
以下是该应用程序的一些截图:
我学到的经验教训
以下是这次经历的一些收获:
- 面试失败并不总是意味着你缺乏技能
- 被动学习对于面试准备是不够的
- 能够快速回忆基础知识非常重要
- 求职是一项技能,而不仅仅是数字游戏
- 一致性每次都能胜过临时抱佛脚
最后的思考
如果你现在正在为面试而挣扎,特别是作为一名初级、中级或自学开发者,不要假设你不擅长你所做的事情。
就我而言,问题不在于努力或天赋。而在于准备和方法。
我还根据我的经验创建了一份免费的面试清单,涵盖了 HR、技术、行为、系统设计、现场编码、带回家任务、算法和文化契合度。
我希望这个故事能为你节省一些时间和压力。
你往往距离一份好工作只有一次成功的面试之遥。— Ilyas