﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-ACTime-随笔分类-面经汇总</title><link>http://www.cppblog.com/liuhao/category/13108.html</link><description>let's start</description><language>zh-cn</language><lastBuildDate>Mon, 22 Feb 2010 09:53:31 GMT</lastBuildDate><pubDate>Mon, 22 Feb 2010 09:53:31 GMT</pubDate><ttl>60</ttl><item><title>百度笔经&amp;面经(zz,详细！赞！)</title><link>http://www.cppblog.com/liuhao/archive/2010/02/21/108154.html</link><dc:creator>ACTime</dc:creator><author>ACTime</author><pubDate>Sun, 21 Feb 2010 08:37:00 GMT</pubDate><guid>http://www.cppblog.com/liuhao/archive/2010/02/21/108154.html</guid><wfw:comment>http://www.cppblog.com/liuhao/comments/108154.html</wfw:comment><comments>http://www.cppblog.com/liuhao/archive/2010/02/21/108154.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/liuhao/comments/commentRss/108154.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liuhao/services/trackbacks/108154.html</trackback:ping><description><![CDATA[百度笔经&amp;面经(zz,详细！赞！)<br />2007年10月20日 星期六 16:34发信人: ptlj (PT), 信区: Job_Discuss<br /> 标 题: 百度笔经&amp;面经 发信站: 武汉白云黄鹤站 (2007年10月08日12:50:13 星期一)<br /> 看了一下精华区，好像关于百度的笔经和面经很少，所以上来发一下，积攒RP～～PS:我投的是商务搜索部的引擎研发工程师。 <br /><br />【笔试】百度的在华科的笔试在9月21号晚上宣讲会后马上举行。宣讲会那叫一个人山人海， 很多不是毕业班的人也来凑热闹感受一下百度招聘。笔试题目有选择题，编程题，系统设 计题三种类型。选择题难度不是很大，但我太水了，很多基础知识都不记得了，正则表达 式，shell编程～～～汗死，不说了，好多都是蒙的。 编程题有3题，第一题是找出字符串 的最长不重复子串，输出长度。我想了半天，只会O(n^2)的算法，是个人都可以想出来的 笨办法，想着写下来也没啥意义，题目问有没O（n）的，那看来肯定有O（n）的，就不写 了，看后面的题算了。第二题是找出一个字符串的最长回文子串。这个问题好像以前考研 复习数据结构时看过，想起来判断一个回文串可以用栈来实现，稍微回忆一下，算法思路 就出来了。于是提笔写下了个O(n^3)的算法。汗死了，自己太笨了，只能想出这种垃圾算 法，看来百度不好混啊。第三题是在2.5亿个整数中找出不重复的整数，内存空间不足以容 纳这2.5亿个整数。这种题是百度的特色，海量数据处理，我也没啥思路。既然不能一次扔 进内存，我就分批扔进去，尽量减少从外存读进内存的次数，然后算了一下，分2批扔进内 存。然后每批排序，找出每批里面不重复的数，把这些不重复的再在另一批数中过一遍，去掉重复的，然后汇总。写不出具体代码，只把思路写了一下。当时心情沮丧极了，想着，挂了，代码不会写，难得写出一题又是效率极低的。最后那道系统 设计题，我压根没啥好思路，题目大概是海量数据分布在100台电脑中，想个办法高效统计 出这批数据的TOP10。草草写了几笔，时间就到了，交卷～～～看来，这次除非有奇迹，不 然笔试肯定被BS了。 <br /><br />考完回到寝室，和兄弟们讨论一下题目，第一题原来可以用Hash实现，时间复杂度降 到O(n)。自己仔细想了一下，整个算法的思路就清晰了，郁闷啊，这么简单的题居然没想 出来，看来自己还是太菜了。ZZ对第二题还有个新颖的算法，学习了一下，赞啊，亏他想 得出来，呵呵。第二天还有Microsoft的笔试，赶紧拿Primer来抱抱佛脚，这么好的一本书 ，我学C++时怎么就没看啊？后悔，懊恼充斥着我的大脑，大有相见恨晚的感觉。 虽然自己笔试很烂，但是还是寄希望于奇迹出现，能有机会去面试。于是晚上睡觉开着手机，因为座谈会时百度说如果笔试通过，当晚凌晨就会出面试通知了。晚上辗转反侧 ，难以入睡，期待手机铃声响起，都不知道几点才睡着。早上起床一照镜子，大熊猫再现拉，唉，为百度消得我憔悴啊。自己空想也没用，眼前还有MS等着我呢。考MS时，手机都没关，就等着百度电话，希望考试时能有电话来。果然，早上11点多还在考试时，手机响起，挂掉，我还在为了MS笔试而挠头呢。几分钟后，又响了一次，再次挂掉。考完试，出 考场拿手机一看，咦，是027的哦，好像是个小灵通。回拨，不通，继续回拨，还是不通， 不死心，我就不信拨不通你。结果拨了10多次还是不通，算了，只好等他再打来。回实验 室，上Q问问这个号码是不是百度的，JG他们说是的，惊喜，Oh，yeah，百度面试来临了， Miracle居然发生了。于是和JG，DJ，Q拼车去弘毅面百度。结果面官说我不接电话，他们安排了其它同学面试，叫我第二天早上10点再来面。FT，怎么这么曲折啊，不过给我点时 间复习准备，也好。 <br /><br /><br />【一面】 晚上好好看了一下项目，把重点温习了一下。又问了下JG面试问了啥，心里有个底了 。第二天，一个人飞的去了弘毅，花了22大洋，好心疼啊。去到昨天那个房间，看见面官 了，一个光头，和JG昨天的面官一样。果然，他上来就问了我昨天问JG的同样问题，设计 一种数据结构，结合了链表和数组的优点。我想了一下，说用Hash链表，这样插入和查找 的效率都比较高，但是有conflict问题要解决。他马上就问我如何解决conflict问题，有没什么好方法。我说修改hash函数，使得hash值产生的conflict概率尽可能低。他问那你怎么设计？我倒，这个问题我可没想过啊。当场郁闷了，立马陷入苦思状态。想出几个点 子，都不管是否可以降低conflict的概率，都和面官说了。他很快就举例否定我好不容易 想出的点子，说你的办法还是不行哦，有没更好的？打击死了，我已经尽力了啊，没想到这么快就被他找到反例，郁闷死我了。不过面官人很好，看我实在想不出更好的了，就不为难我了，换下一个题目。后面一题是海量日志数据，提取出某日访问百度次数最多的那个IP。想了一下，说了个思路。面官就问你这样需要的存储空间太大，有没优化方法。看 来思路是正确的了，但是优化问题嘛，好棘手啊。我又说了个优化的方法，面官不太满意，摇头。完了，实在想不出来了。。。。面官见我苦思冥想，也不为难我了。接着就问了下项目经验，我balabala一通，他对我的项目不太感冒，没问什么问题。 然后就问笔试卷子了，他问我第一题干嘛空白？我说了原因，他问我现在有好的想法 没？我就把自己考完后想的O（n）的算法说了一下，他比较满意，没问我什么就问第二题 了。我又说了下我当时的算法思想，他问有没更好的优化算法？我说可以做到O（n^2）， 把思路说了下。似乎不是他的满意答案，也没问我啥。接着问第三题，我把我的想法说了 。他说，你最后还需要折半查找这么麻烦吗？对2个有序的数组，查找A数组的元素是否在 B数组中出现有没更好的算法？我想了一下，突然灵机一动，想起归并排序的算法。就说， 是不是像归并数组那样，直接在B中定位出A的位置，这样就可以在O(m+n)内实现。他比较满意，说：“是啊，都有序了，你还折半这么麻烦啊？”暴汗，看来面官水平比我高太多了，思维跟不上。然后看面官总算露出点笑容，忍不住问句：“你觉得我这个算法可以接受不？”他的回答让我很吃惊，他说：“当然可以接受拉，我觉得挺好的啊，不过你的算法要访外存，可能时间效率不是很高。不过先要完成题目的任务，再考虑优化。”我赶紧补一句：“是啊，先要让它work，再考虑如何让它work better。”面官还来句：“不过这个题最好的算法可以一次把2.5亿数据扔进内存，这需要你设计一个好的数据结构。”我问：“这个，怎么设计哦？”面官表示不能告诉我答案，让我自己回去想。 这时，面官看看表，我也看看表，已经面了50分钟了。他说：“现在我们再做2道数学推理题。第一题，2个盒子，容量足够大，现在有50个红球，50个蓝 球，你如何安放这 些球进盒子，使得我随机抽取一个盒子，然后从里面随机抽一个球，这个球是红球的概率 最大？给你2分钟时间考虑，直观分析给出结果。”当场我就晕倒了，从小到大，我都不会 做IQ题的啊，这可是我的最弱项。没办法，不能直接说我不会啊。只好硬着头皮上，分析 一下，我说：“列条概率的表达式，求最值，可以求出结果。”他说：“你这样搞2个小时 都算不出结果。从直观上分析就可以知道结果了。你再想想”，被打击了。只好继续想， 我想，那把50个红球放到一个盒子，另一个盒子全放蓝球，这样一个有100％，另一个是0 ％，平均下来有50％。也不理想啊，这个时候，灵感再次突现，50个红球全放一个盒子不 是浪费嘛？放1个也是100％，2个也是100%，那就放一个好了，其它全部扔到另一个盒子和 蓝球一起。再想一下，这样概率有75％，应该很高了。也没仔细想是不是正确答案，就脱 口而出，说了这种放法。面官再次露出笑容，说“正确！”我那时心里好激动啊，没想到 运气这么好，居然还答对了。接着又来下一题，A射击命中率80%,B60%,C40%，A,B,C互为竞争对手，每人都知道另外2人的命中率，3个人同场 竞技互相射击，同时开了第一枪，问第一枪射后，谁最有可能挂掉？我分析了一下，说了答案，他问我思路，我说了我的思路后，他居然来句：“你的思维和别人不 一样。”FT，我和别人不一样，估计说错了，自己确实回答IQ题比别人笨一截，没办法。面官说：“好了，时间差不多了。你有什么问题问我不？”我问：“如 果我有幸通过一面，什么时候会二面？”“通过的话，明早就二面。”然后，和面官握了下手，就这样结束了我的一面。 面完一面后，去找LP吃饭，下午陪她上自习，感觉自己一面还行吧，大部分题都答出了思路，虽然进一步的优化没有想完整，而且运气也好得不得了，连最后2题居然还被我蒙对1题，如果进不了2面，只能说明自己离百度的要求还是差距太大了。结果好运再次降临，晚上6点多接到电话，通知第二天早上10点去二面，呵呵，竟然进了二面，真是 too lucky。 <br /><br /><br />【二面】 第二天准时去到面试房间，换了位面官面我。一上来就问我一道海量数据处理题。题目是：很多记录数据，有ID号，还有几个不同的属性域，现在要根据ID号高速查询到对应 ID号的数据，设计个算法。然后，现在要根据特定的属性域排序查询，既要高效找到排名 在第N-M名的记录，还要经常插入，删除记录。我说，查询ID可以用Hash表查询，把ID号hash，然后可以在O(1)查到对应的记录。第二个问题，有点复杂，类似于结合数组和链表的优点设计数据结构。我说了好几种方案，问他这样行不行。他说：“你自己觉得行不行啊 ，现在是我面你，不是你面我啊，你自己考虑答案啊。”晕倒，我实在想不出更好的，也 不知道应该如何抉择，备选方案都各有优缺点啊。最后，还是选了其中一种，回答了这个 问题。面官说：“其实这个问题很难有最佳方案，就看你怎么选择，权衡，选一种较好的 方案。”唉，也不知道我的答案可不可以接受，完全没了一面时的灵感了。然后面官看了 下我简历，惊讶地说道：“你是武汉理工毕业的？”我也很惊讶：“你听说过这个学校？ ”因为我感觉，武汉理工又不是很有名，在北方，连华中科技名气都不是很响，没想到面 官竟然知道武汉理工。结果面官说：“我就是武汉理工毕业的啊。”一听，心中窃喜，居然还有校友，赶紧套一下亲近。问他哪一级的，什么时候毕业啊，加入百度多久了之类的问题。然后自己又说了一下个人对武汉理工的感觉，尤其是当年放弃保研名额，选择去考研。他听着也觉得有点意思，我就继续说：“觉得学习氛围很重要，身边的同学对自己的影响很大。本科时，很多同学沉溺于网游，都堕落了，自己想找个人讨论问题都没有。现在去了华中科技，身边的同学都很优秀，经常和同学讨论问题，一起进步，感觉很好。”他听了后点点头，说：“你这个决定挺正确的。......blabala一通，他也不感冒。他又问我：“干嘛想加入百度公司？”我说：“自己对互联网技术很感兴趣，从本科起对数据结构和算法就有浓厚的兴趣。 加上自己将来想搞研发，百度公司的技术很吊，里面的人很强，加入百度可以得到很好的锻炼，学到很多东西。百度公司现在发展很快，对自己的职场生涯很有帮助。”然后，他问我：“你对搜索引擎了解不？”我说：“之前不了解，听了座谈会后了解了一些。”他又问：“你对自然语言分析处理了解不？”“不懂”说完， 我汗死了，完全不懂，有点不祥的预感了。谁知道，更郁闷的事还在后头。他接着来一句：“你做的项目都是网络安全方面的，和我们的活不对口啊？”最让我担心 的事终于发生了，我故作镇定说：“恩，既有网络安全，也有网络应用和管理方面的。”然后面官就说：“好了，我的问题差不多了，你有什么问题要问吗？”我看了下表，倒，才面了30分钟就没问题了，看来我方向不对口，他对我已经没兴趣了，不行，这样草草了结，二面肯定挂掉了，得扯点他感兴趣的问题才行。马上把自己本科的那个毕业设计网络五子棋里面涉及的算法问题拿出来问问他，看看他有什么优化的方法。他想了一会，说：“这个问题有点复杂哦。”我窃喜，哈哈，该不会把你难倒了吧？接着他来句：“你当时是怎么做的？”我心想，你还真行，把问题又丢回来给我了。我就说了我当时的做法，也得到了他的认可和赞许。恩，第一步目标达成。 然后又问他我投的那个职位对哪方面的要求比较高？他说：“良好的算法和数据结构的基 础最重要。”我又问：“那数据库，脚本语言，网络编程方面呢？”这些都是我的弱项哦 。他说：“这些都有很多现成的成果可以直接利用了，算法和数据结构可能比较难提高， 所以需要有个良好的基础才行。”听完，心里有点高兴，自己的强项就是算法和数据结构 方面，既然弱项不是很重要，那看来对我的影响不大。这又让我想起李开复的一句话：“ 你进MS时，懂C＃很好，不懂也不要紧，来了可以学。但是如果你不懂得如何学习，那就糟 糕了。”看来，基础和学习能力是很多大公司所看重得。然后又和面官聊一下武汉理工的 变化，和在华中科技读研的一些生活。最后，面官说了句：“其实，你的技术还是不错的 。”听了这句后，很高兴，但是自己对搜索引擎的不了解和专业的不对口又让自己产生一丝隐忧。最后问了下“还会有3面不？”“Maybe。”和面官say goodbye，然后结束了二面。 <br /><br /><br />【后记】 二面后就是漫长的等待（其实也就等了6天而已，但是自己已经觉得很漫长了）。期间没有任何消息，BBS说二面过了就发offer，二面不过就去三面。对这个说法，我持保留意见，身边很多大牛都去3面了，3面是非技术面，都问你期望的月薪的，自己觉得应该是过了2面的才有3面机会吧。自己一直没等来3面的电话通知，已经觉得自己挂了。期间找 LP诉苦，她安慰我说：“说不定就像BBS说的那样，二面过了就不用三面了吧。你干着急也没用啊，好好复习等消息吧。”虽然是安慰我的话，但是在等待的日子里有个人可以诉苦感觉还是挺好的。联系了一下内推的那个人，他说他也不知道结果，问我是谁面我的。我说一面是光头，把二面面官的名字报了一下。他说：“光头是他们部门经理。”我很惊讶 ，啊？部门经理？看不出来啊，既然部门经理都让我过1面了，应该机会还挺大的啊，自我感觉一面比二面好多了。每天逛BBS，不仅看白云，还看珞珈山水，交大思源，还有天大求 实。等待真是种煎熬啊，虽然各方面的信息都是朝着不利的一面发展，但是自己还是不死心，一天没发offer，就还有机会；既然没发据信，那就还有希望。等啊等，终于在国庆前 一天发offer了，居然自己也有！ 回顾这次百度之旅，感觉运气太好了。一面是部门经理，其实过了他这关基本问题就不大了。恰好自己那天状态超好，灵感不时出现，临场超水平发挥，总算过了第一关。第二关在形势很不利的情况下（连说几个“不懂”），自己给自己找加分项目，朝着职位的要求往上靠。既然算法和数据结构要求高，我就要表现出自己这个方面有优势，扯毕业设 计的算法设计和面官聊，表示自己对这方面有兴趣，基础不差。还有突出一下自己其它方 面的优点，例如上进，好学，对技术有偏执（百度系统部老大的经典说法）等。觉得面试时还有一点做得不错的就是，当面对一个自己没什么思路的问题时，只要你有什么新想法 ，不要管这个想法是否可行，是否可以真的解决问题，先把它说给面官听，让他觉得你的 思考问题的能力还是很强的。一定不要想了半天，结果说“不知道”这样面官对你的印象 就会很差。虽然你的idea可能不是很work,但是只要是朝着正确的方向前进就OK拉，面试官会给你一定的指引的。你继续朝着那个方向想，说不定很快就可以解决问题了。 以前都是看别人的面经，获益良多，这次自己写写笔经，面经，希望对大家有帮助。 最后，希望大家都能找到自己满意的工作，其实付出和收获真是成正比的。可以从事自己 喜欢的工作，真是很高兴。目标和准备方向的正确可能是我这次应聘成功的最主要因素之一吧。我投简历只投研发的岗位，对不搞技术的公司压根没投，不管公司有多大有多好， 像P&amp;G，MARS，国企，公务员等。一来不想占用别人的机会，二来也知道自己更适合在技术 方面发展，去非技术类公司自己的发展可能不如技术类公司。呵呵，写得我好累啊，就写到这吧，希望能对大家有用。 <img src ="http://www.cppblog.com/liuhao/aggbug/108154.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liuhao/" target="_blank">ACTime</a> 2010-02-21 16:37 <a href="http://www.cppblog.com/liuhao/archive/2010/02/21/108154.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>