FDE Times 数据在招 FDE 职位 862▼55 近 7 天在招职位数的变化(同口径比较):不计入本周新开始追踪的公司的职位近 7 天新增 70在招公司 180支持远程 24%美国薪资中位数 $200k招聘最多 Palantir 95
ENVI

前线部署工程师(FDE)的专业媒体

书籍与课程

《程序员面试金典》只适合一部分 FDE 编程面试

Google 的 45 分钟算法面试正是这本书的主场;OpenAI 的 60 分钟生产级构建只需精读几章。

封面: Cracking the Coding Interview
Cracking the Coding Interview · Gayle Laakmann McDowell · 封面图片:Open Library
分享微博

要点速览

  • 第 6 版(CareerCup,2015 年,708 页)收录 189 道题,但官网上的书名仍写着 150 道
  • 开篇讲 Big O 和解题技巧的两章,比刷完全部 189 道题更有价值
  • FDE 编程面试可能是 45 分钟算法题,也可能是中途追加需求的 60 分钟构建,先问清招聘方
图表对比两类 FDE 编程面试各应阅读《Cracking the Coding Interview》的哪些章节。橙色高亮的 Big O 和解题技巧两章,对 45 分钟算法面试和 60 分钟构建面试都值得读。算法面试另加数组与字符串、树与图、排序与查找和递归;构建面试另加面向对象设计、可扩展性与内存限制和线程与锁。
精读开篇两章,再根据招聘方确认的编程面试类型选读其余章节。来源:阅读顺序为本文建议;面试类型参考 Educative(Google)和 Exponent(OpenAI)。

距离前线部署工程师(FDE)面试还有一个月,桌上放着一本 708 页的书。时间不够全读完,问题在于该读哪几章。

答案取决于编程面试的类型。有的公司考的是这本书讲得最透的经典算法题;有的公司考的是生产级构建,这时真正有用的只有几章。

内容比书名更多

作者是 Gayle Laakmann McDowell。根据出版商的信息,第 6 版由 CareerCup 于 2015 年 7 月 1 日出版,共 708 页,ISBN 为 978-0-9847828-5-7。官网上这一版的书名仍是“150 Programming Interview Questions and Solutions”,书中实际收录 189 道题,每道题都附有提示。

作者网站称,这一版比上一版的内容多 70%。这本书出版已久,但核心内容没有过时:在面试官面前遇到陌生问题时该怎么思考。

难点在于,FDE 编程面试没有统一模板。Educative 关于 Google FDE 面试的课程介绍,编程面试是标准的数据结构与算法面试,时长约 45 分钟,一到两道题,这正是这本书的主场。

至于 OpenAI,Exponent 的指南介绍,现场面试是一轮 60 分钟的生产级构建。题目可能拆成连续的几个部分,做出第一版后还会追加新需求。同一本书,不同面试需要不同的读法。

精华在第 1 题之前

在 189 道题之前,书里有几章开篇内容:面试流程、行为面试准备、Big O,以及一章讲技术问题、介绍 5 种算法思路。很多读者直接跳到习题,这是个错误。开篇几章教的是方法,习题只是练习方法的地方。

Big O 一章讲时间和空间复杂度、均摊时间、log N 在什么情况下出现,以及如何推算递归函数的运行时间。其中“Multi-Part Algorithms: Add vs. Multiply”一节值得细读。

假设先遍历订单列表 A,再遍历客户列表 B。两个循环先后执行,复杂度是 O(A + B);把循环 B 嵌套在循环 A 里,就变成 O(A × B)。

有 10,000 个订单和 1,000 个客户时,两者的差别是 11,000 步和 10,000,000 步。

在敲代码之前,先练习把这个计算说出来。一句“两个循环先后执行,所以是 O(A + B)”,就足以让面试官看出你理解自己要写的代码。

有名称的技巧胜过死记答案

技巧一章讲授各有名称的解题方法,比如 BUD、Base Case and Build 和 Data Structure Brainstorm,还讲了好代码应该是什么样。有名称的技巧容易记住。卡住时,手里有一份清单可以逐项尝试,而不是干坐着沉默。

对 OpenAI 的构建面试来说,“好代码”这部分更加重要。第 30 分钟第二个需求到来时,命名清晰、函数拆分合理的代码几分钟就能改好;只求能跑、匆忙写出的代码可能要推倒重写。

不同面试,按什么顺序读?

189 道题按主题分组:数组与字符串、链表、栈与队列、树与图、递归与动态规划、排序与查找、面向对象设计、数据库、线程与锁、测试,以及其他几个主题。所以可以挑章节读,不必从头读到尾。

如果编程面试是约 45 分钟的算法题,先读 Big O 和技巧两章,然后依次做数组与字符串、树与图、排序与查找,最后是递归。

如果编程面试是生产级构建,读完开篇两章后,接着读面向对象设计、可扩展性与内存限制、线程与锁。这三章最接近这类面试所模拟的实际工作。

假设任务是写一个读取日志、按服务统计错误数的工具,之后追加两个需求:日志文件比内存还大,以及多个线程同时写入。这时,讲内存限制和锁的章节正好派上用场。

把练习变成简历上的证据

Educative 建议请招聘方确认面试形式,这应该是第一件要做的事。提前发一封邮件,就可能省下两周时间,不必为一轮根本不考动态规划的面试苦刷这类题。

然后,把练习成果变成别人看得见的东西。一个小仓库,提交历史展示你如何经过两三次需求变更扩展代码,并附有复杂度说明,比简历上一句“刷了 300 道 LeetCode”更能说明你的能力。

《Cracking the Coding Interview》仍是准备编程面试的扎实基础。对 FDE 来说,高效的读法是精读开篇两章,再根据招聘方确认的面试形式选读其余章节。

这篇文章对你有帮助吗?

5 个信源
路线图上的下一篇 · 阶段 1: 基础认知哈佛免费课 CS50x 先教 C 语言,用意正在于此评分时正确性的权重是代码风格的三倍,FDE 留在客户现场的脚本也该守这条规则。