[转]求职google

关于招聘流程,其实开复在《与未来同行》那本书的第185页已经讲得非常清楚了,不外乎是下面几个主要的步骤:

1. 筛选简历
2. 电话面试或笔试
3. 若干轮面试
4. “招聘小组”讨论
5. “副总裁小组”最后复核
6. 发录用通知,签合同

电话面试是一件很有趣也很容易惹来争议的事情。至少我自己觉得,虽然电话面试可以省些时间,但的确比较难于全面了解一个人,不像面对面的面试那样有现场感,也没有直接交流时的各种便利——比如,可以从对方眼神、表情中发现他的许多特点。具体到技术面试上来说,电话面试让对方写代码是比较难的,据我所知,有的面试官的确会让对方写一段简短的代码,然后在电话中念出来。这个方法是不是真的有效,的确很难讲。但同时,我个人认为,电话面试有一个最大的优点,就是可以更容易地考察对方的语言交流能力:因为电话上的沟通不如面对面那么方便,在电话面试中你可以很容易地看到对方是如何利用这个“有限信道”来向你传递信息的。能够在电话面试中清楚、明白地展示自身优势的人,至少在语言交流方面都不会有什么问题。——顺便强调一下,交流和沟通能力对于现代软件开发来说,实在是太重要了。

因为每个面试官有每个面试官的特点,不大好介绍和评价其他同事的面试方法。我自己在面试时,一般喜欢先考察一个偏重基本功的题目,然后再考察一个偏重思维灵活性的问题。我还有一个倾向,可能也是某些应聘者比较担心的,就是边聊边问,根据应聘者的自我介绍,提最有针对性的问题。比方说,对方讲,自己有五年的C语言编程经验,精通(老实说,面试多了,对 “精通”这个词就非常敏感,总觉得这个词背后是有无数玄机的)C语言,那我多半就会立即考察一下对方对C语言指针或函数调用的掌握程度;如果对方说自己精通的其实是JavaScript语言,那我自然会渴望知道,对方是不是真的清楚,JavaScript作为一种动态语言或脚本语言有哪些与众不同的语法特点;如果对方说自己对J2EE平台和流行的框架非常熟悉,那我一般会先从最基本的面向对象设计以及最基本Java对象模型开始问起;如果对方说自己有丰富的软件设计经验,那我这里有好几个并不一定真正存在的软件需求,需要对方画出系统架构的设计图来。

面试时现场写代码或现场设计算法几乎是一定会发生的事情。拿我来说,对方写代码时直接敲在电脑上或是写在纸上,选用什么样的语言,或者使用什么样的代码风格,其实都是无所谓的。我最最关心的是应聘者对编程序这件再普通不过的事情的理解程度。一般说来,只要时间允许,我都会和应聘者一起,逐行讨论他刚写出的代码,比如函数接口设计是否合理,有没有其他的设计方式,变量类型的选择是否合适,代码运行时的时间或空间开销是否太大,代码中两个看上去相似的片段是否可以合并,等等等等。如果是现场设计算法,那我一般会要求对方在纸上用最直观的图示把他的算法思路表现出来——这多半是因为我的脑子比较慢,如果对方不能描述得非常清楚的话,我很难判断他的答案究竟是不是正确。一般说来,Google经常使用的面试题目都可以从不同的角度入手来解答,出色的应聘者还经常能想出面试官从未见过,又完全正确的新答案来。所以,做面试官也要开动脑筋,判断对方的答案哪一步正确,哪一步有问题。几场面试下来,面试官也要消耗许多脑力和体力的。

忘了提一点,Google中国招聘的技术职位并非只有软件工程师一种(参见http: //www.google.cn/jobs/),上面讲的不少要求是针对软件工程师的。其他技术职位在对应聘者能力的要求方面各有差异,面试时的侧重点也不尽相同。比如下面两个特定领域的研发职位(顺便在这里贴一下广告,呵呵):
移动和无线应用工程师:http://www.google.cn/support/jobs/bin/answer.py?answer=57922
Linux/开源软件研发工程师:http://www.google.cn/support/jobs/bin/answer.py?answer=55003


你可能感兴趣的:(编程,算法,面试,Google,招聘)