2006-06-18

我的Google笔经和面经 暑期实习 软件工程师

终于如愿以偿地拿到google的实习offer,说实话,此时,我对自己充满信心。

Google申请实习的方式我很赞赏,先笔试后面试,事实证明这是我最适应的筛选方式,如网申这种形式,我连面试的机会都没有。

在某周周二,我抱着试试看的心理去参与了Google在学校里举办的宣讲会和笔试。原以为来的人会很多,到了现场却发现没有出现想象中的爆满的情况,大概大家都这么想,都没来吧。

来宣讲的有Google的工程师,还有李开复的特别助理,很多都是海龟,但汉语却出奇地标准,也从不夹杂英语。在我印象中,很多在跨国公司工作的白领都以汉语中夹杂英语的说话方式为荣,而Google却给我很独特的印象。Google本地化做的真不错。

宣讲中提到Google中本科生的比例很低,对于我这个尚未毕业的小本本压力真的很大。Google声称对不同学历的学生一视同仁,要和这么多多吃几年饭的师哥师姐们比拼,心中没底。

宣讲结束,笔试开始。没有出现原先预想的不良的情况:英文试题、智利测验。除了开头欢迎关注Google实习的欢迎语句和填写个人信息以外,没有出现英文。题目类型也都是技术型的。

题目在饮水思源的Google板上已经有人发过,这里就不多重复了,在此我只是想揣测一下出题人的意图。

1、2题显然是筛选懂不懂程序的人,会看程序,能像计算机一样思考,找一下规律就可以了。
3题看你Java等高级语言的原理有没有听说,即使不懂,只要了解一个大概,思考一下也能知道答案,关键是你要听说过GC。
4、5题考的是复杂度、排序稳定度。我不在行这方面,这两题答得比较失败,好多排序算法的名字都不记得了。
6题被咔嚓了,这个递归的确bt了些,我花了一些时间,最后还是猜了一下。
前两道大题主要看会不会写程序,最后一道看对于算法的设计。
对最后一题我一直没有找到一个很完善的方案,总觉得我的算法有点问题,收敛的不是
最快,也不一定收敛到最优解。

总 的来说,通过笔试,就必须会写会看程序,对于常见的数据结构和算法要有比较深刻的认识,同时要有独立设计算法的灵感迸发,对于其他知识的理解就是附加要求 了。个人觉得,要达到这些要求还是需要比较系统地学习数据结构和算法,平时也要多动脑筋,设计一些简单的算法,并在复杂度上精益求精。我觉得我在大学期间 还是荒废了很多。

次日下午我又去参加了ebay的笔试和面试,这里暂且不提。面试完已经是晚上了,原来说Google会在下午给面试通知的,所以以为没戏了,庆幸的是晚上八点许来了电话,要我周五上午去面试。

周四晚我回家,临行问同学借了几本数据结构和算法的书回去,结果证明,此举十分明智。

面试是在一家宾馆某层进行,面试同样没有遇到我最不想看到的情况——英语自我介绍。正如网上很多面经流传的,面试全程中文。< /p>

面试分两轮,一轮一个小时(包括面试间休息),真正和面试官谈的时间就45分钟左右。每轮面试都是1v1,和面试官距离很近,没有什么压抑感,都是搞技术的,也很谈得来。

面 我的第一个是女的,先是问我对于Google的哪个产品比较感兴趣。除了search,我用local比较多,所以答曰local。没料到的居然这位面试 官也来自local产品组。接着就问我一些local中如何辨识地址等算法问题,让我讲一个思路,跟着我的思路,再问一些她关心的问题,深入问下去。我也 谈了一些我对local产品的一些改进想法,并提出了我的解决方案。自始至终,她一直在说sounds interesting,我想这大概是我面试中的亮点吧。

面试中,她要我写一个算法,我考虑了半天,总是想找出一个更好的算法,所以只字未写,她就让我说了一下思路,我就把我现有的思路讲了一下。

我觉得和这位面试官谈得很投缘,大概是超时了,就匆匆结束了。原以为就此结束,很放松,没料到还有一轮面试。

10分钟休息中和一位复旦的CS本科生聊了一下各自的感觉,心中总是有一些对于复旦CS的敬仰。

第二轮是一位男士来面试。他开题就是给我一个题目要我写程序,问他可以写伪代码吗,他说不行。看来我是问错了,让他认为我不会写程序呢。。。

用C草草写了一些,还画了一些图,表达我的思路,结果一眼就让他看出其中的一个小错误。虽然整体思路都正确,但还是看出面试官脸上有些不适的表情。

接 着就是问我,要找出一堆无序数组中第x个最大数怎么做,记得是经典题目,但我总是不高兴去看别人的做法,去背一些算法,就自己想了一个,显然不是最佳算 法。他问我时间复杂度以及算法改进方法,我想是要我说出那个经典算法吧,结果时间复杂度说错了,让他问到我无言以对,感觉很尴尬,不过我还是用我不是很熟 练的技巧设法挽救,随便说了一个可能找到更好算法的途径,幸好他没往下问。

第二轮面试我觉得比较失败,我已经尽力用上我知道了、半懂不懂的所有知识,后悔当初没有学好数据结构,也庆幸昨天一晚突击。这轮面试之后,我也就不抱什么希望,期待幸运的眷顾了。

个人觉得,面试同样需要很强的编程能力,能够在很短时间内实现出来,同时,对数据结构和算法的掌握是很关键的。但我不喜欢背那些很巧的算法,用的时候Google一下就知道了。

等待一周以后,收到通知要我寄送成绩单,再一周以后确认offer,前几天终于等到了期盼已久的实习协议。比起面试的高效,后面的筛选似乎有些拖拉。不过还是很期待去Google一探究竟。

最后,提一下法律问题。在面试前签署了保密协议,可是令我不解的是协议是全英文的,在中国境内这样的纯英文协议是否有效?对这些不是很了解,所以心惊胆战地悄悄发这篇文章,也请懂得法律的人士帮忙,如有违法我将删除此文。

3 comments:

newgui said...

强人一个!请问你是哪所大学的?

Anonymous said...

在google实习啊,据说google招人很严的
恭喜~

Anonymous said...

看过你的照片。似乎是上交的师弟。没有想到在这里碰到。似乎以前在微软俱乐部有见过面