百度网页搜索
原文链接:
主要叙述一下2016年百度网页搜索部面试的过程,顺便进行一定的总结。
面试官首先让进行自我介绍一下,我大概介绍了一下自己的基本信息,包含本科和硕士阶段的研究方向。
然后面试官开始提问,说我简历上有很多项目,咱们倒着说一下项目吧。
第一个是关于网络通信的项目。巴拉巴拉。。。项目简单介绍一下,然后面试官提问项目相关问题。。。为啥用UDP,不用TCP,TCP和UDP的主要区别。。。网络问的很少。
第二个是几个JavaWeb项目,面试官开始问了,框架主要是什么,前端用了什么实现的,js知道哪些函数库,分别是怎么用的。 然后又问了一些spring的东西。然后问了一下设计模式,我说了会单例模式,他就让讲一下单例模式的适用情况,问到了double check的实现和作用。
第三个是我的一个嵌入式项目,巴拉巴拉讲了一下,到这里,面试官说做过嵌入式的那肯定对操作系统非常熟悉吧,然后开始一系列操作系统的问题,线程与进程的区别?javanew之前和之后的区别?堆和栈里分别存了什么?Java的System.out.println()这句话对于操作系统是怎么实现的?什么是系统调用?表示这一块被问的很方啊。
第四个是一个大数据项目,首先让简单介绍一下,没有细问。知道我用的是Spark,他让我讲一下Spark和Hadoop的区别,为啥要用Spark,同时还问了一下Spark源码的部分,包括RPC这块和network这一块的实现和一些主要的函数。
到这儿,基本的问完了,然后开始做题,是一个比较简单的题,就是二叉树镜像的问题,相信刷过剑指offer的同学都能很轻松就解出来。当然用了两种方法,递归和非递归(用一个栈辅助)。一面完成(1小时左右)。
本以为一面肯定跪了,结果很快二面就来电话了,面试官首先让自我介绍一下。。然后巴拉巴拉介绍。
然后开始提问,又是那一套,TCP和UDP的区别?滑动窗口协议?为啥TCP比UDP占用资源多?TCP报文格式?然后又问了一下数据库的东西,简单问了一下数据库事务的四大特性。
然后着重开始问大数据项目,首先是Spark怎么进行性能调优,过程中遇到过什么问题,怎么解决的,数据量有多大等。然后面试官开始揪着一个问题进行深入提问,比如原来类似于合并两个文件,同时统计Top K,并且要保证实时性,对这个问题反正讨论了好久呢。最后比较蛋疼的是,面试官总结了一下说,可能现在好多是我们现在技术无法实现的,但我们必须有那个想法,有想法才能去慢慢实现,也是醉了。
因为top K 问题肯定涉及到堆的操作,面试官想让我写一个堆排序。。但他可能考虑时间长。。结果就让我说了一下思路。。顺便又说了一下快排和归并排序的思路。
一切都问完了,开始写一个题,大概就是字符串变整数的问题。需要考虑正负号,是不是数字,有没有越界等问题,都是剑指offer上的题,很简单的。
最后,面试官让我问他问题。。至此,二面结束(1个半小时)
三面感觉对方是一个部门领导吧,很有礼貌,面试之前先短信我什么时候有时间,非常客气。嗯呐,印象很好。。嘻嘻。
开始面试,首先老规矩,自我介绍一下。。然后问了一下数学建模比赛,做的啥和当时的分组情况。
然后开始简单问项目,这边已经不问基础知识了,大概把项目简单讲一下。。他可能在宏观的角度上提一些问题。
然后简单粗暴,开始做题。一个无序数组,把它变成A< B > C < D > E ,这种顺序。反正是不断优化吧,先想了一种O(nlogn)的方法,后来又想了一种O (n)的方法,也比较简单。
然后面试官开始问一些不是技术的问题了。比如怎么看待加班?如果有压力了怎么缓解?啥时候毕业?现在学校是在哪?什么校区?明年入职前会是一个什么状态?入职三年后希望自己是一个什么状态?巴拉巴拉都是这种问题。。。还有好多忘了。。。。HR的既视感。。。然而好像并不是唉。
最后让我问他问题。至此,三面结束(1小时)