百度一面2013年10月11日下午5:00 天津晋滨国际大酒店
有幸通过了对我来说很有挑战性的百度笔试,迎接来了度娘的一面,约的下午5:00,4:50我来到了一面面试官所在房间的门口(1220),门大开着,里面有个哥们正在面试,就没打扰,在门口老实等着,等到5:30他们才结束,就轮到我了。一面比较顺利,没有自我介绍,上来就是一道算法题:一个vector<int> a,现在给定一个整数x,要把a中所有等于x的数删除,时间复杂度O(n)。上来我给了一个思路,用两个指针pBeg, pEnd同时从头开始对a进行处理,其中pBeg指向已处理完的最后一个元素,pEnd指向当前处理的元素。思路OK,可以解决问题,但面试官又提出我这种算法在针对x在a中出现很少的时候,数据交换的次数有些多,有很多的交换不必要,换句话说,现在要求发生数据交换的次数仅与x在a中出现的次数相关,而与a的大小无关;想了想,换了个思路,还是两个指针pBeg, pEnd,只不过是一个从头开始,一个从尾部开始对a进行处理,其中pBeg指向当前第一个等于x的的位置,而pEnd指向当前最后一个不等于x的位置,交换两个指针指向的值,然后两个指针向中间查找,相遇时结束。说完思路,简单写写代码,OK,第一个题过关;紧接着,第二个,也是比较常规的,就是两个有序的单链表,将其合并成一个链表,仍然保持有序性,这个写得很快,他好像很着急,正在检查边界问题,他就急着要看,说主要看思路,看完点了头,算过关了吧;第三题,也很常规,就是对一个单向链表,进行反转,写得很快,但边界情况处理有点小问题,后来面试官指出后我立马改过来了,my god!OK,算法问完了,就开始聊别的了,聊聊项目,操作系统中的进程通信啊、C++中的多态啊、指针与引用的区别等等。总之问的都是些零散的知识点,没有太深入的问题,自己答的还是不错的,一直面到约6:30才结束,然后面试官很友好地开门送我出去,并随我一起进了电梯下到酒店一层(估计他也是准备吃晚饭了),中途他跟我说,我应该表现得再自信一点,其实技术面表现得还是不错的,哎,汗颜呐。
百度二面2013年10月13日上午11:00 天津晋滨国际大酒店
经过两天的等待,12日晚上,百度的HR给我来了电话,通知13日上午11:00二面,当时已经收到了华为的offer,展讯的也给了口头的offer,而且更坑的是华为的13号就必须签了,否则就无效了……我想了,华为的还是先签了吧,尽管要违华为的可能手续比较难办(据说虽然不要违约金,但三方得到来年4、5月份才退回来)所以我跟百度的HR说,我说上午我可能有点事,能不能往后调整半小时,他说可以,OK,但愿签三方的时间不会太长,事实证明我这是瞎操心,手续只要齐了,真快!一下子就把自己卖出去了!那时还不到10点,我就慢悠悠地从天宇大酒店(忘了说,这是华为面试在的酒店)走到了晋滨国际大酒店,进去以后我就在一层大厅的沙发上座下了,拿出包里的搜索引擎这本书翻了翻,边看边等。在这又碰到了之前去微软面实习生时认识的一位博士校友(跟我同时进天大的,应该是硕博连读,自动化学院校友),在楼下聊了聊,他是10点的,跟我说了一个算法题,说是这个题好像问得比较多,就是类似于在百度搜索栏中输入过程中会动态地在下拉表中提示比较热门的搜索串,这个是怎么实现的?唔……还没问清怎么搞,他就急匆匆地上去了,好吧,自已上网搜了搜,也没搜到啥,自己想了想大概有个想法就行,看命了。10:40,上了趟厕所,就坐电梯直奔817了(HR的房间),去了一按门铃,我说我是来面试的,他立马就说,你是***吧?我说是。然后就查了下,然后立马让我去718。立马下去直奔面试房间,进去就开始了,不过这一轮一开始有自我介绍,然后对着简历聊了些,接着就一个海量数据题:200亿个64位的整数,要求其中top 10%大的整数,可用资源1000台内存为8G的机器,说了一个思路,后来想了些,哎,这么明显的MapReduce问题,自己竟然没想到用mapreduce,好吧,这个勉强过了。接下来,是一个网络题:用C/S模型实现C到C的聊天,好吧,这个我答得不好,最后他提示了一句,在C端用一个心跳(以一个周期,向服务器发送一个空消息,通过这种方式来接收S的消息队列中的消息)……
百度三面 2013年10月15日下午6:00 天津晋滨国际大酒店
哎,一不小心,竟然走到了三面,好吧,淡定地走完吧,能得度娘垂青,得之我幸,失之我命。三面是在712,三面的面试官很nice,一进门主动与我握手,进来后先让自我介绍了一下,然后聊了会天,说我导师是谁(头一回有面试官问我导师是谁的……),然后问我为什么投百度,当然了,我就从百度的技术跟文化这两方面讲了些自己的想法。然后言归正传,开始考察coding的能力,给一长串英文句子,中间包英文单词、标点和空格,现在想对每个单词进行操作,让每个单词首尾翻转一下(包括标点符号)如I love baidu.处理以后变成I evol .duiab,好吧,这个思路应该是很清晰的,只是在coding的过程中注意些细节就可以了,大约10分钟,写好了,给他看了看,然后问了STL中的容器有哪些?map容器是怎么实现的?红黑树与AVL树有什么区别?(这个竟然没有想起来,我都把红黑树描述了一遍都没有想到它与AVL树的区别,汗!)解释下Spring MVC以及MVC这种框架的好处?操作系统中常见的进程通信方式?数据库中索引为什么要用B+树?等等,整个过程回答得一般吧。最后问我还投了哪些公司?拿到了哪些Offer?然后我有点太诚实了,当时已经签了某某公司了,老实交待了,但表示依然很想去百度,希望不要把这点作为一个减分项,他嘴上说不care,但我想多少还是有些care的,至少表明想去百度的决心、信心不够强烈。最后问我还有没有什么问题,我就问了他我距离百度还有多远?希望他能给我技术发展提一点建议,他建议我至少去学好一门脚本语言,尤其是PHP或Python,然后去深入学习一下Mysql,了解下其它一些NoSql,如MongoDB等。学会去分析下一般的网站是怎么实现登录的?还有其它一些功能是怎么实现的?等等,恩,非常感谢!最后他反倒说:“应该谢谢你投递百度”,然后主要跟我握手道别,好吧,这一别,没想到在未来的三天时间等待里成为了永别……
2013年10月18日,应该是百度研发类Offer发放的最后一天,跟我一起参加三面的哥们在18日上午10点收到了电话Offer,很感谢他第一时间告诉了我,在接下来的一个小时时间里,才发现等待是件多么难熬的事,11:00了,依然没有消息,12点也,还是没有消息……这次百度校招,此刻跟我Say Bye Bye了。
总结下吧:一方面,从技术准备上来讲,自己准备得可能不足,尤其是关于Linux中进程操作的一些指令(如ps, jobs, awk)了解不够深入,以及数据库主从机的同步啊等。
另一方面,自己处事不够圆滑,太诚实了,真心不会说半个字的假话……心里怎么想的就怎么说的,再加上我技术水平不高,这个可能就成为软肋了。恩,不能太滑,但在适当的时候要学会迂回战术。
写在最后:最近不打算再找工作了,想给自己放放假了,祝大家都能拿到自己满意的Offer
#------------更新--------------------
没想到在2013年12月6日,接到了百度软件研究院HR的电话,她们现在在补录阶段,答应给我offer了,但希望我能在年底把之前签别家公司的违约手续办好……
哎,真心是命呐,我签的那家年底是绝对不可能退回三方的……跟百度HR商量也没有办法了。真是失之我命!
#-------------------------------------更新:有时候命运真的会给你开个玩笑----------------------------
今天 是2014年9月18日(竟然是九一八纪念日),今天,所在公司开员工大会,结果是,我们的部门要并入百度了,马上就要搬进百度大厦了。