代码改变世界

面试内容,值得一看

2013-08-22 17:22  金融与IT的极速狂想曲  阅读(1826)  评论(0编辑  收藏  举报

 原帖地址:http://www.cc98.org/dispbbs.asp?BoardID=248&id=3813130&page=&replyID=3813130&star=1

 

由于最后选择了找工作而不是保研,所以我在这段时间积累了不少找工作的经历,分享出来,希望能对大家以后的招聘有所帮助。:)我写的东西只是基于我个人的经历,想必会有一些不充分和不对的地方,所以大家对感兴趣的公司和招聘的过程最好是到处都了解一下~咱还是不要关注offer多少offer大小这种浮云了,来了解一些实际的东西吧~

我对自己的招聘流程做了一些简短的记录,所以大致一个个公司来介绍。我还记了一下笔试和面试题,希望对大家有帮助。

首先我先说一下简历。我的简历属于非常“简”的简历,除了写了自己的成绩排名获奖情况之外,对于实习和项目经历都非常简略。我觉得简历的作用,一是过简历筛选,二是为面试的时候提供谈资。由于我浙的学生都比较优秀,过筛选一般都没什么问题。所以我的策略就是在简历上,实习和项目尽量写的简略,为自己扯淡留下空间。

8月份的时候就陆陆续续有一些内推的机会,能内推的基本上都争取一下去内推。倒不是说内推的能降低面试难度或者什么的,主要是因为如果选择了内推,那么第一你的简历能提前被HR看到,第二内推的人可以给你提供一些内部的消息,跟进你的招聘流程,有时候这些信息是非常重要的,特别是在做决策的时候。

从8月份开始,到现在为止,我参加了淘宝,EMC,google,works applications,微策略,搜狗,网易有道,百度,盛大,网易游戏,腾讯,豌豆荚,阿里云,雅虎,人民搜索这15家公司的招聘。其中人民搜索直接简历被刷,EMC,google,微策,搜狗,网易游戏,雅虎这几家笔试被刷,腾讯和盛大面试被刷,剩下的公司拿到offer。

 

我参加招聘的第一个公司就是淘宝。淘宝的招聘开始的比较早,那个时候大家手里都没有什么offer,淘宝的名气也比较大,所以淘宝的招聘过程中一直有很多人。。。我走了招聘绿色通道,可以理解为就是内推什么的,所以没有参加笔试。不过据说参加淘宝笔试的人数之多都差点把笔试的考场挤爆了。
所以我就直接进了面试。阿里系的面试有一个特点,那就是喜欢把所有要面试的人都叫到公司来,同时进行大规模的面试,一天之内面完所有面试。所以显得有点混乱,而且对应聘者来说效率很低,因为要花很长的时间等待。

一面:简历上简单问了一些。
算法题一个,两个排序好的数组,找出公共的部分。
数学题一个,问自然对数e和圆周率PI之间的关系。没答上来。
一面时间很短,半个小时之内。

二面:稍微比一面技术了一点。
项目讲了一点。
然后是算法题,两个排序好的数组,大小都为n,找出这两个数组中第n大的数字,有logn的方法,通过比较两个数组中间数的大小。
简单编程题,二分查找。
然后聊人生聊理想。

三面,hr + manager:
问了一下在微软干了什么,我就大致讲了一下cosmos是啥自己干了啥什么的。
聊人生聊理想,然后算法题,给一个有环的链表,找出环的起点。

hr问你最大的缺点是什么,我答我比较喜欢钱。hr问为什么,我扯淡。
hr问你还有什么缺点么,我答我比较冒进。hr问为什么,我扯淡。
hr问你平时喜欢干什么,我说看电影。最喜欢的电影是什么,我说教父,hr问为什么,我说我喜欢老戏骨演的电影。

一天过后拿到offer。Offer相当不给力,不过由于是第一份offer,所以还是先收着了。淘宝这个公司的情况大家都是很清楚的,我就不多说了。

 

然后来说一下网易有道。网易有道我是找人内推了下的,李崇欣 licx@rd.netease.com。这位大哥在我整个有道招聘过程中为我提供了很多帮助,我想在这里谢谢他~

有道的笔试基本上都是直接去他们公司进行的,地点在清华科技园创业大厦笔试。笔试有一些若干基础题和数学题。基础题一般就是咱们上过的那些课,比如数据结构啊,网络啊,操作系统什么的课的一些知识,数学题一般是概率论和排列组合的题。
还有几个算法编程题:
1、字符串全排列。我直接写了一个普通递归。
2、非递归的前序遍历二叉树,先写一个求前序遍历下后一个点的函数,再用这个函数来构建前序遍历函数。
3、给k个三位空间的点(x,y,z),值都为整数,求一个都为整数的点,到给定点的曼哈顿距离最短。(x,y,z),分别求x,y,z数组中的第k/2大的数,用快排。

