【总结】新年到了,发个百度与EMC详细面试经历,为后人铺路

   来准备在去年年末写完的总结,但是因为太懒,拖到了今天。想写一点东西的想法始于对这段找工作经历的感慨,回想在这几个月找工作的过程中,我也经常上清华的水木,交大的饮水思源,但是没有一个论坛像咱们北邮人这样充满活力,大家互相加油鼓劲,互通有无,我想,这种精神是我们北邮人特有的,特别是在今年这样找工作的寒冬中,这样的温暖更能带给我们巨大的动力。我想这是我们北邮人的精神,我们也应该让这种精神继承和发扬下去。把我的经历与大家分享,没有任何别的意思,只是希望能对后来人有点帮助。

    几个月的求职过程中,百度和EMC是我准备得最久,花费最多精力的两家公司,最后是拿到了EMC北京的offer,但是在准备两家公司的过程中,我深切的感受到了自己的进步,我想找工作正是这样一个自我认识和发现的过程。我把这几个月来,对于这两家公司,我的一些面试经验和总结写出来,也相信会对后来的学弟学妹们有点帮助。我是做linux的,也希望这篇文章对linuxer有帮助,也对那些还在技术与非技术之间犹豫或者在linux的大门前徘徊的同学们多说一句,linux崇尚的是自由与开放的精神,我们应该坚持这种精神,并相信它也能带给我们丰厚的回报。好了废话不多说,直接进入正题。

*************************************************************************************************
                                                    百度篇
*************************************************************************************************
   百度是个好公司,好公司自然有很多人想进,在这里把我的一些面试经历写出来吧,我将尽量写得详细些,希望对后来人有帮助。我应聘的是百度系统部,主要做的是linux内核优化,协议栈,分布式服务器相关的工作。

    首先需要说的是,百度每年8,9月份时,会有一个内部员工的内推机会,这个时候论坛上会有师兄师姐发贴说可以帮助内推,对于一个真正希望进入百度的同学来说,这个是最好的机会,因为百度笔试每年都搞得声势很大,而从我身边来看,基本很少有经过百度笔试进入面试这一环节的,而内推时师兄师姐会认真的看你的简历,这本身就是对你的简历的第一遍审查,所以想进百度的学弟学妹们应该把握住这个机会。

    我就是找论坛上的一个师姐内推的,后面也会提到,师姐的人真的很好,不但帮忙内推,还打电话提醒我注册的注意事项等等,对于师姐,我也心存感激。9月份内推后,是漫长的等待,这个时候百度各个部门开始面试,各个部门的进度不一样,11月初我接到第一面的时候,很多别的部门已经开始发offer。

    第一面是一个比看上去我年纪大一两岁的师兄,果然就像传说中的那样,穿个拖鞋就过来了。见面后先说了下面试的流程,主要分三块,我先说说项目,他问项目相关的东西,然后就我感兴趣的东西聊聊,最后我问他问题。我说好。

    开始说项目,balabala说了一堆,师兄不时打断,对细节发问,你觉得项目的技术难点啊什么的,主要考察你对项目的把握,如果真的是你自己做的,这个应该很好应付。接着师兄对项目问一些扩展性的问题,比如我的项目中有屏蔽平台硬件差异性的问题,我们提出了两个方案,他会问,除了这个还有什么比较好的方案没有啊类似的,考察发散性思维。项目大概说了二十分钟,说完,师兄问我对什么东西感兴趣,我们就聊什么。我心想果然牛,什么都懂,就说我对linux内核比较感兴趣,可以聊内核的东西。师兄就问了下内核中内存管理的方式,问为什么有高端内存啊,又问高端内存在线性地址中怎么映射的,又问了些页表的东西,还是问得比较深入。接着师兄问了下OSI七层模型,让从TCP层开始往下讲,说了一堆,师兄点头表示满意。接着师兄问一些web方面的东西,我说不太了解,师兄点头也就没有多问。接着让写程序,之前感觉百度算法会考很难,准备了一堆算法,这里师兄就叫写一个链表排序,心里一阵狂喜,很快写了个 O(n*n)的给他,师兄又问可不可以降低复杂度,磨蹭了一下,磨出个O(nlogn)的给他,师兄点头表示过关。问我对他有什么问题,我问了一下他们的工作状态以及主要的项目都是什么方面,师兄说每天会加班到很晚,因为每个人手上都有很多活,但是成长的也很快。项目说了一些,主要是内核方面,以及分布式服务器方面的,我都很感兴趣。双方握手道别,总之这次面试感觉还是很好的,师兄很平易近人,面试就像朋友间的对话。

    第二天就接到二面的通知,在说二面以前,先说两个小插曲。第一个小插曲是我在前台等待面试的时候,发现百度的gg们都喜欢抱着笔记本到处走,我开始不明白,以为他们是在测试无线信号,后面才想通他们是在干嘛。料想在百度这样思想活跃的公司里,每天都会有很多想法,每人都能发起一个会议,而每层的会议室又是有限的,所以百度的gg们总是抱着笔记本到处抢占会议室。说这些是想说,像百度这样活跃的气氛我很喜欢,之前也去过一个公司,感觉技术部门死气沉沉,没有什么活力。另外,而相反百度的mm很少这样,料想百度的mm们都注意保护自己的皮肤,不喜欢整天和辐射产品打交道。

    另一个插曲是,我在前台等候时,看到一个哥们,其貌不扬,留个小胡子,过来前台来了句“你好,我是来拿接收函的。”立马激起我敏感的神经,我才知道原来 offer的中文名叫接收函。然后我就像哈巴狗一样伸着舌头目不转睛的注视着那个哥们,帅气的从人力手中拿过百度的offer,然后潇洒的转身,目送他扬长而去,只留下我的一滩口水。这个时候面试我的人来了,我赶紧吞了吞口水跟着进去。在去会议室的途中,我知道面试的面试官中有一个也是北邮的师兄,另一个胖乎乎的,一看就是个高手,姑且称他大牛。

    到了会议室坐定,大牛笑眯眯的开始发问,首先还是说项目。感觉百度对于你做过的项目真的是很重视,我又开始balabala说一堆,大牛中间不时打断,问细节,说完,大牛点点头,来了句让我晕倒的话,“哦,就是这样啊,我还以为做了个很厉害的***呢。”大牛果然是大牛,一说话就不一样。

    说完项目,开始问技术,说看我简历上说对驱动了解,就直接问网卡驱动的原理。说完,又问linux底下/dev目录怎么根据设备的设备号进行设备管理,我直说不太明白这个问题,就照我的理解说了设备号作用,系统怎么对设备进行发现的过程,以及设备驱动中怎么在/dev目录下生成相应的设备文件,大牛点点头。大牛接着问,说一下linux里面的init进程的作用,根文件系统,initrd的作用等等,问得都是linux下一些比较基础的问题,但是范围很广。
