百度校园招聘完整面试经历
2023-06-29
百度是我一直很崇拜的地方,也一直非常期待的地方。可能是源于我对网上诸多面经的理解以及她在宣讲会前后的宣传,我一直以为百度是一个只有非常牛X的人才能去的地方,里边的人都是超级大牛,所以像我这种机械专业的菜鸟学生参加她的宣讲会也就是去参观参观,娱乐娱乐而已。至于到后面为什么一不小心拿到了百度的offer,可能一半是实力一半是运气吧。
宣讲会:
百度的宣讲会来得非常早,也是我参加的第一个宣讲会,所以记忆非常深刻。大活门外的广告打得非常炫,一个很帅的人,不知是不是李彦宏,头上画了两只牛角,大意是个牛人,期望大家加入百度,在牛人的关注下成长。我显然低估了百度在学生中的影响力,提前半小时到宣讲会现场,发现挤爆了,没办法,只好站在走廊里边,后来保安建议同学们都坐地上,于是大家也不管地上脏不脏,不管是GG还是MM都坐下了。由此可见找工作还是很辛苦的,确实,在这以后的日子中大家为了心目中的企业一直在奔波,无论是精神还是体力上都处于一种极限状态。
宣讲会之前半个小时一直在放李彦宏参加那啥咏乐会的节目,百度的老总就是长得帅啊,据说是中国的知名企业的老总中最帅的一个了。果然是才艺皆全,听他的创业经历,看他跳舞,讲述百度名称的来历并吟诗,真是享受啊。百度的宣传片做得也很有气势,百度大厦的漂亮也给我留下了深刻印象。宣讲会正式开始后的内容和其他公司差不多,都是百度公司的介绍,企业文化,内部工作环境,员工发展等等。其中还有一个刚刚入职的华工MM参与了这次宣讲,很PP很活泼的一MM。总之百度的宣讲会持续时间比较长,人数也非常的多,百度给我的感觉非常好,非常遥不可及。
笔试:
原先百度网投的时候,我用网易的邮箱注册,老是收不到激活信息,后来换了个QQ邮箱,注册居然成功了。众所周知,在找工作中用QQ邮箱可能会让企业觉得此人太幼稚,印象不好,所以我非常担心,想重新注册一个账号,但是一个身份证只能注册一个账号,所以只能作罢,非常担心我的简历被刷掉了。后来发现这个担心没有必要,因为百度基本也是海笔的政策,而且笔试通知和笔试过程是交给智联招聘的人来做的,整个过程人比较多,也比较混乱,百度和QQ一样,也支持霸王笔,这点同样要赞。百度招聘系统上的状态和实际状态不一定完全吻合,比如我的简历状态一直处于“处理中”状态,而有的人有“笔试”、“面试通过”或“面试未通过”状态。笔试时间安排在十月十多号,和宣讲时间差不多相隔一个月,这个是百度的策略,先在全国各地宣讲,接下来全国各地笔试和面试,最后全国汇总,通知结果。笔试是晚上进行的,和支付宝一样,也是全部挨着坐,但是试卷一样,百度不担心你抄别人的试卷,因为你抄不了,2个小时,6道大题,试卷头特地说明解决问题是一门权衡的艺术,如果有可能,尽情发挥,在做试卷前,通篇阅读题目,选择最拿手的题目就行了。百度的六道题目大致如下:
1. 关于深度优先、广度优先遍历算法及非递归实现的特点
这道题我索性将深度优先和广度优先便利算法都写出来,然后简单说明了一下其非递归实现的特点,就是需要一个堆栈或队列,辅助空间较大等。
2. 一道程序改错题,可能存在错误,也可能存在安全隐患。
这道题一般对C/C++熟悉的同学都会做,就是一些关于指针的指针传递,也有一些数组越界的问题,不难。
3. 一台计算机有1KB内存和1MHZ的处理器,能在该机上运行且确定性终止的所有程序中,最长的运行时间是多少,要求写出推理过程,可作出任意假设。
我假设该机是但用户单任务操作系统,实地址模式,运行的程序就是在不断不重复地更改内存状态,程序结束的终止状态为内存的某一确切状态,定义为终止态。于是推理过程如下:
1KB的内存共有状态:2^(1024*8) 种
1MHZ的处理器每一秒钟可以更改内存状态的次数为: 10^6 次
因此,如果一个应用程序,从某个状态出发,遍历了所有的中间状态,最终到大终止态后结束,经历的这段时间即为程序运行的最长时间。为:
(2^(1024*8)-1)/10^6 秒
4. 关于编译依赖的问题,大意是一个项目中存在诸多组件,某些组件的编译需要以另外一些组件的编译为前提,问怎样找出一个合理顺序,使得所有组件能够顺利编译。
该题其实是拓补排序问题,详见清华大学出版的严蔚敏编著的《数据结构》一书。我以一个确切的例子,绘出了一些图形和数据结构,然后以文字形式表述了算法。
5. 编程题。要求在一个字符串中找出最长的数字串,如“fafdahruqa12343fa43faf56454354fas”,你需要找出“56454354”即可。
该题很简单,可以直接写出可以运行的代码。
6. 关于URL的系统设计问题,一个URL分为站点和路径两部分,除此之外还需要维护一些定长的属性和不定长的属性,定长属性如URL被发现的时间,不定长属性如URL的描述文字。要求设计一个系统,可以存储和维护100亿条URL及其属性,支持添加,更新和删除URL,能判定一个站点是否在系统中,如果在,需要给出信息,一个站点可能有多个路径,如果给出一个站点,支持给出站点下所有的路径。
该题我采用的哈希散列的方法,以站点为关键字进行散列,设计了一个数据结构表达一个站点、定长属性、非定长属性,设计一个路径链表存储所有的路径。然后对各个要求的功能算法进行了一下简单的说明。
百度笔试的题目较多,体量较大,不要求全部做完,一般说来能写出思路来,并且思路正确就OK了,关键是要想好怎样表达。笔试完毕后,我感觉比较好,觉得应该是可以进入第一次面试的。
技术一面:
在笔试后的第二天,我收到了百度的面试通知,因为我算法方面不是很在行,不过在Windows编程上还行,于是我报的方向是客户端软件开发。面试地点安排在洛迦山国际酒店,百度的面试都是一对一地面试,百度的技术面试据说非常难,会问一些很难的问题,也会叫当场写代码。当时得到面试通知是又喜又担忧,估计自己是凶多吉少。我被安排在四点半面试,而晚上六点是迅雷的二次笔试,当时都想放弃算了,有点觉得自己就是炮灰。后来权衡半天,还是打算去试试,见识一下也好啊。我提前了一个小时来到珞珈山酒店,在二楼,绝大多数房间都是开着的,面试官和面试者一对一,有的房间在谈话,大概说的是项目,或者面试官问,面试者答;有的房间面试官在干其他事,面试者趴在桌子上,应该是在写程序。也有几个面试者等在各自的房间外,费劲地听着里边的谈话内容,我利用先到的时间,迅速和其中几个在我之前的面试者聊了聊,大概了解了面试的内容和形式,过了一会儿,那些先到的面试者都进入各自的房间面试去了,走廊就只剩下了我一个人,这是脑袋里边什么东西都想不了,索性我就不想了,反正我觉得自己就是来玩的,于是我一个人就在二楼所有的面试房间外晃来晃去,看里边面试的情况。四点半的时候终于轮到我了。
面试我的是一个非常好的技术面试官,据介绍是百度客户端业务部的主管,刚开始做了个自我介绍,然后就开始问一些项目的问题,围绕项目问了很多很细的问题,包括Windows内核的一些东西,如多线程,进程通信,WM_COPYDATA原理,内存映射文件等。我都一一予以作答,看上去他比较满意。后来最终还是逃不过写程序,他出了一道程序题让我写,题目比较简单,我立即下笔,三分钟后我写出来了并且注上了完整的注释,自认为写得很规则。面试官看了一下,没有找出任何错误,饶有兴趣地问了一个关于编程习惯的问题,他问我为什么喜欢把判断一个字符指针是否终结的语句写成if(0x00==*pStr),而不是if(0==*pStr),我说0看上去太单薄了,和数字0差不多,’’写起来太麻烦,0x00写起来感觉好,和字符在内存的存储也符合。技术上边的面试大致就是这些,远没有腾讯那么难,面试官也么有过于难为我,估计是因为我是机械专业的学生,非计算机科班专业的缘故。
估计过了一个多小时,谈完技术,面试官说,你今天是最后一个,我们不妨多聊一会儿,你有什么问题吗。我就问了,百度客户端产品发展的一些情况,应届毕业生进入百度工作欠缺的一些东西。后来我又简单地介绍了一下自己的情况,他后来问了一个问题,他说,百度的薪水相对其他企业来说是比较高的薪水了,根据你的具体情况,你对薪水有什么要求吗,我问他,百度的薪酬体系是麽样的呢,他说,有几级工资,刚进去是,被分配到一个等级上,以后每年有机会进行重新评定,我想了想说,如果单就薪水而言,那我给我自己定的目标是最高的两个等级上,我期望凭自己的能力能够拿到这个薪水,我相信我能办到,另一方面,就我自身的情况,我及我的家庭现在都缺钱,但是我是农村小孩,我很容易知足,可能某些人开着小车,住着别墅还嫌不满足,可是对于我及我的家庭而言,我们只要有一粒米吃,我们就会高兴半天,总之,我们的基本需求很小,但是他并不妨碍我追求高的薪水。回答中我成功地避开了面试官的问题,面试官听到我的回答还连声说好,^_^。我大概面了1个小时40分钟,才面完。整个过程相当完美,所有技术问题都完美地回答了,所有聊天都很愉快。走的时候,面试官非常的好,送了我一件百度hi的衣服,另外还送了我一堆娃娃,说是送给我女朋友,握手道别的时候,他说,希望能在百度大厦见到我。至此我的百度一面顺利度过。由于多面了40分钟,所以我也错过了迅雷的二笔,迅雷求职止于此。
产品二面:
技术一面的过程非常完美,所以我觉得自己肯定可以进入二面,回来和求职群里的同学讨论时才知道,很多同学,比如运维部的,一次性的就面了两面,所以心里不免犯嘀咕,怎么回事。到了第二天,又有运维部的同学接到第三次面试通知,陆陆续续去面了,而我仍然处于等待状态。到了第三天晚上,我实在受不了了,就打了个电话到珞珈山酒店,转到面试的房间,那面试官一听我的声音就认出了我,他告诉我说各个部门不同,客户端的同学可能在武汉只有一面,也有可能有两面,但是到目前为止,第一面还没有面完,叫我耐心等待通知。此时我才意识到,原来百度还是叫了很多人去面试的,因为百度的每次面试都是一个小时,所以时间拖得很长也在情理中。第三天的时候,我终于接到HRMM的电话,说让我去参加第二次面试。在第一面的时候我有向面试官打听二面的内容,他告诉我是考察系统知识,比如让我设计百度hi,应该从哪些方面来考虑,所以我这几天也从网上了解了一下百度的客户端产品,并且主要从技术方面去猜想他是怎么实现的,其实在二面中,才知道只有一丁点用。二面其实面的不是技术,而是对产品的领悟。
我被安排在上午十点钟面试,面试地点为A房间,九点十分的是后到达珞珈山酒店,碰到一个武大的女生和男生,一问才知道,刚好他们是一面面的A房间,二面的面试房间刚好是我一面的房间。于是我们相互交流了一下,我才知道二面的内容几乎全部都是产品方面的问题,没有技术问题。A房间的门关着,十点的时候,我按了一下门铃,没有人应,我猜想可能是里边还有人在面试,所以我继续等待,等到十点十分的时候,那武大男生提醒我说还是直接敲门算了,因为耽搁的时间是我自己的面试时间,幸好有他的提醒,我直接敲门,开门后面试官问我,你迟到了?我说不是的,我九点十分就到了,在门外等着,十点钟按门铃没有反应,我以为您在面试其他人,所以又等了十分钟。坐下之后,面试正式开始。(面试问题网 www.mianshiwenti.com)
刚开始就问我用过哪些网络产品,我当时脑袋发卡,只说出几种,QQ,飞信,网络游戏,后来在他的引导之下,才又说出迅雷,BT,Foxmail等来,这一点表现不是很好。后来他又问我对百度的客户端产品是否了解,我就说了百度hi,他接着问我对百度hi有什么看法,我就坦然地说了,我只是在研一的时候用过一次,后来就从来没有用过了,我说百度的产品只有搜索大家都在用,其他的东西大家都不知道,我今天还和一个同学在谈论百度,我那同学说百度怎么就只有一个网页也这么牛,由此可见,百度的其他产品做得确实还很不够,据我所知,你们期望以百度hi作为一个平台,来整合你们的产品,就像QQ客户端整合了多数QQ的业务一样,但是我个人觉得这样效果非常不好,因为百度hi的定位是即时通讯,而QQ在中国即时通讯领域在现在看来有不可逾越的霸主地位,当百度hi出来的时候,我就会考虑一下,我用百度hi有什么好处吗,没有,因为其他人都不用,我和谁联系呢。其实换个角度来说,百度不应该以即时通讯客户端作为切入点,而应该以自己的特色,搜索作为切入点,据我所知,百度的搜索仅仅以IE形式呈现,虽然用户可以自己设定一些搜索喜好,但是那是基于cookie的,但是我本人不喜欢用cookie,我认为那侵犯了我的隐私,所以我根本不能设定我的搜索喜好,我认为这是一个遗憾。百度是否可以开发一个搜索客户端,为每个用户提供注册,保存用户的搜索设定,同时在此基础上整合其他的产品,如百度hi,搜霸,百度硬盘等,这样以一个全新的搜索客户端概念推出的产品,相信要比以即时通讯概念推出的产品要受欢迎得多。他接着问我,对哪些网络产品觉得不满意,有需要改进的地方,我说网页迅雷界面反应速度太慢,有时候还出现网页打不开的bug,腾讯QQ不但不自己开发登录器,反而将QQ的入口参数取消了导致当前流行的QQ登录器无法工作,我又向他阐述了自己有需求,在一个机器上登录多个QQ,自己也曾经开发过两个版本的QQ登录器,这些登录器在2008版以前还能正常运行,但是2009版QQ取消入口参数后,我的登录器也无法工作了,腾讯的这种做法让我觉得很不方便。他接着问,你觉得腾讯基于什么考虑会禁止用户在一个机子上登录多个QQ呢。我说可能是服务器负载不够?他说不可能。我说那可能是为了防止QQ账号被非法利用,比如有的用户可能在一个机器上的登录多个QQ来发送广告信息。他接着问,你认为如何阻止用户的这种行为。我其实对这个没有经验,只好随便说说,从发消息的频次,内容重复度,提示,举报等角度来解决这个问题,后来他又叫我说的详细一点,设计一个方案来解决这个问题。我就稀里哗啦说了一大通。第二面的过程中,我明显感觉到这个面试官比第一面面试官要厉害得多,因为我多次尝试将他引向我熟悉的技术领域,但是他似乎没有理睬我,仍然按照自己的问题在问,问的全是产品方面的问题。有时候会根据我的回答,进一步从里边抓出一两个点接着问下去。面了大概四十分钟,面试官说差不多了,问我有什么问题。我就问了他为什么叫我们做技术的叫来面产品啊,他说是因为在公司工作的时候,由于做技术的和做产品的再交流方面存在一些困难,感觉很吃力,因此才设计了这个面试环节,主要是看看做技术的的面试者对产品的领悟能力,也算作是比较重要的考察之一。二面面试的时间刚好五十分钟,加上被我浪费的十分钟,一个小时。真是非常感谢武大那个同学,要不是他提醒,说不定面的时间会更短,所以,也提醒以后的同学,如果你的面试时间到了,你不能确定面试官是否在面试其他人的时候,你可以敲门试试,不然耽搁的时间是自己的损失。
电话终面:
百度十七号上午二面完毕,下午就接着面华为去了,这中间经历了很多笔和面,先后拿到华为offer,支付宝offer,ASMPT offer,腾讯offer,中电29所offer,成都飞机设计研究所offer,在做其他事情的同时,其实一直都很惦记着百度的信息。二十三号的时候我收到一封莫名其妙的信件,说是将对我的面试进行综合评定,一个月内给消息。有若同学分析说可能是一封委婉的拒信了,意思就是我别盯着百度了,适当的时候可以找找其他的。其实后来我才得知,有些部门的同学在23号就收到offer了,而我报的客户端有同学在23号收到了拒信。我收到叫我等待的邮件,应该还是有戏的,所以我就一直等啊等,等到二十九号,陆续有同学有消息了,比如收到offer或被叫去北京面试了。三十一号,在我刚拒了腾讯签约时,百度的消息终于姗姗来迟了,晚上六点接到电话,说客户端把我的简历传递到质量管理部了,觉得我更适合做质量管理部的测试工具软件开发,问我有没有兴趣,我说可以啊,反正我的项目还和软件测试自动化有关,然后我们约定第二天早上九点半电话面试。
第二天早上九点半,非常准时的电话响了。按预定计划进行,首先就是问了关于项目的问题,问得非常详细,然后问了一下我的知识架构,特地问了一下我做助研的事情,因为我助研的时候负责了《软件工程与质量体系》的课程教学管理,他问了我一些关于软件工程的基本知识,以及CMM五个等级的相关知识,问我关于课程有哪些内容,以及我对软件质量管理的基本理解。因为这个课是由我导师上的,所以感触颇深,我觉得做软件质量管理,做的是一种境界,一种思想,我就如实的向他讲述了自己的一些理解和感触,自我感觉非常不错。最后,我问了一下为什么把我的简历传递到质量管理部,也问了一下质量管理部的工作情况,HR一一做了回答,我打听了一下接下来的流程情况,HR说,接下来会有人力资源的一个讨论会,会做出最后结论,如果被录取,在几天之内就会有消息,如果不被录取,那么会在两周内收到拒信,因为被录取的人是很少的,所以结果快一些,被拒绝的人是很多的,所以会晚一些。
迟到的百度offer
2号晚上快十点左右,我的QQ邮箱冒出提示,标题为“百度校园招聘录用通知书”,我知道我从九月二十四号持续一个多月的百度求职路程画上句号了。虽然被调配了职位,但是幸运的时候仍然是软件研发岗位,不至于太离谱吧。