即将进行的Google面试,寻求一些准备建议[关闭]


29

好吧,我一直在尽可能地打书。我即将通过电话采访一位软件工程师的职位。我已经阅读了所有博客文章,已经阅读了所有采访记录(有些还很老),而Google本身甚至建议阅读一本书,但这些都不会令这里的人感到惊讶。尽管如此,经过一段时间的准备,我仍然无法撼动有这么大的覆盖面的感觉,而且我永远不确定是要深度还是要广度。我发现自己重新学习了compsci的整个领域,但是在我继续学习另一个方面时却忘记了大多数细节。

因此,我不知道这个问题有一个很好的答案,但是我正在寻找关于如何在面试之前解决剩余几周的任何实用建议。我的一部分大脑因塞满而感到疲倦,当然,其余部分必须用于我目前的工作场所中的一些棘手问题。


3
这可能更适合careeroverflow.com恕我直言。另外,您不会说职位的级别(例如,初学者,高级职位等)以及您的背景,因此需要做很多假设。
vpit3833 2010年

3
@快鱼:告诉你什么,就冷静。参加智商测试,如果您的Google得分超过135分,或者没有Google得分,您就知道自己拥有。
Fanatic23年

9
在这里很棒,因为它与程序员有关???为什么具有较高声望的人喜欢对事物进行分类和组织,直到夸克?
乔纳森。

3
已经有很多求职面试问题。您的问题有何不同?如果您的答案是“ Google”,那就是为什么它不在这里的原因。有无数的网站在处理Google面试,其中许多网站可以为您提供比这更好的信息。
妮可

2
并且您认为即将面试的面试官不会潜伏于P.SE吗?:)
haylem 2010年

Answers:


30

你应该知道的事情

  • Google希望雇用您!

    任何软件公司的生命线都是员工,而Google也不例外。它希望聘用最好,最聪明的人,进行面试的人希望您像您一样成功。

  • Google会尽力对您进行尽可能准确的评估。这是他们的工作。

    Google是一家数据驱动的公司。招聘决定不是由经理命令决定的。取而代之的是,每个面试官都会在面试过程中记下大量笔记,这些笔记会组合成一个小包。然后,该数据包将由一个单独的委员会审核,该委员会最终将做出决定。因此,如果您只是不与一位面试官“共鸣”,那就不用担心!重要的是您在面试中的表现如何。

你应该拥有的技能

在面试之前,请务必复习以下技能/技术。即使您没有直接被问到这些问题,对它们进行回顾也可以使您正确地思考。

  • 数据结构

    数组和链表之间有什么区别?一棵树和一个图?您什么时候可以使用另一个?这将如何影响速度/内存的权衡?

    面试问题并不能解决问题。能够解释您的方法的运行时间,以及可以进行哪些权衡。例如,“如果我缓存所有内容,它将占用X gigs RAM,但由于...会更快地执行”。或者,“如果我在执行操作时对二叉树进行排序,则X会变慢,Y会变快,等等。”

  • 演算法

    基本的图遍历算法,树遍历算法和两种很好的数字排序方法。

    确保使用动态编程练习解决非平凡的问题。当涉及到棘手的面试问题时,这就是您的陷阱!

  • 哈希表

    这是巨大的。知道所有有关哈希表的知识,从能够自己实现哈希表到了解哈希函数,再到为什么存储桶数应为质数。哈希表涉及的概念几乎与计算机科学的每个领域有关。

  • 谈论自己的要点

    与面试官聊天的前几分钟是解释任何一种使您与众不同的经历的重要时间。相关项目,重大技术成就等。请记住,进行采访的人已经采访了数十个(甚至不是数百个)像您一样聪明的人。那么,您能说什么使他们感到惊讶呢?

    例如,在一次采访中,我与采访者谈到了我写的一个在大学玩Go游戏的程序。为围棋游戏编写AI很难,而且我有一个可怕的围棋机器人来证明这一点!最重要的是自己,而不只是一些懂编程的聪明人。