另外也有一些考察深度的问题,例如,让谈谈你做嵌入式linux与桌面linux的区别,这是个很宽泛的问题,能谈到什么程度,就看你的功力了。大牛问了一堆,看来是想休息了,就对师兄说了句让我晕倒的话,“来吧,这个是你的校友了,不要客气了,上吧”,师兄开始发问。

    先问linux中一些基础的问题,inode作用什么的。接着问C,说有一个文件中很多ip地址,怎么样对其进行排序,让比如191.1.1.1放在192.1.1.1前面,如果数量很多的话用什么排序法。接着师兄问了一些实际情景题,还记得的几个问题是
    1 一个磁盘阵列,想一个算法,让其中一个磁盘坏了,能保证其中的数据不丢失。我对于磁盘阵列完全不熟悉,当时一下就晕了。面试过程中,这样的情况会经常出现,遇到一个你摸不着头脑的题,这个时候该怎么办呢?给大家说一个小技巧,这个时候你一定不能冷场,一旦冷场,你就会感觉空气像凝固了一样,越想心里就越乱,越乱就越想不出答案。这个时候,应该主动的问他问题,尝试着把这个摸不着边的问题一步步的限定到一个具体的情景中。比如这个问题,你就可以问,需要几个磁盘啊,两个坏了的情况要不要考虑啊,总之,一步步的把场景具体化,只要你不问磁盘圆的方的啊这样的问题都行。可是到最后,发现自己还是没头绪,那就直说不会,不要瞎扯,尝试着去说一个完全不懂的东西,在懂行的人眼里是一件很可笑的事。在师兄循循善诱下,我还是没头绪,最后直接说“我母鸡”。下来查了下,磁盘阵列里面有一个奇偶校验盘的作用就是这个。
    2 在一个局域网里面,如果两台电脑ip什么的都设好了,但是互相之间就是连不上,问分析出现什么问题。