大概一周之后得知笔试通过了,然后就是面试环节了。
有道的面试时间非常有意思,基本上是一个星期一次面试。我的面试中间还隔了一个十一假期,所以战线非常长。。。

一面:
闲聊:讲了一下数据库。因为我的简历里数据库相关的东西比较多。(miniSQL大家好好做啊,很有用的一个东西,面试时非常重要的谈资)
编程题:对一个链表做约瑟夫问题,注意传入指针和链表无环的情况。
算法题:给一个无环的有向图,一个起点,一个终点,求割点。用拓扑排序求路径,然后找出通过路径数等于起点到终点路径数的点,就是割点。

二面:
聊了简历上写的项目,针对项目提问题
算法题:给16个数字,1~16,每个数字都有一个出现的概率。然后随机选中一个数字,让你猜是选中的是哪个数字。猜的方法是,你可以给定一个数字的集合,对方告诉你选中的数在不在你给的集合里。求最差情况下最好的算法,还有期望最小的算法。
面试官说的做法是哈夫曼编码。
基础知识题:给一个strcut{int16; int32},问网络传输或者写磁盘的时候要注意什么问题。
面试官说要注意大头小头的问题。这两个题我都没答出来。我当时感觉自己二面绝对挂了,不过最后还是通过了。

三面:
没有问任何具体的题目,就是聊项目。我就讲了下在微软干了什么。面试官会针对我提到的一些具体的事情进行提问,有啥说啥。有时候面试官会挑战你叙述中的的一些细节,所以如果不是自己很有把握能说清楚的项目,最好不要往简历上写。会被问到非常尴尬的境地的。

四面:
问了下职业规划什么的,然后问了下项目。20分钟结束了。这个面试就是有道的高层对招进来的人把把关,然后也顺便介绍一下有道的具体情况。

过了几天之后收到offer。有道给的钱是不错的,而且似乎解决户口的希望也还行。有道的情况跟搜狗很相似。这两家公司都是通过母公司输血做搜索的,市场占有率不大,但都有自己的特色,有道有词典,搜狗有输入法。并且还处在上升期,都是不错的选择。

 

然后来说说百度。百度我让我在百度的同学内推了一下。百度的内推同样不能避免笔试。
笔试:
我在百度的笔试是在北大考的。没有选择填空,前面两个基础题,关于vector,两个算法设计,一个是有一个随机函数rand(s,t)要在一个圆中随机选出n个点。另一个是在不知道数目的query中选出m个query,要等概率。这两个题都是比较经典的笔试面试题了。
系统设计题,设计一个系统,要求能过滤掉同一个IP一分钟之内的请求。

过了一段时间之后知道自己笔试通过了。于是有面试。百度的面试都在百度大厦进行。今年百度招的人比较多,所以在百度大厦面试的时候多多少少有些混乱。百度的面试也差不多是一个星期一次面试。

一面:
一开始随便聊了一点简历上的东西,然后直接进入了写程序的阶段。一面写了两个程序,一个是链表去掉与相邻节点相同的节点比如A -> B -> B -> A -> C要变成A -> A -> C,另外一个是比较两个二叉树是否相同。链表的题相当罗嗦,我不太确定我所有的逻辑都写对了。二叉树的题比较简单,我写了个递归的就差不多了。

二面:
二面一开始花了很长的时间找坑,由于来百度面试的人实在太多了,花了10分钟才找到一个空着的坑。囧。问了问简历之后,先写了一个二分查找的题。然后一个智力题,四枚硬币,摆成一个正方形,不知道硬币的正反面,然后我可以指定翻若干个硬币,对手可以随机的转动这个正方形。如果某一时刻,所有硬币朝向相同就算我赢了。问有没有必胜策略。这是我在整个招聘流程中碰到的少数比较有意思的题之一,我一开始没有什么思路,面试官提醒了一下,我后来顺利的做出来了。

三面:
三面是主管面,面我的主管是一个做LBS的,所以就问我在没有任何其他帮助的情况下,如何利用基站确定手机的位置。我YY了一些方法,都是很基础的方法,跟他做了些交流。当然对简历上的东西也聊了一些。

百度今年的面试一共三轮,不久之后就收到了百度的offer。百度的offer是不错的,但由于开给我的是本科生水平的offer,所以不是很突出。

 

 

