Google 软件工程师面试准备指南
这份教程源自一位资深工程师的个人奋斗计划。他并非科班出身,却通过系统化的自学最终进入顶级科技公司。该资源在 GitHub 上线以来已收获近 10 万星好评,近期已完成中文翻译,即便没有去 Google 面试的机会,也值得用来充实技术体系。
为何写这篇教程
作者 Washam 本人并非计算机学位,儿时便展现出对计算机的浓厚兴趣,从事过 Web 程序构建、服务器构建等工作。作为一名非专业人士转行,他依然渴望真正理解计算机系统、算法效率、数据结构性能及底层编程语言原理。
Washam 强调,想去 Google 工作首先不要妄自菲薄。Google 的工程师虽然才智过人,但身处其中的他们也会因觉得自己不够聪明而感到不安。因此,系统性地收集专业知识与员工分享的资源,整理成学习路线至关重要。

学习资源与路径
语言选择
首先要做的就是选择一门语言。在 Google 一般是 C++、Java、Python,有时也会用到 JavaScript、Ruby。背后还有一些如 SQL、HTML 等技术没有列出,但核心在于掌握至少一种主流后端语言。
基础补全
接着开始学习计算机硬件知识,补充计算机专业的基础数学知识,如算法复杂度 / Big-O / 渐进分析法、数据结构、树、排序、图论。
此外还有递归、动态规划、组合与概率、NP&NP-完全和近似算法、缓存、线程与进程、系统设计、可伸缩性、数据处理等核心考点。

高效复习技巧
面对庞杂的知识点,死记硬背效率很低。建议采用抽认卡(Flashcard)的方式,将概念与代码结合记忆,类似于背单词。项目主页中就有抽认卡的源代码,可以根据自己的学习特点去制作。
Washam 还留有一组 ASCII 码表、OSI 堆栈、Big-O 记号及更多的小抄纸,以便在空余的时候可以学习。每编程半个小时就要休息一下,并去回顾你的抽认卡。
当然,论文的阅读也是必不可少的,尤其是谷歌曾经发表的一些基础技术论文。

书籍则推荐一些关于算法和 C++ 编程之类的经典著作。

面试注意事项
简历准备
面试的第一步当然是要有一份好的简历,这样才能为你争取到宝贵的面试机会。知名科技博主 Steve Yagge 给出了 10 个贴士,帮你做出一份还不错的简历。这位 Steve 曾经在亚马逊、Google 都工作过,Washam 的这个项目就大量地引用了他的技术博客内容。



