求职思路(二) 百度面我

转载于:http://www.zhongsisi.com/

求职思路(二) 百度面我

前面写过一篇《求职思路(一) 顺德酱油》,里面充满各种失败和无视的记录,结果被各个学弟学妹大为不齿,认为会给他们增加压力。其实我写下来只是总结不足的地方,以便后面注意。

今天写点好的吧,写写我上周面试百度的经历,给后来人参考参考。

前奏与准备

9月份的时候知道百度要来福建招聘,是在厦门大学。但当时没有抱什么想法,自己只一心想回广东,而百度在北京。可百度工作的包哥和鸭毛却催促让我简历发过去,他们帮我内推,最后还是发了。但好像没有感觉到内推有什么好处。

由于找工作时间刚好与写论文时间冲突,所以基本没有做好找工作的复习工作。国庆前后,把本科学的数据库和操作系统的书都看了一遍,大概复习个概要。 国庆期间,还认真阅读了一本网络基础的书,详细记录下了细节及重点。再接着就是算法与数据结构,主要复习了老王的书,粗略翻了一遍,发现很多常见的东西的 细节都没有弄清楚,或者根本就写不出来。最后是看了一下分布式操作系统,把研究生上数据库课程时讲的那本书的重点都详细地复习了一遍。除了网络和分布式数 据库,其他复习得都非常大概,有的只用了一个晚上或者一天时间。

10月13日,包哥从北京回到福州,给我们师兄弟和ACM队员开了次座谈会,介绍了一些他在百度工作四年的体会。重点提到了三点:团队合作能力、基 础和自学能力。这次座谈会一定程度上增加了我对百度的认识。他还特地强调,笔试面试会更多考察数据结构与算法的内容,因为应届生没有其他什么可以问的。

于是,我觉得有必要好好复习数据库与算法,重新把老王的书拿出来,认真研究了一遍那些KMP,平衡树,红黑树等知识。还复习了算法导论中的B树、并查集等等。

15日下午的动车,来到了厦门。那天晚上在厦大图书馆,整理了一下自己当年做ACM积累的资料,把trie树、RMQ等一些高级数据结构和算法都复 习了一遍,遇到好多以前熟悉现在却忘记了的,比如AC自动机、后缀数组。尤其是后缀数组,增量算法推了了久,直到图书馆关门都没有推出具体细节来。怀着非 常不安的心情,结束了当晚的复习,离开图书馆,回到同学宿舍洗澡睡觉。

笔试

16日早上8点起床,蹭了同学一顿早饭就去参加笔试了。笔试场上遇到好多熟人,都是同学或者学弟。题目发下来,二个小时5道题,题量倒是不大。

第一道是基础题,问的是vector的push_back和clear的内存管理与分配方法。push_back我知道,就是成倍增加或者成倍减 少,但是clear我却不知道,然后就瞎写了一些,想过显然是错的。考试结束后去查看一个STL源码也没有怎么弄懂clear的内存管理方法。

第二道是程序改错题,10分,我却只发现3个错,变成每个错3.33分,可能还存在一个错误。我发现三个错误是:指针常量不能改变指向的地址、宽字 符的字符数组不能用!=’\0′来判断结束、字符数组char a[]的值a[i]可能小于0。目前也没想到第四个错误-_-.

第三道是设计题,函数rand(s,t)能生成[s,t]之间的一个随机实数,需要设计一个算法,生成半径为R的圆内的n个随机分布的点。我是首先 离散地考虑n个点,每次按照圆的限制生成一个点。接着,分析了在rand(s,t)随机效果不佳的情况下,认为需要考虑n个的相关连性,才能保证n个点随 机分布于圆内。

第四道也是设计题,Web系统每天需要接收到不知道数目的访问,现在需要设计一个算法记录所有访问记录中的m条记录,要求每条记录被保存下来的概率 尽量相同。这题我当时觉得可以用数学归纳法去思考,应该存在一个算法,当访问数是n时,每条记录被保存下来的概率都是m/n。可惜当时头脑比较发热,没有 做出来。出来后,稍微听华隆学弟讲说可以设计出算法,他吧嗒吧嗒讲,我也没有认真听清楚。

第五道是设计题,服务器每天接收到很多访问,但限制每个用户24小时内只能访问一次,如果某个用户24小时内访问超过一次,则后面访问均认为是无效 的。先需要设计系统,记录用户的访问及判断用户的访问是否有效。此题重点提示了由于用户数量较大,不能用hash表在一台机器中记录。我是假设每台机器的 网络流量上限,然后假设每个访问的流量,如此得出每台机器所能接受用户访问数的上限,从而确定需要的机器台数。然后,在每台机器上,采用三棵B+树的方式 来存储访问及记录时间,最后大概描述了如何判断访问的合法性。

笔试两个小时,很快结束了,自己都还没有做完。完全没有发挥好,考完后心情很纠结,非常压抑,很担心能不能进入面试。

16日下午,心情很不舒畅,在厦大教室睡个午觉。本来准备面试的内容,但看不下午,就跑去笔霸锐捷网络,结果到考场时考试已经开始50分钟,锐捷HR不让我进去了。于是参观了厦大一些计算机实验室。

