由于内部推荐,所以面试较早,而且很幸运能够顺利通过面试,这里分享一下面试心得。
百度通常有三面,如果中间挂掉一般就没有后面的面试,但是最后的通过却会综合考虑三次的面试表现。如果面试中间隔有两周没有消息,那么一般会在一个月后得到拒信。
一面面试官通常是百度二、三年级工程师,因为面试官都比较年轻,所以面试都是按照一些比较死的流程,一共五个部分:1.介绍所参与的项目。对于一面来说,因为面试官可能只是比自己高两三级的师兄,接触的项目不一定多多少,所以只会以听为主,获取对面试人的一个初步的感觉,不会问太深的问题,除非面试官以前做过类似的项目。所以这部分应该注意谈吐,注意将项目的介绍的比较充实,甚至可以有些夸大,但是要有一定限度,让面试官感觉项目不错,面试者有一定能力。 2.测试写代码,面试官会出一个算法题,要求写代码实现。这些题目都会比较简单,如果你觉得难,那就是把问题想复杂了。因为我也面试过别人,我测试别人写代码主要看两个方面,一个是写代码的速度,二是写代码的质量,这里的质量是指不要有明显的bug。而百度还会看算法设计。此外良好的代码风格会大大加分。 3.C++基础知识问答。因为我是C++的,所以问这方面,其它应该类似。C++其实也就那些东西,一面再问也就在封装、继承、多态里面,问的比较多的就是virtual,偶尔问一些关键词的使用和意义,都是基础,很多书上都会有的东西。4.数据结构设计。通常是给一个类似上亿的数据,怎么排序、怎么搜索、怎么存储的问题,考验数据结构和算法的基础。<算法导论>可以很好的解决这个环节。5.面试者提问。由于面试官就是比自己高几届的师兄而已,各方面级别其实都差不太多,所以我觉得一面这个环节可以聊聊家常,说说过去,谈谈未来,以套近乎为主。
二面面试官可能会是项目经理或者项目技术主管这样在一个项目里面的技术牛人,面试灵活性会稍微大一些,不过面试过程还是可以分为三个部分:1.参与过的项目介绍。二面中的项目介绍需要比一面中的项目介绍要谨慎的多,因为二面的面试官会就项目内容随时问一些问题,而且面试官是做过很多项目的,就算你做的项目他没有接触过,他仍然还可以问出一些很有深度的问题。所以介绍项目时,不能有盲目夸大的部分,而且对自己的要介绍的项目、对自身能力和知识架构要十分了解,在介绍项目时,要将话题有意识地控制在自己最熟悉的部分,偶尔可以勾引面试官问自己最熟悉部分的问题,这样可以博得表现加分的机会。2.就个人知识体系进行基础知识问答。( via: unus.cn )个人的知识架构不一样,我的是C++,数据结构,算法,操作系统,多线程,设计模式,网络编程。会问一些平时可能根本不会注意到的细节问题,就算没听过其实也不要紧,临场思想要够灵活,因为很多问题虽然没听过,其实都比较简单,可以根据所学的基础知识推理得到。当然前提是需要有比较扎实的基础知识,这里的扎实是对有限知识点了解的深度,不是广度。还有就是要很了解自己知识强项和弱项,在自己弱项的知识点上不要说太多,尽量将话题引入自己的知识强项上。3.面试者提问。由于是技术牛人,所以问的问题不能太肤浅,可以问一些百度相关的技术问题,发展问题,要体现出自己对技术、对企业甚至对经济发展的个人想法和眼光。 4.可选环节,智力题,偶尔面试官会问一些逻辑智力题,主要考验反应和思考问题的方法,偶尔看看网上的逻辑智力题,应该可以对这类题目有一些解题思路来。
三面是部门技术主管面试,面试内容主要两个方面,一个是对已知事物的看法,一个是思考问题的方式。面试具体形式是问对某些事情的想法,比如职业规划,比如当前社会,生活或者项目工作中某些问题的看法。其次是问一些技术上的解决方案,但一般都是基于方案,而且通常会要求两个以上的解决方案,不会问太深的技术细节,但是偶尔面试官有兴致问也没有办法。
在面试中,我觉得首先要有足够的知识与能力,这个有点废话了,至少要有比较扎实的基础知识,而且要明确自己知识强项和弱项,这样才能在面试中有较好的控制方向,要不很容易被面试官整的糊里糊涂。其次是要有良好的心态和自信,这方面我的方法一直是在面试前自我催眠,让自己认为每次的面试只是一次同事或者同学的交流和讨论,对于每一个题目都是需要共同解决的一个问题,这样使我每次都能以放松的心情但是很专注的精神来面对面试。最后在面试前要让自己兴奋,让大脑活跃,这个属于个人情商的范畴,每个人应该都有自己个人的方法。
上面我指介绍面试流程为主,并没有将面试的细节题目写出来,主要希望大家能够了解流程,在面试中更好地发挥自己的能力,不要被一些题目给限制思维,此外百度的面试中题目也有一定的重复概率,不希望有泄题而带来的不公平性。
以上写的匆忙,有些地方可能表达欠缺,仅供个人参考,如有雷同纯属巧合。如果有人觉得不好,可以私下提出和交流,希望不要被鄙视。
请在邮件中注明:信息来自有我网(www.unus.cn)