面试经历之百度

百度大数据部实习生岗:

本来内推的百度大搜,结果简历直接被挂了,有点小意外,但是回头看我第一版简历,确实有点low,幸好又邮件投了大数据。

 

提前面:

这个名字是我瞎起的,我也不知道叫啥,我一直以为这个面试就是一面,但是直到3月份我才知道这次面试只是大数据部想要了解一下我个人的基本情况和水平。面试时间大概是1月初,电话来的很突然,毫无准备地面试了。

  1. 自我介绍一下。
  2. 你的简历上写熟悉STL容器的使用,了解一些的内部实现,能说一下map内插入元素的两种方式吗,有什么区别?两种方式比较简单,分别是方括号和insert,区别是方括号会覆盖原key所对应的value,无论原来的key是否存在,但是insert当原key存在时是不能插入的。
  3. 对于map的内部实现你了解吗?红黑树,但是具体的编码不太会。
  4. vector的内部是怎么样实现的?先动态申请一定的连续空间,如果空间不够则继续申请1.5倍的空间,然后将原空间内的数据拷贝过去。问:是在原空间基础上扩张还是重新申请?答重新申请。
  5. 常用的Linux系统命令都了解什么?我举了一堆例子,问:查看进程使用了多少个文件描述符的命令是什么?答曰不知道。Vim的命令了解多少?常用的都会。如何把一串字符串都转为大写字母?答曰不知道。从本行复制到第x行?答曰xyy。
  6. 平时用C还是C++比较多?对于C和C++的区别怎么看?答了面向对象和面向过程的区别,然后重载这个机制能说一下吗,大概讲了一下之后又让我说了虚函数,后面说了一下虚函数的例子,这个我没答上来,不得不说我面向对象的知识确实很匮乏,抽空需要补补了。
  7. 说一下三次握手和四次挥手的过程。
  8. select、poll、epoll的区别是什么?那时候还比较弱,只说了一下表面的比较浅显的东西,然后问epoll的效率为什么高,是怎么实现的?这个问题没有答上。
  9. 接下来是问项目,对于网络爬虫的项目,能不能讲一下整个的逻辑和实现。这个能说的就比较多了,把四大模块等东西都说了一遍,问题:现在很多网站都有反爬的机制,比如同一ip不能短时间内访问多次,如何绕开?我回答了可以伪装ip,但是面试官告诉我这个是没用的,我们改了数据包的ip后在联通或者电信的出口其实ip还是分配给我们的ip地址,最后面试官告诉我这个问题的办法有两个,一个是控制访问频率,另一个是使用代理IP。
  10. 算法题:某餐馆有N张桌子,每张桌子大小不一样,有M批客人,每批客人有两个参数:a人数,b预计消费金额。在不允许拼桌的情况下请设计一个算法选择其中一部分客人,使得总消费金额最大。思路比较好想,将将客户按照钱从大到小,其次人数从小到大排序,用multiset维护当前剩余的桌子,然后二分找每一组客户最适合的桌子即可。

提前面总结:除了数据库,又发现了自己的一个弱项——面向对象,对于面向对象的理解只能说是了解一些,一旦有些深入的问题就不知道了,而且对于很多知识的理解还不够深,比如epoll、网络方面,只知道表面的应用,而不知其内部原理。

 

一面:

  1. 算法题:给一个文件,文件的每一行有一个int型的数,求所有数的第k大。又是经典的topk问题,我给出的算法是用大顶堆,和之前面试的思路一样,后来和学长讨论时候他说可以用快排的思想来写,找到一个数的位置,看比这个数大的数的个数如果比k大就向多的方向找,反之向少的方向找。
  2. 算法题:给定两个日期,不使用任何库求出中间有多少天。比较简单,为了防止算错,我直接求出两个日期距离元年的天数然后相减。

一面总结:只有两道题目,比较简单,没啥好说的。只是和我说下周一给我答复,结果过了一个多月都没有音信,我还以为自己凉了。

 

