从2011年5月7号到我的终面(三面)结束6月7号整整一个月,笔者对这次应聘多了一个总结,一来是对自己这段时间努力的一个交代,二来给其他想进入百度的人share一点经验,顺便攒攒人品,呵呵。
2011.5.7百度暑期实习笔试题(核心研发方向【BJ】)笔试:
一、简答(30分)
1、extern “C”{}是什么含义?用来解决什么问题。(10分)
2、至少说出两种经典设计模式,并举例说明使用场景,有伪代码更加.(10分)
3、TCP连接的time_wait是什么状态,描述其发生的场景,说明它存在的好处坏处。(10分)
二、算法与程序设计(40分)
1.有一个任务执行器,每天需要定时执行很多任务(任务数N<1000),任务执行器每次只能
执行一个任务而任务之间存在依赖关系,如A任务需要依赖于B任务完成后才能进行,虽然各
个任务之间依赖关系复杂但是各个任务之间却没有循环依赖的问题。给出一个合适的任务执行
顺序。请详细描述你的算法思路(如需要,可给出伪代码来辅助描述),并分析其时间和空间
复杂度。(20分)
2.编写函数:
统计在某段英文文本完整句子的数目,文本只包括大小写英文字母、空格、点(.)、逗号(,)。
完整句子必须包含至少一个字母并以点结束。要求:请给出完整代码,在达到目标
的情况下尽量高效,简介。(20分)
三、系统设计题(30分)
某流量监控系统每天生成大量的数据记录,每条记录 包括url,访问IP,时间,这些数据记录需
要进行存储和维护,并提供查询。请设计一个系统能够存储和维护1000亿条数据,实现实时
监控,并能支持一下两种查询:
1.指定任意一个时间段(精确到分钟)和某个ip,查出该时段内该ip的总访问量。
2.指定任意一个时间段(精确到分钟)和某个url,查出该时段内对该url的总访问量。
答完笔试后,以为自己基本可以GG了,第一题三道题,只有第一道和第三道写了一点,而且回来找了下答案基本不对,呵呵,不过我还是硬着头皮写了一些,空着不好看啊。第二大道题两个题倒是都做了,但是EE出身的我算法实在不行啊,第二大题的第一题当时我记得好像用了树的解法,可是回去看看书,那就是一个图论中的拓扑排序,唉,看判卷的心情了。第2小题写代码的题算是自己觉得写得比较好的一个了。第三题,说实话,我也不太会,但是总不能空着吧,凡是跟存储和查找相关的知识,自己知道的,就写了一些,呵呵最后看看卷面还挺满的。。。其实没几道对的应该,不过已经尽力了。
之后一开始还是不死心啊,幻想着能够有一个面试机会,让俺也见识一下百度面试时什么样的啊。可是等了半个月依旧没消息,虽然百度的面试也没进行完,但是感觉自己基本没戏了,可是就在第二周的周五下午,突然一个百度的MM打来了电话,告诉我笔试通过,下周三面试。开心啊当时,不管怎么样,也算是尽了面试。
到了周三,我来到图书馆等待,好事多磨,面试官临时有事情,原定于2:00的面试该到了3:00,急死人啊,好不容易过了这一小时,终于开始面试了:面试官还是很Nice的:
1.自我介绍
2.实习经历,主要问了爱立信的实习经历,实验室项目中主要问了WSN数据采集
3.问排序算法,插入排序和快速,快速排序又问了第一个值的选取问题。
4.给你N个数(N很大),让较快的找出其中最小的k个数,我说用堆,之后再大根堆和小根堆上犯了点错误。
5.两个链表,Y型,头部分开,尾部重合,让找出第一个分叉的元素。
以上全涉及算法复杂度的计算,需要补知识啊!回来后不断地期盼着邮件,电话和网申网站状态的变化,百度的速度还不错,第二天下午15:08,一个MM打电话说和我约一下二面时间,心里高兴啊,努力,期待二面的成功。
终于到了6.1儿童节,中午吃完午饭来到了老地方图书馆,准备下午两点的百度二面。到了图书馆小睡了一会,大概1:50多吧,心里开始紧张和亢奋了,突然手机响了,百度的面试官提前了7分钟,1:53.没想到这次不同于一面,开门见山,没有项目介绍,没有自我介绍,总之一句话,废话一句没有,让我去拿纸和笔,开始做题。紧张啊,第一题就让我闷了:
1.一个循环递增数组,数组很大,给你一个数x,让你以O(logn)时间复杂度实现查找算法。。
2.给我N(N很大,百万、千万量级的)个字符串,每个字符串10-1000个字节,
让我“去重”,也就是找到所有不同的字符串
3.是个找朋友的问题,给你很多对朋友关系,朋友关系有传递性,比如A和B事朋友,B和C是朋友,那么A和C也是朋友。然后任意给你一对人名,让你确定他们是否是朋友关系。
终于盼来了三面的机会,6月7日早上10:30是我三面的时间,可是足足等了13分钟,还没有来电话,有点着急了,给北京的HR打了电话确认一下,10:56分,终于来了电话,面试官很客气,先对自己耽误了时间做了道歉和解释,呵呵,我赶忙说没关系。然后就开始了,上来他就说,今天三面也是最后一面了,我们主要谈谈项目和你毕业之后工作,实习的畅想之类的,没有技术性问题。我的心理说不出高兴还是不高兴,高兴是人生面没有技术题,不会太难,不高兴的是这种人生面就怕自己那句话没说好,要是人生面被刷了,好像有点委屈。管他呢,先面再说,他第一个问题是你做的项目,他看了我在简历上的实习经历,问了问实习和实验室的项目,我实习和实验室都是做通信的,和他谈了会,因为他不是搞通信的,也不是很了解,说了一会,问我给你一个新的技术,你需要大概多少时间入手。之后便是真正的人生面了,你毕业后的打算啊,对未来工作与学校学习的不同啊,怎么应对挑战,适应新环境之类的,考察人的性格,说话做事风格,心理吧。然后他问我有啥问题没,我问了三个,第一个就是对于我这种要毕业的人,实习的连续性,工作内容和留在百度得到工作OFFER的可能性,第二个,问了问什么时间能够发OFFER,因为毕竟百度的实习笔试面试太长了,从5月7号笔试到今天6月7号终面正好一个月。最后一个问题就是对我报的职位,核心研发工程师的工作内容的询问,他人很好, 尽可能的答复了我。他说这次招聘不是每个部门面试每个部门的,都是打乱的,所以工作内容他不好说,实习留下的问题他没有直接回答,主要说了百度暑期实习的性质在于考察新人,工作内容有可能与实际工作的关联不大。最后说了他会尽快敦促HR通知我面试的最终结果。
大概就这么多了,至此,本人走完了2011百度暑期实习核心研发工程师(BJ)职位的全部官方流程,一个月的笔试面试,学习,总结,面试交流,让我学到了很多东西,作为EE出身的我,自己在一个月内学了很多数据结构和算法的东西,对自己的表现算是满意了,最后希望这一个月的努力会换来一个good news。就这样了。。。