晚上,回到上午笔试的南强2楼准备自习,当正准备自习的时候,接到了百度打来的电话,通知明天上午11点带上简历到希尔福酒店面试。当时非常的高兴,有面试机会了。接着柳大师也告诉我收到通知了。

于是,再咬文嚼字般阅读了一遍简历,修改了一些不妥的语句或词汇。还复习了一些昨天晚上没有弄懂的东西,看了一下BM算法的内容。

面试

一面

17日早早地过去了,由于不认识路,还枉费论文那只坐了400米的公交车费。10:15到酒店大堂的时候,程鸿已经到了,他说是早上5点多从福州赶过来的,这可怕。

一面面试官是一个非常帅气的哥们,房间窗户也开得很大,阳光充足。我首先递交我自己的简历,他稍微看了一下。我问要不要来个自我介绍,他说可以。于是我吧嗒吧嗒把准备好的自己介绍内容说了一遍,有点紧张,说得有点停顿和结巴,主要是从学习竞赛、社会实践以及生活上做介绍。

介绍结束后,面试官听到我有提到地理信息系统,于是他画了一个厦门治安岗系统,说求什么最近距离。结果我没有听懂,最后他没有办法,直接说如何求n 个点中的最近两个顶点对。这个题我搞ACM的时候做过,于是先简单几句话讲了朴素的n^2的算法,接着介绍了nlog(n)算法复杂度的分治递归的算法。 这个问题不大,只是面试官要我分析为什么算法复杂度是nlog(n),我模仿老王书上的归并排序复杂度分析的过程分析了一遍,有一些细节没有处理好,但还 是得到面试官的认可。

接着,面试官出了一个多源汇网络流的题目。由于此题也在搞ACM的时候做过,我就说添加超源超汇节点,直接求最大流,并说了一些求最大流的算法。此 时,面试官要我详细描述一下求增广路径的最大流算法,我就啪嗒啪嗒说了一番,然后说可以用最短路作为增光路径。面试官就问我怎么求最短路,我说bfs,于 是他让我写一个bfs程序,一分钟我就写完了,无误。面试官要我分析复杂度,我就说bfs复杂度与图的存储结构有关系,如果是邻接矩阵则O(n^2),如 果是连接表则O(E)。这里我分析错了,面试官听到O(E)就说如果100000个点,10条边?我就说是稀疏图,很快遍历了,O(E)是对连通图的。事 后翻书发现临街链表的复杂度是O(n+E).

最后面试官问了一些操作系统的问题,而且这些题目都没有标准答案,更加考察人的思维能力。比如,计算机为什么是正三角,而不是到三角?如果CPU拥 有1T存储空间的时候,计算机会变成什么样子?如果让你设计这样的CPU,你会考虑哪些因素?等等,都是非常蛋疼的问题。我也凭直觉及经验判断去回答。

这样一个多小时的面试结束了,面试结束时,面试官跟我说回去等二面通知,下午会有人通知我二面。

于是顿觉轻松,觉得机会来了。收拾东西回到厦大已经中午12:30了。

二面

12:50来到厦大芙蓉园,都没有饭出了,煮了个面。13:15正吃着,百度二面面试官就来电话了,让我下午2点到酒店面试。于是浑沦吞枣般吃完了面,匆匆忙忙赶去希尔福酒店。

二面还是从自我介绍开始,我啪嗒啪嗒把自己准备好的内容说了。接着面试官看了一下我的简历,发现上面项目教学网站有一个网址,他很好奇登录上去查看了一下。

接着,面试官让我设计一个博客系统,其中要求是用户有一千万,具有好友关系,以及评论关系。我在纸上写出来数据库表的设计,然后针对大用户量并发访 问的问题提出了读写分离、缓存、分布式数据库、负载均衡等等优化方法。写完后,给面试官讲解。他先问了我如何实现读写分离和负载均衡等等,接着指出我的设 计存在朋友关系存储不安全的问题。在这个不安全问题上,我俩纠结了很久,我也提出了一些相应的解决方法,都被他否定了,最后他总结是“系统设计的问题不能 用恢复机制来解决”。

然后,面试官让我写itoa的中文版本,即比如“一百二十万三千五百二十三”转化成”1203523。写这个程序的时候,我有的太急,结果刚开始的 思路错了,涂了再写。写的过程中,下一个面试的哥们进来问了,面试官就催我,说再给我五分钟时间。不到五分钟,我写完了,大概讲解了一下我的思路和代码。 很乱的代码,但是还是基本实现了需求。

最后,面试官出了一道考察思维能力的题目。题目是:有25匹马,每轮跑5匹,除了能够得出该轮中马匹的先后顺序外不能记录马匹跑的时间,问最多需要几轮跑出前三名。这题目我当时只用了一分钟就想出答案了,7轮。然后给面试官讲解了一下我的思路,得到了面试官的肯定

到此,二面结束,此时时间是15:15,面试官让我16点去另外一个房间面试。于是道了谢,兴奋地走出房间,来到酒店大堂等候。由于知道自己将面临最后一面,觉得离百度的门槛又进一步了,非常激动。

