我最想去的无疑是谷歌(Google)——高薪、美食、领先的技术、当今最优秀的公司之一。这也是周围所有热衷技术的理想之地。在那里可以不用为生计而不停编码,干自己喜欢的事还可以拿工资。怎一个爽字了得。不过很不幸,最终他们还是暂时没有合适的职位给我 (其实我不挑的,只要做软件工程师就好了,哈哈)。
谷歌是2007年10月来学校的。水木清华谣传着:凡四月份申请暑假实习但没通过的都没有机会参加这次招聘,因为半年之内算法是不可能提高的。当时很不满 google的这种做法,但也没有办法。事实这只是谣传。最后我还是参加了面试。不过这次并没有采取笔试的方式进行筛选,完全是根据简历。可能由于我参加了IBM暑假实习以及有兼职经验,所以进入了面试环节。
面试官是一个小孩——谷歌的面试人员看起来都很年轻,这次的这个人尤其小,估计本科刚毕业,而且比我还邋遢。首先让我介绍一下自己的项目经验。我觉得自 己的项目经验还不错,有些新鲜的地方,但是这小伙似乎不太关心,我也提过以前跟google面试官说过的一个想法——做一个firefox插件,可以对在 网页上做笔记,如划线、评注等,就像对pdf文档做笔记一样。用户可以将网页连同笔记一同保存到服务器上,并提供delecious一样的排行和检索(不过至今google都没有兴趣搞这个,只是搞了一个很不方便的note)。接下来就是算法题了。对于平时关注算法的人而言,这些问题都不是太难,而且通常都是可以在算法书上找到。第一个问题是“一个数组中求连续和最大的”。这个问题属于动态规划的经典问题,可是我居然都忘记了,开始用划分给出了复杂度为n^2的算法。他又问我还有更好的吗,我努力回忆才想起了复杂度为n的动态规划算法。接下来,就问了一个微软的题目:int i=0; while(x^(x-1)){i++;x>>=1;},这段代码是干什么的。之前我没有见过这个题目,不过用几个数字试了一下x^(x-1),知道这段代码用于计算x的二进制表示中1的个数。我比较得意自己很快想到了这个题目,所以笑了。可能小孩有些不满意我的得意吧。接下来就让我提问。对于google只关心算法我是不满意的,就问在Google算法应用是不是真的随处可见,以及google一般的工作情况是什么。他也就是含糊地回答了一下。就这样一面结束了,同时也是我最后一面。伤心啊,上次申请暑假实习至少有二面机会啊。当然,这个面试官也是我觉得没有上次的好。主要是给我的印象是不干净吧。
顺便提一下2007年4月的暑假实习申请。
首先是笔试,笔试包含一些数据结构和算法、 系统的一些基础知识。然后是一个程序设计题,描述表示多项式的的数据结构,利用该数据结构实现多项式加法和乘法。最后是一个算法题,也是书上找的到的。两个数组,包含同样的数,但是顺序不一致,同一个数组内的数不能进行比较,但是不同数组内的数可以比较。试将两个数组中的数一一对应。如a[]={1,2,3}, b[]={2,1,3}。数组a[0]不能与a[1]、a[2]进行比较,但是可以与b[0]、b[1]、b[2]进行比较。这个题就是快排的一个变形与应用。
接下来是面试,实习面试一共两面。第一面,自我介绍之后,先写了一个简单的函数,将字符串转化为数字。还有几个题目是网上能够搜到的google面试题。其中有一个长度为52的数组,值分别是从1到52,没有重复,任意排序,任意抽掉一个数,如何通过一次遍历判断哪个数被抽掉。再深化一下,如果抽调两个数呢?
二面是个女生,后来我在google照片的网上找到一张照片,好像就有她,北大毕业的硕士。她跟我说在谷歌工作根本就不会觉得有生活压力,即使在北京这种高消费的城市(工资高真好啊)。她先让我实现一个线程安全的单件模式。接着问:“一个正整数数组,给定一个值,如何找到第一个连续和为该值的位置。”另一个问题是,很大一堆数,不过数值都是从1至100,如何排序。
总结,google不是想象中的那么难,并不是要掌握很高深的算法,不过好像比微软稍微深一点。只要认真看一下算法和数据结构相关的书就很有希望了。我一个同学把 清华那本c语言的算法结构书的题目全部做了,就去google实习了。如果能去实习,那么进google就有很大优势了。我知道今年我们学校就有两个实习生进google了,至于没有去实习的都没有机会。
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
谷歌是2007年10月来学校的。水木清华谣传着:凡四月份申请暑假实习但没通过的都没有机会参加这次招聘,因为半年之内算法是不可能提高的。当时很不满 google的这种做法,但也没有办法。事实这只是谣传。最后我还是参加了面试。不过这次并没有采取笔试的方式进行筛选,完全是根据简历。可能由于我参加了IBM暑假实习以及有兼职经验,所以进入了面试环节。
面试官是一个小孩——谷歌的面试人员看起来都很年轻,这次的这个人尤其小,估计本科刚毕业,而且比我还邋遢。首先让我介绍一下自己的项目经验。我觉得自 己的项目经验还不错,有些新鲜的地方,但是这小伙似乎不太关心,我也提过以前跟google面试官说过的一个想法——做一个firefox插件,可以对在 网页上做笔记,如划线、评注等,就像对pdf文档做笔记一样。用户可以将网页连同笔记一同保存到服务器上,并提供delecious一样的排行和检索(不过至今google都没有兴趣搞这个,只是搞了一个很不方便的note)。接下来就是算法题了。对于平时关注算法的人而言,这些问题都不是太难,而且通常都是可以在算法书上找到。第一个问题是“一个数组中求连续和最大的”。这个问题属于动态规划的经典问题,可是我居然都忘记了,开始用划分给出了复杂度为n^2的算法。他又问我还有更好的吗,我努力回忆才想起了复杂度为n的动态规划算法。接下来,就问了一个微软的题目:int i=0; while(x^(x-1)){i++;x>>=1;},这段代码是干什么的。之前我没有见过这个题目,不过用几个数字试了一下x^(x-1),知道这段代码用于计算x的二进制表示中1的个数。我比较得意自己很快想到了这个题目,所以笑了。可能小孩有些不满意我的得意吧。接下来就让我提问。对于google只关心算法我是不满意的,就问在Google算法应用是不是真的随处可见,以及google一般的工作情况是什么。他也就是含糊地回答了一下。就这样一面结束了,同时也是我最后一面。伤心啊,上次申请暑假实习至少有二面机会啊。当然,这个面试官也是我觉得没有上次的好。主要是给我的印象是不干净吧。
顺便提一下2007年4月的暑假实习申请。
首先是笔试,笔试包含一些数据结构和算法、 系统的一些基础知识。然后是一个程序设计题,描述表示多项式的的数据结构,利用该数据结构实现多项式加法和乘法。最后是一个算法题,也是书上找的到的。两个数组,包含同样的数,但是顺序不一致,同一个数组内的数不能进行比较,但是不同数组内的数可以比较。试将两个数组中的数一一对应。如a[]={1,2,3}, b[]={2,1,3}。数组a[0]不能与a[1]、a[2]进行比较,但是可以与b[0]、b[1]、b[2]进行比较。这个题就是快排的一个变形与应用。
接下来是面试,实习面试一共两面。第一面,自我介绍之后,先写了一个简单的函数,将字符串转化为数字。还有几个题目是网上能够搜到的google面试题。其中有一个长度为52的数组,值分别是从1到52,没有重复,任意排序,任意抽掉一个数,如何通过一次遍历判断哪个数被抽掉。再深化一下,如果抽调两个数呢?
二面是个女生,后来我在google照片的网上找到一张照片,好像就有她,北大毕业的硕士。她跟我说在谷歌工作根本就不会觉得有生活压力,即使在北京这种高消费的城市(工资高真好啊)。她先让我实现一个线程安全的单件模式。接着问:“一个正整数数组,给定一个值,如何找到第一个连续和为该值的位置。”另一个问题是,很大一堆数,不过数值都是从1至100,如何排序。
总结,google不是想象中的那么难,并不是要掌握很高深的算法,不过好像比微软稍微深一点。只要认真看一下算法和数据结构相关的书就很有希望了。我一个同学把 清华那本c语言的算法结构书的题目全部做了,就去google实习了。如果能去实习,那么进google就有很大优势了。我知道今年我们学校就有两个实习生进google了,至于没有去实习的都没有机会。
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>