亚马逊工程师谷歌面试指南,GitHub上98000星,已翻译成中文1997年入行的web工程师,立志成为谷歌软件工程师,写了超全的学习面试教程3年前作为自己的奋斗计划。这位名叫JohnWasham的工程师换了好几份工作,最终在2017年阴差阳错地成为了亚马逊AWS的技术专家。但这并不妨碍他的教程走红。自上线GitHub以来,已获得近10万颗星点赞。而且,该教程的中文翻译已于近期完成。即使没有机会去谷歌面试,也可以借此充实自己。为什么要写这个教程?作者Washam没有计算机科学学位,但他从小就表现出对计算机的浓厚兴趣。他的工作是关于网络程序和服务器的构建。作为一个非专业的车手职业,Washam已经相当成功了。不过,他还是想在谷歌工作,真正了解计算机系统、算法效率、数据结构性能、低级编程语言以及它们是如何工作的。但如果他不知道这些知识,他怎么可能被谷歌录用呢?于是他收集了网上各种计算机专业知识,以及加入谷歌的员工分享的资源,系统地整理了这些资料。Washam强调,如果你想在谷歌工作,首先不要贬低自己。谷歌工程师很聪明。然而,即使在谷歌,他们仍然感到不安,因为他们认为自己不够聪明。学习资源接下来,跟随Washam的脚步来学习吧。首先要做的是选择一种语言。在谷歌,一般是C++、Java、Python,有时也会用到JavaScript和Ruby。其背后还有一些SQL、HTML等技术没有一一列举。然后开始学习计算机硬件知识:然后补充计算机科学的基础数学知识,如算法复杂度/Big-O/渐近分析法、数据结构、树、排序、图论等。还有递归、动态规划、组合学和概率、NP&NP完全和近似算法、缓存、线程和进程、系统设计、可伸缩性、数据处理。看到这么多的知识点,是不是有点眼花缭乱?Washam告诉你一个小技巧。因为你不可能一次记住所有的知识点。所以需要把要复习的知识点做成flashcard(抽认卡):普通的,有代码的,类似于背单词。每张卡都会有不同的格式设计。抽认卡的源码在项目首页有,可以根据自己的学习特点制作。Washam还保留了一套ASCII代码表、OSI堆栈、Big-O符号和更多备忘单,供他在业余时间研究。每编程半小时休息一下,复习一下你的抽认卡。当然,论文的阅读也是必不可少的,尤其是谷歌发表的一些基础技术论文。书籍推荐一些关于算法和C++编程的。去谷歌面试要注意什么面试的第一步当然是要有一份好的简历,这样才能为你赢得宝贵的面试机会。知名科技博主SteveYagge给出10个小贴士,助你打造一份体面的简历。这位史蒂夫曾在亚马逊和谷歌工作过,Washam的项目大量引用了他的技术博客内容。面试的时候,你可能会遇到这20个问题,每个问题准备2-3个答案。准备一个故事,而不仅仅是关于你已经完成的事情的数据。面试官也会问你有什么问题。不要说你没有任何问题。你可以试着问一些这样的问题:当然,进入谷歌并不意味着结束,你还需要一个新的学习过程。Washam还有一个附加组件,涵盖Emacs和Vim、Unix命令行工具和密码学。这些内容虽然不会直接使用,但是会大大提高你的效率。最后,在这样的特殊时期,好好给自己充电。祝大家新的一年面试成功!传送门资源地址:https://github.com/jwasham/coding-interview-university/blob/master/translations/README-cn.md
