对于2015年的百度校招,我投的是移动研发,北京的岗位,笔试时间是9月21日,截至到9月26日三面全部结束。经理面留下了我的简历,究竟是否通过还得看百度的结果了,总结一下,百度的题有一个特点:考的很细甚至细到一行代码,一个变量的命名。
分析一下百度的笔试,三道问答题:
1.问答题:
1)TCP/UDP的区别,以及各自在应用层的协议举例。
2)Android/IOS 中固化数据的方式。
3)下面这个函数的缺陷:(这个有点想不起来了,好久不研究 了,印象不深刻了)
char * initMem(char *p)
{
p=(char *)malloc(100);
return p;
}
void test()
{
char *p=null;
initMem(p);
printf(p);
}
2.编程题:
1)用C/C++实现字符串的反转。
2)(1,2,3(4,5,6),7,8)打印出1,2,3,4,5,6,7,8,即去括号,若出现括号不匹配,标识错误。
3)分别实现二叉查找数root中两个节点的最近相连的双亲节点:递归,非递归函数。
4.系统设计题:
是一个基于终端上的LBS+IM功能的架构设计,包括四个功能:
1)用户打开LBS服务
2)用户通过短信or 微信邀请好友加入LBS
3)用户查询打开LBS的用户;
4)用户选择LBS用户并发送IM 文本or 语音信息。
划出架构设计图、功能图,分析这样设计是如何考虑的。
http://blog.csdn.net/aa747604141/article/details/11882165
第一道基本都会,只要计算机专业基础课程好好复习了没啥问题,
第二题考的是Android的,这个估计得靠自己做过并且总结了。
第三道考的是对一段函数的评价,(这个我做的也不好,长时间不搞C了,指针实在是不敢乱用啊)我主要关注的是健壮性以及是否浪费空间这两层。
三道编程题,这个就不说了,如果自己写过很多代码,注意代码的整洁性和健壮性应该问题不大,而且近几年好像没咋考过很难的算法,足见百度是更注重基础的。
系统设计题,靠个人分析了,今年踩了个狗屎运,IM+LBS是我的毕设,把我做的项目的体系结构划了划,说了说划分模块,设计模式选择的理由。
我是第二天早晨的一面。一面考察的比较多的是我的项目细节,这个我想只要是自己做的应该都没啥问题。我是搞Android的,这个面试官明显是个Android的高手,聊天时候就感觉到了,随后就是Android,从四大组件,到生命周期,再到数据持久化,最后又谈了谈我的项目中某一块如果现在要我改进我怎么样重构代码。(因为研一时候android刚接触,也没弄过service,好多耗时的任务也是用thread写的,所以我说了说service),他就问了问service如何启动/停止,其中的数据怎么和Activity通信。最后,叫我写个程序:
两个线性表合并成一个线性表。
面试官需求很不明确,很多条件都没说,我没敢立刻下笔,赶紧问了问特殊性,果然在我再三确定之下,他说出了题目要求:A、B是两个递增的线性表,我们需要合并两个线性表并保持单调递增。
OK,题目很简单,可是明显考官考的不是你的代码怎么实现,而是你思考的过程。在写代码之前,我考虑了6中测试用例,并和考官说了说,然后才开始写,并在写的过程中告诉考官哪段代码可以通过某个测试用例。主考官点了点头,在计算机上写了些什么,叫我下去问HR还有啥后续安排。一面挺高兴的,感觉把我这一年多做的项目的很多细节都和面试官交流了,而且有些自己的问题咨询了他,他还给了我解决方案,收获也不少。
第二天下午,也就是24号下午收到了二面通知。这期间我上午我又参加了TX的一面,待我后续再聊TX的。很遗憾的是,百度和TX的二面冲突了....无奈之下,我毅然选择了百度,因为感觉百度很实在,在面试的时候愿意倾听你的想法。
二面是25号的下午。这次二面估计得有一个半小时,总之二面出来的时候感觉把脑细胞全杀完了。这个面试官明显不是那个搞技术细节的人了,问的就是偏理论、偏语言细节了。同样,先是自我介绍,介绍的过程中考察个人项目经验细节。随后就是基础知识考察:《数据结构》、《操作系统原理》、Java的String(经常在群里给别人解答疑问对这块很有帮助,正所谓无心插柳柳成荫是也!)、ArrayList/HashMap的源代码实现细节(这里面,得亏我没事喜欢研究研究源码,对ArrayList源码认真读过几遍,把很多细节都说出来了,引起了他的兴趣,呵呵荣幸啊)。
最后写了2个算法,一个是动态规划的算法,一个是大数据取中间值的算法,第一个很简单。不说了,第二个是在和他商量和指引之下写出的。面试结束后,他叫我问他问题。我说,实事求是的说,我的基础不好,数据结构和操作系统原理很多东西我都只是了解而已,您能不能给我一个评价呢?他也评价了一下。我说,我能看出百度的招聘确实要求很高啊,很多东西如果不是自己真正去认真实践过,真的说不出来。他开始陷入沉思,对是否叫我过二面有点纠结。(估计是在基础薄弱和面向对象基础还不错之中抉择吧)。最后,好,这样吧,你下去问问HR吧,看后续如何安排!(不知道这是不是潜规则)
那天晚上其实都开始准备放弃了,估计没戏了,谁知道半夜居然收到了3面的通知。真是意外啊。26号下午1点,再次来到了唐城宾馆。三面的面试官明显比1、2面的年纪大不少,应该是个总监之类的,很和蔼,有一种叫人猜不透的眼神。这一面终于没再问技术了。面试的过程中也很融洽,
他先问了问我的经历,和这些年比较成功、叫自己难忘的经历。我给他讲了讲当年考研三跨的痛苦经历以及读研期间如何拼搏的经历说了说,以及我选择软件这行的原因说了说。
然后他又抓住我读研期间问我是怎么学习的,读了哪些书?我就把BOB大叔的《Clean Code》、《程序员的职业素养》这两本书给他说了说,觉得和这帮人比,自己惨不忍睹啊...他又问了问在实验室期间很导师和同学怎么相处的。我给他说了一些给导师做项目期间导师关心我的事,和同学在项目上有争执靠数据说话的事,他都点了点头。
最后问了下,如果你下半年来百度上班,你怎么规划刚入职那半年呢?其实,大家都应该知道,无论你在学校在NB,获得啥ACM大赛,在百度这样的大公司面前,刚去一定得向一块空的海绵一样去了。我的回答是:间接经验。我知道百度刚去时候会有一位师傅带我,我会争取一切可用的时间去跟他学习技术,学习良好的编程习惯。问问同事们平时读什么书,比较好的自己读一读。
对了,他还问了我有多少offer了,问我昨天问啥冲突了来百度不去TX,然后改我问他了,我问了这样几个问题:
1.您能不能简单评价一下我,就算今天面试失败了,我想知道我据百度还有多远呢?
2.能不能给我讲讲您毕业的经历,激励一下我们这些小辈?
3.本科生和研究生刚入职有啥区别呢?
面试结束了,他留了我的简历,问我下去问问HR还有啥事没?
Now,结束了
总体评价一下,百度的这次经历,是第一次让自己觉得挺满意的面试,之前很多面试所避讳的东西都注意到了。期待能拿到offer吧,毕竟,“简单,可依赖”,可依赖不是那么好做到的啊!