说了几种情况,网关的问题,协议栈的问题,防火墙的问题,实在想不到有什么可能了,连网线的问题也说了,这题感觉答得也不太好。

    问到网络,大牛把话接过去,问TCP协议中拥塞避免的机制,甚至让画出其中拥塞窗口变化曲线,还好这个还比较熟。这个问题多次在面试中都被问到,凡是需要考察网络,TCP/IP的地方,光知道TCP的三次握手是不够的,建议大家以”TCP,流量控制,拥塞避免”等为关键字google一下,最好再加一个 ”filetype:ppt”,这样,对TCP协议可以有一个初步的了解。

    二人又你一言我一语的啪啦啪啦问得兴起,题目不太记得了,就在我渐渐感觉有些招架不住时,大牛终于说,问完了,说两人要出去商量一下,我才长出了一口气,想着总算完了。

    过了一会,师兄进来说,还有一个同事再面我一次,我的脚瞬间就软了,心想今天活着是走不出百度这栋楼了。没想到,过一会师兄说那个同事请假没来,让我回去等通知,一周内答复。于是我就回去虔诚的等待着,没想到两周后等来了thanks letter,给我打击很大。这件事也告诉我保持平常心的重要性,对一个东西抱有越高的期望,对你的打击也越大。

    在准备百度的过程中,我也收获到很多。每年百度的offer给钱很多,属于顶级的,北邮今年有进去的,但起码就我身边看来,数量还不如中科院与清华的学生。我试着总结一下,主要就是两点:
    1、编程能力、算法等基本功。算法是个很见功力的事情,看三年算法和看三个月(就像我这种菜鸟)一眼就能看出差别。这方面,参加ACM训练,看《算法导论》等经典书,都能让你在找工作的过程中如虎添翼。
    2、项目因素。我在中科院实习过一段时间,对比在中科院做的和在自己实验室做的项目,老实说,实验室的项目根本拿不出手。北邮除了一些很牛逼的实验室外,其他的实验室可能都有这样的问题。对于百度(只了解我面的系统部,别的部门是不是这样不知道)还是很看重项目经验的。所以早一点去大公司实习,参与到实际的项目中,对你会是一个很大的帮助。那如果不能实习,实验室有没有什么好项目的同学怎么办呢?参加开源项目!sourceforge,freshmeat 会是你的良师益友,其实就sourceforge.net就已经足够。就算下来几个你感兴趣的项目源代码,看看人家官方的说明文档,弄清楚项目架构流程什么的也很有帮助。另外多上上论坛,Chinaunix,咱们北邮人的linux版,做内核的话,可以加入到linux内核开发者中文邮件列表,起码能知道人们都在做什么,关心什么。

    总而言之,我认为百度对你的考察其实很简单,就是看你够不够牛,这也是他们选人的标准,当然,他们的待遇也对得起这样的标准。我觉得,能进百度的人,在进入前,基本就能知道自己的能力大概在百度的要求范围之内。想进去的同学,就苦练算法,早做准备吧。

***************************************************************************************************
                                                  EMC篇