不要过分强调,这就像其他任何一次采访一样。请放心,没有人会问您有关人孔盖或山的愚蠢问题。富士


7

放松

如果您的面试就像我的面试一样,面试官不会在那里让您沉迷于服从,那么他会在那里查看您的想法

编辑:这只是最初的电话采访,我不知道更多……如果我这样做的话,我可能还是不能告诉你!


2
你找到工作了吗?
Manoj R 2010年

1
@Manoj:大声笑-不,但这不是重点。我实际上并不想要他们要面试的工作,但对这一过程以及机遇是很好奇的。我/无意搬到加利福尼亚!
史蒂文·劳

2

http://get-that-job-at-google.blogspot.in/中借用了以下文章

编码知识 C / C ++和Java是Google Interviewer首选的编程语言。您必须至少非常了解其中之一。您将需要在电话屏幕访问和现场访问中编写代码。

CS面试的推荐书籍:算法简介-Cormen

节目采访公开

破解编码面试

面试算法

推荐的编码实践网站:InterviewStreet,Topcoder

Big-O这应该是准备算法面试的起点。您绝不能为基本的复杂性分析而苦恼,因为它将保证不会被雇用。您应该熟悉并理解O,Θ和Ω表示法。我建议阅读“数据结构和算法”书中有关复杂性分析的部分。

排序您应该能够轻松编写算法O(n * lgn),例如QuickSort和MergeSort。比较并了解最佳,最差和平均情况下的复杂性。我发现Wiki上的这张表非常方便。它列出了所有排序算法的重要属性。不要忽略像冒泡排序或插入排序这样的基本O(n ^ 2)算法,因为其他算法对此有所改进。访谈更多地是关于改善基本思想的,排序算法将有助于此过程。

哈希表如有疑问,请考虑哈希表。它们在大多数问题中很有用,并经常通过缓存结果来帮助我们改善某些问题的时间复杂性。

树木经历基本的树木构造,遍历和操纵算法。您应该能够基于二进制搜索树实现算法。您应该熟悉平衡树,尽管不希望在面试中为平衡树编写代码:AVL树,红黑树,Trie,n元树等。需要有序,后序和前序遍历的全面知识,因为我们可以通过对这些遍历之一进行简单的修改来解决许多树问题。

图是计算机科学中非常重要的概念。练习图形的三种基本表示形式(对象和指针,矩阵和邻接表),并熟悉它们的优缺点。面试的时间不多,所以您不要指望非常复杂的事情。但是,必须使用基本图遍历算法(DFS和BFS),您应该在所有基本表示形式中实现它们。您应该能够实现Dijkstra或Floyd-Warshall算法以及最小生成树算法(Kruskal和Prim)。了解拓扑排序,因为它在许多排序问题中非常有用。

动态编程这可能是最重要的主题,因为实现的规模很小。您应该能够在35-40分钟的时间内实现2-3个动态算法。当您检查此博客或Web上的资源时,您会发现每次面试中至少应涉及一个动态编程问题。

操作系统了解进程,线程和并发问题。了解互斥体,信号量,监视器及其工作方式。了解什么是死锁和活锁,以及如何避免死锁。了解有关上下文切换,调度等的信息。

数学您应该熟悉计数,组合数学和概率。

Google的出版物如果您有时间,请阅读下面列出的Google突破性出版物。Google文件系统

Google Bigtable

Google MapReduce


您应该在此处发布相关文本,并避免链接腐烂。
致命

抱歉,我是这个论坛的新手。我已经改善了答案
chinmay

1
“ ... Java ...首选的Google编程语言”我不知道。说明为什么Chrome使用其他浏览器资源的3倍。(敲敲门。谁在那里?……长时间停顿……爪哇!)
乔什·坎贝尔

1

如果您在职业生涯中度过了最后几个月,则可以放松。采访中当时发生的事情无法计划,但最好放宽,并有精力进行最后一轮。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.