三面

在大堂,跟厦大就业指导中心的漂亮的女学生秘书瞎侃了好久。待到15:50,上去三面。来到房间门口,发现有人在面试。稍微偷看一下,原来是同学柳 大师,这家伙速度居然比我还快。再偷看了一下面试官,发现是一位中年男子,有点boss的感觉,非常淡定。在门口等候大约10分钟后,柳大师面试结束出来 后我就进去。面试的过程还是按照惯例,来个自我介绍,我还是把之前准备的内容吧嗒吧嗒说一遍。

自我介绍结束后,面试官开始问一下HR的问题。先让我说一些个人缺点,我回答了一个。接着他又让再说一个,我又说了一个自己的缺点,说完后他还让我 继续说自己的缺点。这个过程大概持续了五六次,他不断地让我说出自己的缺点,当时感觉压力巨大,还有点点紧张,气氛有点令人窒息。要说出自己的缺点,不能 说不存在的缺点,否则万一被他看穿,将可能面临一连串的攻击性问题,到时自己肯定站不住脚跟;但是又不能说太致命或者影响工作的缺点,因为这会让自己减 分。所以,在高压力的情况下,要一二分钟内说出自己的五六个无关痒痛的却有确实存在的缺点,是非常艰难的事情。当时我觉得如果这样下去,肯定会撑不住。于 是,在说出自己一个缺点的时候,举了一个自己亲身经历的例子,来说明缺点的存在及带来影响。但是,我在举例子后半部分将话题转向跟领导如何相处方面了。

面试官当时也转话题,改成问我“做一件事情,如果你的想法跟你的领导不一样时,你会怎么做?”。这个问题由于之前我在网上看过该如何回答,于是分几 点进行回答“首先是服从领导安排,其次是给领导适当的提示”。接着面试官又问“为什么不坚持我自己的想法去做?”,我就回答说“自己从下往上看,注重细 节,但可能是管中窥豹;领导从上往下看,看着全局发展趋势,而忽略细节”等等。这二个回答都让面试官比较满意,他点点头的同时不停在笔记本电脑上记录着。 后面,面试官又问到“如果你的提醒或者建议领导不听怎么办?”,对于这个问题,我有点束手无策,只能回答说“我想明智的领导应该会认真考虑下属的建议,如 果我的建议他没有听从,应该是从大局上看我的建议有点偏差”等等。

到此,面试官没有再问HR的问题,转问专业技术问题。首先,他让我设计百度地图中的公交换乘路线搜索算法,如何用最快最高效的方法,计算的两个站点 之间的公交车线路。我想了一下,搞了一个启发式搜索算法,并提出启发式因子可以根据不同用户来设置,比如“上班一族可以考虑时间作为启发式因子,学生可以 考虑消费作为启发式因子,老年人可以考虑舒适度作为启发式因子,游客可以考虑沿途风景作为启发式 因子”等等,算法最终是保证代价最小。在我讲解完自己的算法之后,面试官说不错,尤其是从用户群作为出发点考虑问题。接着,他讲解了一个他的做法,是利用 矩阵连乘和传递闭包得算法,可以并行求得多挑个站点直接的换成线路。在面试官讲完他的算法后,他让我比较两者算法的差别,说出各自的优势和劣势。

接着是这次面试的最后一个题目,是一道考察人的思维的题目。题目大意是在一条笔直的公路上有三个公交换乘车站,你会让顾客选择哪个车站进行换乘?针 对这个问题,纯属于开放性思维的题目。我就从时间、经济、舒适度、拥挤程度等等方面进行回答,回答得基本还可以,得到了面试官的肯定。

后面,面试官问我除了百度外还考虑了哪些公司,我就说腾讯、华为、网易等等公司。在这里,我重点说明了腾讯,指明自己是广东人,希望去深圳,而腾讯 在深圳等等。说道这,后面就是面试官从他个人出发阐述了他对百度和腾讯的认识,以及将百度和腾讯进行了比较等等。大有劝我去百度不要去腾讯的意思。

最后,针对百度的一些产品与面试官交谈了很久,我提了关于百度产品的好多问题,面试官都一一做了回答。

三面就这样结束,起身与面试官握手道别。在送别到酒店房门的时候,我问面试官是不是我的所有面试都结束了,他说是。接着他问我学校的三方发了没有,让我回去等消息,大概两三天时间。

后话

16日晚上,签约华为的忽忽请客,与本科几个同学去一起小肥羊。

17日上午,在厦大蹭完早饭回福州。

18日复习信息安全课程。

19日晚,接到offer短信和邮件。说20日15点到厦门希尔福酒店签约。

20日早上6:30起床,洗刷完赶到新校区8:00考的信息安全课程。10:00参加毕业生拍照,10:30联系辅导员到就业中心拿了三方协议。然后打车到火车站,与柳大师一同到厦门签约。15:30签约,正式卖身。

转载于:https://www.cnblogs.com/one--world--one--dream/archive/2011/11/13/2247438.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值