我经历的另一个阿里系的公司就是阿里云。阿里云现在的定位是阿里系的技术储备,所以做技术的在阿里云还是不错的。我的阿里云招聘没有内推,走的是正常校招的流程。
笔试:12个题,各种题型都有。不难。没什么好讲的。网上应该搜得到,就不再这里说了。
一段时间后收到面试通知,同样的是在一天之内搞定。

一面:
一上来问了我一个几何题。说顺时针给出一个圆上的若干点的坐标,不知道圆心,然后再给你一个点,问这个点在哪两个点之间。我说用二分算角度。
然后一道编程题,直接开了个vi让我在上面写,题目是将一个parent tree转化成一个sibling tree,后来想了个方法,维护一个数组,数组的index是parent,数组的值是这个parent的当前最左node。这是我所有招聘中唯一的直接让我在电脑上写程序的一次,所以还是有些紧张的,不过这次的程序写的不错,好处就是面试官认为我不需要二面了。

二面:
说我不需要二面,直接跳过了。

三面:
主管面,主管是个在微软干了15年,在bing干了2年,跳到阿里云的人。就随便跟我聊了聊在微软干了什么,然后就结束了。偷瞄了一下给我打分的纸,都写了优秀良好什么的。一开始默认我是研究生,似乎打算给我直接开博士的待遇。知道我是本科生之后很惊讶,说会给我开研究生的offer。

四面:
HR面,聊人生聊理想。驾轻就熟,扯淡什么的我最喜欢了。看到我在微软实习,HR就说了下自己对微软的看法。还是比较负面的囧。。。提高自己公司同时贬低其他公司好像是大家都会采用的伎俩。

座谈会:
过了一段时间接到个点电话,说是有个座谈会什么的,听说是给offer的迹象,会介绍一下阿里云的各个部门。但是跟由于百度的面试冲突了,就没去。

过了大概一个月,收到了正式的offer letter,确实给我开了研究生的待遇,20w+的offer,还是相当给力的,而且工作地点在杭州,我觉得很不错。

 

 

来说说豌豆荚。豌豆荚是创新工场下的一个公司,规模不大,但是前景不错。我虽然投了创新工厂,但是似乎没有进入招聘的流程囧。豌豆荚是直接找到我,让我去面试的。

豌豆荚的面试是我整个招聘流程中经历过的难度最大的面试。面试从下午四点钟开始,一共进行了4轮,结束的时候快8点了。这个面试强度太大,以至于我面完之后太累了就没有记录下来面了些什么。我就从网上找了一个豌豆荚的面经给大家看看,里面说到的东西跟我的面试也相当相似。

来源:http://bbs.byr.cn/article/Job/1053920
<面经>
一面:一位很年轻的面试官,应该比我大不了一两岁。上来的题目基本上是C++的精髓问题,主要是考面向对象程序设计,包括字节对齐、虚函数的原理、函数指针,揉在一起考也还是有一定的难度。然后就是,编译器、链接器方面的东西。问了几道算法,有动态规划、有数学题。Linux网络编程,诸如select、poll、epoll等的原理和区别,各种排序算法的比较,stl中的sort是怎么实现的,C++ 11中引入的一些新特性, 各种池(pendingpool, connectpool, resourcepool)。然后开始问项目的事,集中问在百度干了哪些活,用了哪些库,遇到过哪些问题,怎么解决的。然后他开始介绍豌豆荚。 

二面:这位哥们很可能是学通信的,先是一堆计算机知识,linux中的线程的同步原语,linux中的线程实现,C++模板元编程, 在linux中怎么看一个进程打开了哪些句柄(我真心不知道),怎么看一个进程泄露了多少内存(这个问题,我当时没答上,我就说如果用RAII思想的话,根本不会发生内存泄露和其他系统资源的泄露,然后就开始解释RAII)。 同样是几道算法题。其中一道,100亿个url,问另100W个url是否在这100亿个中,不让用分步式计算, 我觉得这个面的有点狠了,不过好在瞧过google黑板报,用布隆过滤器解决之。 后面就开始问我通信方面的知识,问我在通信领域主攻什么方向。我在正式找工作之前,我是最怕别人问我通信相关的东西,因为自己硕士期间做的项目实在是太偏了,与工作关系太远。不过经过上次一个经理面,我发现人家不怎么care做的具体是什么。所以我就从容的跟这位面试官聊起了高性能光探测器原理、设计、测量等方面,没想到的是,这位面试官对这个非常的感兴趣,一度站起来,趴在桌上和我讨论。 