***************************************************************************************************
    如果说百度招人的标准是看你够不够牛,那我觉得EMC希望从你身上看到的则是你的潜力,正如后来我们座谈会上manager说到的一样,这个世界上,百分之九十的技术都是可以学会的,他更希望看到的是你是否具有这个学习能力,以及交流能力,沟通能力,你的Passion等等,而对于这些方面的考察也始终贯穿于EMC的面试过程中。

    EMC的面试共三轮,一天面完,分别是三个人面,一般是一个director,一个manager,一个engineer,每人面半个小时,加起来就一个半小时。我第一面遇到的就是EMC北京的老大,是一个黑人。不过听说有人也没有遇到他面试的。我也不知道第一面遇到他对于我来说是好事还是坏事。有的人面试会紧张,而且对方级别越高就越觉得紧张。但是我感觉这是完全没有必要的,相反,对方层次越高,人的素质也就越高,对于应聘者也更尊重。我反正是对方越有来头,就越适合我发挥,越兴奋,就好象打仗一样,对方级别越高,我的备战级别就越高。

    进门看到威严的Boss,我一下就想起了侠客奥尼尔,他示意我坐下。他的英语很快,对于我的听力也是个很大的考验,必须全神贯注的去听。先谈了谈简历上的东西,实习经历。然后开始问项目,在我说完项目介绍后,他让我到前面的一块白板上画架构图,整体框架。这个阶段,我认为,他不是真的关心你的项目是什么,而是要从你的介绍中,观察你的表达能力,综合能力等各方面素质。这东西都有准备,我就palapala开说,他主要要求总结两点:
     1、你的项目主要做了些什么事;
     2、你自己在项目中都做了什么。

    项目就说了快二十分钟,他还比较满意。说完项目,开始就简历上的东西提问,首先问驱动方面的东西,让画个网卡驱动原理说明,问的很细,比如你看的是哪款网卡,说到file_operation指针,就叫说明其中每个功能函数的作用等等的,又问了其他一些东西,半个小时很快就过去了。这个时候老大给我说,咱们的时间到了,但是我还有很多东西要问你,所以,咱们不用去管时间。我头一下就大了,只得硬着头皮说好。

     接下来开始对技术提问,这些应该也是从我的简历上来的。问linux内核中的内存管理原理,我开始说Linux内核中内存管理,说用于内存管理的一些结构体,说逻辑地址,线性地址,物理地址的转换,说到这儿,他又问线性地址到物理地址的转换发生在什么时候云云。接下来问TCP/IP协议栈各层的功能,说明 TCP协议,IP协议的功能。这些东西用中文说还马马虎虎,英文就累坏了,我脑子里常常出现真空,都不知道自己再说什么,真是晕菜。好容易问完了,Boss还很好心的给我解释了下他这么问我就是希望了解我对这些东西掌握的情况,没有别的意思。说得我心里暖暖的,人真的是很nice啊,对比我面过其他一些公司规模和实力不行但是面试官还特拽,EMC给人很尊重你的感觉。接下来聊了聊家常,感觉差不多了,老大就问我有没有什么问题问他。

    以前也看到过外企的面试还是很重视这个环节的,因为你的问题是展示你的学习与求知欲的时候,他也会从你的问题或者是你希望了解的方面来判断你这个人。我问了两个问题,一是问了EMC与旗下的另一个公司Vmware主要从事哪些方面的业务。虽然时间不多,但是Boss还是很耐心的回答了我的问题,主要说了 EMC主要做的东西是信息基础设施(Information infrastructure),而Vmware主要的研究方向在虚拟化与云计算方面,我都表示很感兴趣。

    第二个问题是问EMC最看重应聘者身上的什么素质。这个问题我同时问了三位面试官,得到的答案都是相同的,这也表明了EMC的企业文化,而我自己本身是很喜欢这样的文化。其中第二位工程师给我的回答非常诚恳,写出来给大家分享一下。他说像我们学生对于EMC来说,可能进来以后一切东西都要重新学习,所以以前掌握什么不是特别重要,主要看你的基本功是不是扎实,你的学习能力如何,你的交流能力怎样,有没有自信,还有特别重要的一点是你对于你的工作有没有激情。

    老大最后还给了我一个评价是“Full of confidence and do have passion!”,我赶紧称谢,双方寒暄几句,握手道别。一看时间,面了五十分钟,大大的超时了。这里我想给北邮的学弟学妹们提个醒,那就是面试过程中的礼仪问题。我在这次面试过程中,也接触到一些北大清华的学生,他们可能技术很强,但是我认为,有很多细节的东西,都忽略了。比如我遇到一个北大的哥们,背着个Intel训练营的包,穿着个滑雪服就过来了。我就想,大哥,可能你技术真的很强,但是,好歹是来面试的,拜托你专业点好不好,试想你面试别人,看着对方穿个滑雪服就过来了会怎么想。有人会说面技术不用穿太正经,你也不一定要穿西服,但是要适合这个场合,总之,符合时宜的穿着能让你看起来更职业。