二面:

接到电话的时候我是懵的,面试官和我说这个是二面,而我明明已经经历过两次面试了。

  1. const char*、char const*、char* const之间的区别?这个问题答的有点尴尬,作为刚给大一讲完C语言基础的我,对于const char*和char* const的区别还是比较熟悉,结果突然又出来一个char const*,把我搞蒙了,答的有点乱,现在才知道char const*和const char*等价。
  2. #define和typedef的区别。
  3. 面向对象的一个问题,具体我不太记得了,总之我没答好。
  4. 大概讲一下网络爬虫的项目,这个可以说的比较多。
  5. 问了一个没听过的linux命令,答曰不知道。
  6. 对于tail -f命令,就是动态显示某文件的最后十行,如果让你写这个命令,怎么去写?我的想法是用while(1)时刻监视这个文件的最后修改时间,如果和上次的时间不一致,说明被修改,然后调整文件指针到文件末尾,用这个文件指针和上次保存的文件指针相减,如果差值不为0说明有添加的内容,则将两指针间的内容输出。
  7. 说一下TCP的三次握手的过程?刚复习完TCP不久,我把整个TCP连接从开始到结束,还有其中包括的流量控制,定时器,滑动窗口等东西全说了一遍,大概讲了20分钟,也不知道这是不是答非所问,反正他没叫停我我就一直说。
  8. 算法题:对于一个数,其二进制权重定义为二进制中1的个数,问比这个数大的最小的和其二进制权重相等的数是多少?手写算法,开qq视频,摄像头对着手,第一次遇到了这种情况,还是有点小尴尬,毕竟在家还穿着睡衣呢。我写了几个例子,给出了一个lgn的解法:对于二进制数100111000,我们只考虑最后一段连续的1及其后的数111000,比这个数大的最小的二进制权重一样的二进制数一定不可能是六位的,这个显而易见,所以构造一个7位的,即1000011,由于这段连续1的前面一定不可能是1,所以多的这一位可以直接放在0的位置而不影响整体的二进制权重,前面的位照抄就行了。手写代码加上注释拍了照片发了过去,结果面试官好像没看懂,我就给他证明了一遍,所以这个问题可能还有别的解法。

二面总结:

二面总体来说还行,不过面试过程中应该还有一些问题我不记得了,隐约记得有好几个地方我没回答上。

 

三面:

深圳的电话,和学长说的一样,三面就是聊聊人生谈谈理想,一共也就二十分钟吧,还和我解释了一下为什么面试周期这么长,是因为对于每个实习生都想好好考察然后争取能留下来。说一个印象比较深刻的问题:在你们的比赛过程中,有哪一场你是作为一个主力选手最终拿奖的?回答这个问题之前先向gs同学道个歉,虽然您带我装逼带我飞,但是我还是没有告诉面试官我的竞赛经历都是那根理工大粗腿带着我这根小腿毛的事实。我的回答是:我们的队伍比较稳定,这一年队伍组成都是我们三个,所以每个人都有各自的分工,所以没有谁是主力,只是我们的合作让我们拿了这些奖项。

 

HR面:

正在和室友开黑吃鸡,北京的电话来了,死于决赛圈之外,不说了,都是泪。具体问题没啥说的,印象较深的就是:哈尔滨还有一所工业大学,你能说说你们和哈尔滨工业大学比怎么样?我只想回复一个尴尬而又不失礼貌的微笑。

 

结果:不出意外马上会给发offer,对于百度的技术面感觉难度不算太大,ACM背景帮助不多,而且百度确实是比较想让实习生实习后留下的,问了我很多以后发展的问题,和有没有女朋友,女朋友以后工作的问题,初步印象还不错,只是效率有点低。

posted @ 2018-03-20 16:21  Torrance_ZHANG  阅读(590)  评论(1编辑  收藏  举报