三面:来了一位微胖的帅哥,一看就知道功力深厚。一上来就是各种恶心的算法,好在还招架的住。后来问我数学学的怎么样,我是还行吧,这就上来了一道香喷喷的数学推理题:1条直线可以将一个平面最多切成两个部分,两条直线最多可以切成4份,3条直线最多可以切成7份,那么4条直线最多可以切成多少份,n条直线最多能切成多少部分,给出公式。 端上问题后,给了我三分钟,开始问,有思路否。哥呀,能人道一点不。我实际上是没有什么完善的想法,但不能不接招呀。我就说有,然后开始将问题重复一遍,在重复的过程加速思考,也就是在用笔在纸上重复他的问题的过程中,找到了思路,然后开始写,边写边完善,写的过程不断的做一些伪互动,让面试官感觉到我确实是在互动。最后给出了计算公式(n^2+n)/2+1。他也就笑了,后面又来了一些算法题,就算结束了。 

四面:应该是一位经理,一上来就是一道C问题,坑呀,N多的坑,虽然很小心,但依然掉进去了。 
程序如下: 
void fun(char *p){ 
p = malloc(10); 

问这个程序有哪些问题。 

然后他在那个C程序的基础继续写, 
char * a; 
fun(a); 
printf("%s",a); 
问这个程序会输出什么,又有什么问题,怎么改。 
当他写完,我才意识到前面掉坑里了,好在在后面的程序的指引下,迅速从坑里爬出来了。 
又问了一些算法题。 
后面主要就是谈豌豆荚的事,说刚刚拿到1000万美元的风险投资,然后现在加入会有期权,而且还不少,又问我工资方面的要求。然后介绍公司的前景、盈利模式、规划、企业文化等等。 

五面:公司创始人,清华大学毕业,07年加入google,随后加入创新工场,主要是做产品,名字就不透露了。一开始,跟我聊百度的文化,google的文化,他的理想,公司的宗旨。后面扔出一个比较尖锐的问题,android算不算开源软件,我说不是,顶多算是一个免费软件,围绕这个话题,又聊了很久,聊到了GNU之父Richard stallman, Linux之父Linus Benedict Torvalds。然后又开始问,中国软件业的一些问题,讨论了一段时间盗版软件的问题。移动互联网领域目前的割据状况,大家都在抢占入口。当问到软件的价值时,他认为卖软件是一种很低级的商业模式,软件有着更多的更好的盈利模式,我就开始以各种科学仿真软件为例来反驳他的观点。 我问他对豌豆荚是怎么规划的,他说目前专心做技术,将产品做好,做到极致,暂不考虑盈利。后面说的很多东西,现在记不住了。只是发现已经六点了。就这样,终于结束了今天的面试。 

豌豆荚总结:豌豆荚目前主要有三个产品,一个是智能手机助手,方面手机和PC同步;一个是云存储;一个是android 应用的垂直搜索。目前手机助手的主要竞争对手是91,还有360等,公司工程师大概40人,主要是百度的一些早期工程师(这帮人不缺钱)、google的一些工程师。公司专注技术、心态也放得比较低。 目前就这些了解。
</面经>

创新工厂的offer统一是15w,不过豌豆荚给我开的比这个高,认识我的人应该知道详情,就不在这里说了。

 

 

大家可能比较关注works applications,因为40w+听起来还是很给力的。。。我就来说说wap这个公司的招聘流程吧。不过40w+也还没到我浙优秀学生的水平,所以还是得继续努力啊。。

笔试:
Wap有一个宣讲会,在宣讲会中安排了一个笔试。非常简单的小学初中数学题,无难度,要细心。顺便要合理利用身边的哥们。

编程题:
宣讲会还给了一道编程题,我相信这个题大家都比较熟悉了。
要求三天内写出,程序越快越好,只追求速度,用java。
题目是这样的,要求实现一个栈结构,其操作有push pop max min mid size,默认各个操作出现的概率相等。
我的做法是:min max用两个数组维护,mid用一个大根堆和一个小根堆维护,push和pop操作用一个链表来维护。另外自己写了一个vector,避免内存复制的问题。
那三天时间基本上就是白天上班,晚上写这个程序。结果在提交之前2个小时发现了一个大bug,最后还是惊悚过关了。

面试:
讲了一下自己写的程序,然后要添加一个功能,取前n大的元素。我的程序为了贪快,没有将堆抽象出来,所以面对这个问题相当棘手,最后没有写出来,就被发配过去做实习了。所以大家平时不论写什么代码都要写的优美,指不定什么时候就派上用场了。有大牛在这个面试中表现的相当好,直接当场给发了offer。

参加实习:
这个实习是这个公司招聘流程的一部分,大约10天时间,从11.5到11.14。
实习的内容就是完成的project,根据表现发offer。Project大致是这样的,假设你要为一个拥有很多便利店的公司编写程序,实现提供了一些数据,比如顾客啊,商店啊,购物记录啊等等,然后需要我们自己YY出能做一个什么样的软件。变成的环境是ubuntu+eclipse。
前面几天的主要任务就是写出一个catalog,实际上就是一个design,也就是要写出自己想做的的软件可以提供些什么功能,还有为什么这些功能能吸引用户。
写完catalog之后有个catalog review,就是跟wap的工程师讨论自己的design,review完了之后继续修改catalog。
Design结束之后就要将你的design实现出来,不需要实现每一个功能。由于原始的数据是文本的,我将他们导到mysql里之后再去实现我的功能,写起来相当简单。大部分人没有用数据库,所以他们的代码比较集中在IO处理和几个表的join操作上。
实习结束之后,一部分人收到了final interview的邀请。这个final interview基本上就是一个走过场的东西,收到邀请的同学最后都收到了offer。

这个offer正如大家所知,global pay,500w日元,工作地点在上海。上海的这个R&D是wap国际化的第一步,我们这批人是这个R&D招的第一批,所以总体来说是很不错的机会。

 

下面来说说那些我挂掉的公司。
EMC我是霸笔的,考得东西相当底层,是我经历过的难度最大的笔试之一。于是笔试未通过。

Google是dream offer,笔试选择题+编程题
选择题挺简单的,编程前两道也不难,最后一道没做出来。网上应该能搜得到题。
1,一个环形公路,给出相邻两点的距离(一个数组),让你求任意两点的最短距离,要求空间复杂度不超过O(N)
2,去掉一个字符串中多余的空格,并反转单词,比如 “abc def ghi” -> “cba def ihg”
3,有100,50,20,10,5 ,2,1面值的钞票,给一个N(N<1000000),张数不限,求组合的总数
笔试未通过。当然不是我这种水平的人能通过的><。。

微策略的笔试只有四道题:
1、除去代码c++或java中的注释 
2、将字符串s1插入字符串s2任意位置,判断能否组成回文串 
3、第一问,8*8矩阵,每个格子中有一个不同价值的礼物,从左上角到右下角,只能向下或向右,求能获得最大礼物价值之和。第二问,同样问题,但礼物价值和必须小于一个值K,依然获得最大礼物价值之和。 
4、M[N][N]矩阵,M[i][j]=1表示顶点i和顶点j相连,0表示不相连,M[i][i]=0,求矩阵是否表示的是两个没有公共边和点的首尾相连的图
笔试没有通过,我自己也觉得自己答得不好。

盛大我也是霸笔的,不过选错了考场,笔了个什么广告算法,居然过了。里面好多数据挖掘的题,基本上都是摸的。
一面:谈了一点数据库的东西,然后问了三个算法,一个是海量数据如何排序,另一个关于拓扑排序的,第三个是在一个字符串里找到最长的拥有连续字符的子串,前两个很简单,第三个想了一会没有任何思路。然后写了个反转链表的题。
之后就没消息了,应该就是挂了。

网易游戏,笔试彻底被虐。没啥好说的。看得出来需要极大的代码量才能应付这种笔试。

腾讯,笔试不难,有若干知识点记不得了。另外试卷质量不咋地。
一面:
一上来就是两道编程题,四道算法题。半小时解决。
编程题一道是写memcpy,我就考虑了一下覆盖的问题就完了。另外一道是找第k大的数,快排思想,很快解决。
四道算法题,就有时间看了两个。一个是给一个随机数发生器,让你在35万人中随机选出10万人。我说了流式的算法。另外一个是给出IP范围跟拥有者的对应关系,对应关系里有包含的情况,然后给你一个IP,问这个IP的拥有者是谁。
二面:
就问了一下在微软是干什么的,然后提醒我要留意工作地点的事情。聊人生聊理想,然后就挂了><。。

雅虎,笔试全英文的卷子,考了一些比较基础的题,然后若干编程题。编程题在之前的笔试面试中都遇到过,所以没什么压力。最后有一个如何测试键盘的题,搞笑了一下。笔试未通过。比较莫名其妙,感觉自己这个笔试还是考得不错的,可能是RP原因吧><。。

搜狗的笔试也比较简单,没什么好说的,但是我还是挂了囧。。

找工作基本上找的差不多了,下周去面完微软之后就应该全部结束了。我拿到的这些offer对于一个浙大计算机的学生来说太普通了,我相信如果大家去参加招聘的话,绝对会收到比我更好的offer~
加油~