另外说几点我觉得应该注意的地方吧:
    1、进门前一定要先敲门,哪怕门是开着的;
    2、双方握手作自我介绍时,眼睛要正视对方,握手短促但要有力;
    3、离开时最好客气的寒暄一下,说说今天和您交流很开心一类的话,这其实也是有礼貌的表现。咱们中国人之间好像没这个,但是和老外交流时还是很重要的。就像我面黑人老大时,最后说了句“It’s a great pleasure to talk with you!”,让我有些意外的是,Boss一扫整个面试的紧张严肃的气氛,哈哈大笑,也给我说,”It’s a great pleasure to talk with you,too”,不管是出于礼貌还是客气,这个还是需要注意的。

    接下来两面是技术面,我就不详细说了,说说我还有印象的一些题吧。说这些不是为了透露什么题,因为每年的面试肯定不会遇到相同的面试题,只是出于给大家传递更多信息关于公司主要关注的点是什么,希望考察什么,也让大家更了解公司吧。HR JJ看到不要怪我啊~
C与C++方面:
    C中是怎么样做到类似C++那样面向对象的技术的,写一个用C表示继承的例子,Linux内核中有没有这样的例子?
    i++是线程安全的吗?如果不是,你将怎么处理?
    你的程序中都出过什么bug,你是怎么样调试的?
    写一个C++中多态的例子。

    Linux方面,其中部分可能与我的简历有关:
      说说linux内核中缓存机制里页缓存page cache原理是怎么样的?
      说说Linux进程调度机制。
      说说Linux内核同步机制中spin_lock,spin_lock_irq,spin_lock_irqsave都 有什么区别,用在哪些场合中?
      Linux里面进程间通信的方式及其区别。

   网络方面:
   Socket通信中listen操作和accept操作有什么区别。等待一个数据包的时候是停在哪一步?
    以socket为例,说说异步传输与同步传输之间区别是什么?
    说说Linux内核中TCP/IP协议栈中你觉得重要的几个点。

    算法方面:
    两个数组,一个长度为m,一个长度为n,数组里面存放从0到整型数可表示范围的数,问怎么找到两个数组中重复的数字。

    面试完,又是痛苦的煎熬的过程,两个星期以后,接到上海那边的HR给offer的电话,在平安夜,被叫到公司签约,算是给了我一个圣诞大礼。对此,我深表感激,就顺便帮公司宣传一下吧,EMC给的钱可能比不上百度,但是也够用了,公司福利待遇很好,一年二十天的带薪年假,所有的保险中应该个人交的部分都由公司交纳,甚至你的配偶子女都能享受你的医疗保险,工作满三年可以持有公司股票。工作的氛围也很好,见到的里面的人都非常Nice。如果说IT行业是一个流动性大的行业,那么EMC绝对是一个值得你长期待的地方,也希望今后有更多更多的北邮人过来吧。

*************************************************************************************************
                                                   总结篇 
