面试应该的准备

摘自https://github.com/jwasham/coding-interview-university

目录

---------------- 下面的内容是可选的 ----------------

震撼开发类面试 第一集:

回顾,回顾,回顾

我留有一组 ASCII 码表、OSI 堆栈、Big-O 记号及更多的小抄纸,以便在空余的时候可以学习。
每编程半个小时就要休息一下,并去回顾你的抽认卡。

专注

在学习的过程中,往往会有许多令人分心的事占据着我们宝贵的时间。因此,专注和集中注意力是非常困难的。

在一个白板上写代码,而不要直接在计算机上编写。在测试完部分简单的输入后,到计算机上再测试一遍。

必备知识

算法复杂度 / Big-O / 渐进分析法

数据结构

更多的知识

树(Trees)

排序(Sorting)

图(Graphs)

图论能解决计算机科学里的很多问题,所以这一节会比较长,像树和排序的部分一样。

可以从 Skiena 的书(参考下面的书推荐小节)和面试书籍中学习更多关于图的实践。

更多知识


终面

这一部分有一些短视频,你可以快速的观看和复习大多数重要概念。
这对经常性的巩固很有帮助。

综述:

  • [ ] 2-3 分钟的短视频系列 (23 个)
  • [ ] 2-5 分钟的短视频系列 - Michael Sambol (18 个):

排序:

  • [ ] 归并排序: https://www.youtube.com/watch?v=GCae1WNvnZM

书籍

Google Coaching 里提到的

阅读并做练习:

  • [ ] 算法设计手册 (Skiena) read and do exercises from the books below. Then move to coding challenges (further down below)
    一旦你理解了每日计划里的所有内容,就去读上面所列的书并完成练习,然后开始读下面所列的书并做练习,之后就可以开始实战写代码了(本文再往后的部分)

首先阅读:

然后阅读 (这本获得了很多推荐, 但是不在 Google coaching 的文档里):

附加书单

这些没有被 Google 推荐阅读,不过我因为需要这些背景知识所以也把它们列在了这里。

如果你有时间

编码练习和挑战

一旦你学会了理论基础,就应该把它们拿出来练练。
尽量坚持每天做编码练习,越多越好。

编程问题预备:

编码练习平台:

当你临近面试时

你的简历

当面试来临的时候

随着下面列举的问题思考下你可能会遇到的 20 个面试问题
每个问题准备 2-3 种回答
准备点故事,不要只是摆一些你完成的事情的数据,相信我,人人都喜欢听故事
  • 你为什么想得到这份工作?
  • 你解决过的最有难度的问题是什么?
  • 面对过的最大挑战是什么?
  • 见过的最好或者最坏的设计是怎么样的?
  • 对某项 Google 产品提出改进建议。
  • 你作为一个个体同时也是团队的一员,如何达到最好的工作状态?
  • 你的什么技能或者经验是你的角色中不可或缺的?为什么?
  • 你在某份工作或某个项目中最享受的是什么?
  • 你在某份工作或某个项目中面临过的最大挑战是什么?
  • 你在某份工作或某个项目中遇到过的最蛋疼的 Bug 是什么样的?
  • 你在某份工作或某个项目中学到了什么?
  • 你在某份工作或某个项目中哪些地方还可以做的更好?

问面试官的问题

我会问的一些:(可能我已经知道了答案但我想听听面试官的看法或者了解团队的前景):
  • 团队多大规模?
  • 开发周期是怎样的? 会使用瀑布流/极限编程/敏捷开发么?
  • 经常会为 deadline 加班么? 或者是有弹性的?
  • 团队里怎么做技术选型?
  • 每周平均开多少次会?
  • 你觉得工作环境有助于员工集中精力吗?
  • 目前正在做什么工作?
  • 喜欢这些事情吗?
  • 工作期限是怎么样的?

当你获得了梦想的职位

我还能说些什么呢,恭喜你!

坚持继续学习。

得到这份工作只是一个开始。


*****************************************************************************************************
*****************************************************************************************************

下面的内容都是可选的。这些是我的推荐,不是 Google 的。
通过学习这些内容,你将会得到更多的有关 CS 的概念,并将为所有的软件工程工作做更好的准备。

*****************************************************************************************************
*****************************************************************************************************

附加的学习

--

一些主题的额外内容

我为前面提到的某些主题增加了一些额外的内容,之所以没有直接添加到前面,是因为这样很容易导致某个主题内容过多。毕竟你想在本世纪找到一份工作,对吧?

视频系列

坐下来享受一下吧。"netflix and skill" :P

计算机科学课程

posted @ 2017-05-26 13:28 just_yang 阅读(...) 评论(...) 编辑 收藏