*************************************************************************************************
    写个简短的总结吧,技术方面,我的确不是什么牛人。我现在做的Linux下C开发,但是在我的本科,唯一挂的一门课就是C语言,大四的时候,在CSDN上看到有哥们说已经掌握指针的使用了,当时就想,哇,这人这么牛啊。就在三年以前,我还不知道Linux是个什么东西。这三年之中,真的静下心来看了很多书,来给大家推荐一些吧。C方面三本经典的书《C专家编程》、《C和指针》、《C陷阱与缺陷》;计算机体系结构方面,卡内基梅隆大学的经典教材《深入理解计算机系统》说体系结构与一点汇编知识,对我帮助很大。Linux方面,《鸟哥的私房菜》是一本很好的入门教材,设备驱动方面《Linux设备驱动程序》是一本好书,要了解Linux内核呢,可以看看《操作系统设计与实现》以及《Linux操作系统原理与应用》,但是我强烈推荐的是《深入理解Linux内核》,这本书的英文版本我来回看了两遍,中文看了一遍。说到Linux内核,还想多说几句,很多人看到内核两个字,就心生恐惧,以为这是一个神秘而又高深的东西,而不敢接近它。对于内核,我只是一个初学者,但是我希望有更多的人投身到其中,因为这是一个巨大的宝库,你可以知道那些世界顶尖的黑客们都在干什么。我打个比方吧,武侠小说常常描述谁谁掉到一个山洞里,捡到一本武林秘籍,炼成盖世武功,成为大侠,这是很多男孩子常常幻想的吧,但是现在这本秘籍就放在你身边,而且很重要的一点是,它还不需要你自宫哦,完全没有任何副作用,但是你就是因为畏惧而不敢看他,唉,没办法,你就失去了炼成盖世武功的机会。勇敢的迈出第一步吧!

    大家都知道,今年真的是一个找工作的寒冬,也许几十年以后,我们的后辈们也许会在他们的历史教科书中读到,“本世纪初,美国爆发了大面积的金融危机,大量企业市值大幅缩水,面临破产的危机,大批工人失业,很快这股危机就蔓延到地球的另一端,在中国的沿海地区,大量的工厂倒闭,数以万计的人们失业。。。”很不幸,我们就处于这样的历史当中。但是我想,越是在危机当中,我们越要团结,越需要勇气。回想我面试完百度的那天,还很郁闷的在公交车上把手机给掉了,当时觉得整个世界都是灰暗的。在这几个月的时间里,有时信心满满,有时又陷入低潮,极端的不自信,觉得前面一片迷茫,好在一切终于挺过去了,也好在我有很多的兄弟们的支持。我要感谢的人太多了,感谢百度的曹师姐,师姐是全百度最好的大好人,师弟师妹们都去找师姐内推吧。感谢小胖子和万松借我手机,感谢所有在我最艰难的时候鼓励我的人,giggs,老二,胖子,William,龙球星,TheShoe1016,韬,小力,飘,熊,雯雯,小沈,猴猴,马儿,宿舍的哥们,班上的哥们,实验室的哥们…… 要感谢的人实在是太多了,就不一一写了,总之谢谢你们,你们是我最大的财富!
 
    找工作的这几个月来,确实有很多感受,一时间也不知道怎么表达了。我们寒窗这么多年,就是为了最后这一次,这也是作为对我们这么多年学生生涯的一个总结,为自己的学生生涯划一个什么样的句号,关键在于你自己,不在于这几个月,而在于之前的几年。找工作的过程呢,其实也是一个很好的自我发现的过程,每个人都能找到自己满意的工作的,我始终觉得,也许在这个过程中,你会被一些公司拒掉,但是那真的是说明你不适合那个工作,或者那个工作不适合你。找工作的过程是一个很好的自我发现的过程,看看自己还有多少潜力。另外,我感触很深的一点是,真的是性格决定命运。你的性格决定了你将会有一个什么样的命运。你是否有目标,是否有勇气,是否执着,在遇到挫折时选择一种什么样的态度,逆境中是否还能微笑面对,这一切的一切,决定了你有一个什么样的命运,上天是很公平的。在挫折面前意志消沉,在机会面前犹豫不前,在需要作出决定时缩手缩脚,在需要面对你自己时不自信都会是你最大的敌人。

    另外还想废话多说几句,关于我们的母校。其实北邮的牌子是很强大的,在北邮待了七年其实都没有怎么感觉,但是出来找工作的时候还是深有体会。北京邮电大学,这六个字,也许在你每天骑自行车穿过校门时,在你走在阳光透过斑驳的树叶照着的校园的主干道上时,也许在你看到那些为北邮开山,声名卓越的前辈教授们还骑着破旧的自行车,每天来回于学校与家时,也许就在你逃课躲在宿舍玩游戏时,每天熬夜看电视剧时,它只是静静的躺在那块陈旧泛黄的门匾上,你也许对此毫不在意,只有在你出了学校,来到IT这个圈子中时,才发现这六个字是这样的闪闪发光,才会发现在很多著名的公司里到处都是北邮的师兄师姐的身影。比如 EMC开座谈会时,出来介绍经验的三个人里面就有两个是北邮的师兄师姐,再比如百度,比如爱立信,等等等等。但是我想告诫学弟学妹的是学校的强大不等于你就可以靠着他吃遍天,学校的强大是依赖于我们前面多少届的师兄师姐们不懈的奋斗创造出来的,我们要做的,是不能砸了他的牌子。最后,祝job版上所有兄弟姐妹们都能拿到好offer,我是信息的,也祝愿虽然现在已经叫信通院,但是我还是愿意叫“信息工程学院”的各位兄弟姐妹们都能拿到自己满意的 offer,有一个Happy ending,各位09年新年快乐!

你可能感兴趣的:(算法,linux,面试,百度,项目管理)