昨天正式确认了百度的offer,宣告着我的秋招正式结束了,虽然我的秋招还算是比较顺利,没有他们所说的那样痛苦不堪,但是我还是想把我面试过程中经历的面试题目共享出来,供大家参考,秋招面试的难度整体上要比实习略难一些,不过只要认真准备的话,我觉得还是很容易拿到心仪的offer的,下面我将给出我秋招面试过程中经历的所有面试过程,仅供参考。
后台开发工程师,Java开发。
美团点评是实习转正,整体难度并不难,下午三点安排在美团B座7楼面试厅进行面试的,一个酷酷的程序员小哥哥面试的,首先介绍的是我实习这几个月做的东西,以及遇到的一些困难。在面试过程中,会对你实习中遇到的困难和挑战各种深问,建议这个题型还是要多准备准备。画了项目的架构图,以及实现的技术的一些细节,基础也问了一些,比如计算机网络,三次握手,TCP拥塞控制和流量控制,数据库的索引机制等,最后出了一道算法题,三数之和,这是LeetCode的原题,可以参考我的这篇博客:
数据挖掘和机器学习研发工程师,大数据架构方向。
我遇到的百度的套路是上来先自我介绍,大概说一下个人情况,面试官就问,你数据结构和算法怎么样,我说还不错,然后直接开始做题,印象里一下做了四道算法题,都是在纸上手撕代码,是算法都做出来之后才进行的后面的面试,我在想如果我算法没做好,很可能就谢谢再见了。四道算法题目不是很难,主要还是考察思维逻辑和基础吧。
快速排序,基于单链表实现(传统的前后指针的方式实现起来比较困难)给定无序数组,查找中位数(基于堆排序)扑克牌第一张放桌子,第二张放到最后,第三张放桌子,第四张放在最后,以此类推,求最后桌子上上1到k,还原原来的扑克牌什么样完全背包问题
第一题可以参考我的这篇博客:
第二题的解题思路是:
首先将数组的前(n+1)/2个元素建立一个小顶堆。
然后,对于下一个元素,和堆顶的元素比较,如果小于等于,丢弃之,接着看下一个元素。如果大于,则用该元素取代堆顶,再调整堆,接着看下一个元素。重复这个步骤,直到数组为空。
当数组都遍历完了,那么,堆顶的元素即是中位数。
思路有了,实现起来还是有一定复杂度的,要多注意。
第三题第四题都是常见题,第四题可以参考我的博客:
剩下的就是考察一些常见知识点了,包括基础知识和框架的,大致如下:
百度一面二面三面是在一起面的,面完就直接给我要了身份证号,说应该没问题,哈哈,就这样确定了百度offer,还是挺幸运的。
数据研发工程师,离线大数据处理。
映客直播是一个中午面试的,吃了饭,就顺便过去了,因为当时在美团实习,而映客就在望京附近,特别近,骑自行车过去的。映客没有自己的楼,是一个大厦里面,进去还得登记。上去了感觉里面装修还不错,有个很大的猫头鹰,等了一会,面试官就来了,刚来感觉人挺严肃,聊了一会感觉我会的挺多,就跟我扯了点别的,哈哈~问的东西不是很难,比较基础,当然也手撕代码了。
自己实现多线程MQ,用数组实现队列,保障数据安全性加锁说一下mapreduce的shuffle机制,map阶段是快排,reduce阶段是归并排序说说产生数据倾斜怎么办,优化措施(重写partition,加上负载因子,再次哈希)什么情况下会产生数据倾斜,比如groupby,join,count(distinct)等写SQL语句,左连接关联查询写500亿top10问题,写hive问我会不会执行到orderby语句线程有哪几种状态
数据倾斜问的很多,大家可以总结一下,参考这篇博客:
就面了一面,面试官对我的评价还不错,面试完就让我过去先实习,我说实在抱歉,还在美团呢,而且得先回学校做毕设,他说他们比较缺人,希望我快点过来,我说实在抱歉,他们就说没事,等12月份还可以再聊聊。
数据研发工程师,实时计算。
当时也是八月份,阿里北京这边组织了一个夏令营,因为也在望京,而且是美团旁边,我就过去参加了,上午扯了好多阿里有多牛逼,下午就开始面试了,这只是一面,估计是为了挑选候选人吧。我是最后过去的,我去的时候都没多少人了,然后跟我的一面面试官大概谈了谈,主要是了解一下,面试官人很好,后面也帮助了我很多,很感激他。主要问的是实习经历和项目经历,然后问了下对大数据体系的看法,一面还是很简单的。
从二面开始,就变得难了,问的开始越来越深了,各种基础知识问的越来越多,果然符合阿里的作风,阿里就是特别重视基础,而且各种知识点要求也很高。
算法最长重复子串说一下成长最快的收获最大的项目分布式缓存的负载均衡session共享一致性哈希算法离线hadoop原理,写文件流程,什么时候都返回成功,说项目实时storm和flink原理,编程模型,说项目Topk解决方案如何数据去重,set在内存宕机怎么办你了解的hbase按照列存储和关系数据库行存储区别并发方案,针对优酷世界杯lock和synchronized区别两个线程交替打印字符串实现NIO模型,怎么设计如何涉及分布式可靠的消息队列,怎么保障职业规划介绍实习项目,mafka如何保障消息不丢失,发送一次介绍离线大数据项目,数据处理用hive的场景介绍课题项目,redis应用场景,存储方案Storm编程模型Python2和3的区别,多线程咋回事Hive如何防止数据倾斜,对Hive的理解MapReduce,map阶段,reduce阶段,combiner阶段Yarn阶段介绍集中在同一个reduce,分桶Hashmap,Hashtable,concurrenthashmap数据库建模Hive分组取topk请求如何处理url数据仓库数据库索引
建议要是面试阿里的话,先要把基础知识都要认真过一遍,不然很容易被虐,哈哈,阿里算法也会考察,不过感觉没有百度头条那么多,相反框架原理啥的,Java基础啥的反而问的比其他公司更深。
服务端开发工程师,Java方向。
这个公司是听同学说的,貌似给钱很多,就去试了一下,感觉这个公司特别重视算法。人文关怀很棒,去了有免费的零食和水果,大家坐在一起吃东西,叫到谁谁就去面试,一共经历了两面。第一面上去大概自我介绍完,就直接写算法,因为我写的比较快,就多写了一道题,当时没用递归的方式,结果面试官看我的代码看了好久,说写的太复杂,哈哈~二面面试官是经理级别的,说普通话不标准,感觉不太懂大数据,他让我介绍项目,我说了个大数据的项目,感觉兴趣不大。后来就全程在写一道ringbuffer的题目,猿辅导的面试题目如下:
自我介绍,说一下项目JVM问了一些,JVM模型啥的HashMap原理,底层线程池的内部实现原理TopK问题负载均衡问了一些一增一减两个链表合并最长回文子串两个变量实现ringbufferHadoop读写文件过程最大问题和挑战
ringbuffer那道题是环形队列,即采用两个变量判断队列为空,判断队列为满。可以参考我的博客:
后台研发工程师,C++和Java方向。
腾讯先是腾讯云,存储方向的部门面的,全程在问C++,我说明自己很久不用C++了,面试官开始问我很多基础,不过当我说到Java一些术语,面试官一脸懵逼,他说的一些术语,我也一脸懵逼,就这么尴尬了一个小时,哈哈,不过算法题和基础知识答得还不错。
字符串判断包含判断一棵树是不是另一个子树大头传输和小头传输三次握手,滑动窗口epoll,select模型TCP和UDPLinuxtop和ps操作日志的一些指令红黑树SortSet进程通信的方式,哪种方式速度最快
算法工程师,机器学习方向。
AiBee是一个创业公司,主要是搞AI的,好像创始人是原百度的高管。当时看到群里有人内推,就过去了。但是感觉面试安排的不合理,过去了之后,hr说面试官在开会,在那里等了一个多小时,面试官才来,都快中午了,就草草问了两道题目,就结束了,整体的面试体验不是很好,不知道别人什么感受。
KMeans,手动实现算法判断一个点是不是在三角形内部,写算法查找含有某些关键字的进程,一起杀掉(linux指令)
大数据研发工程师,分布式计算。
自我介绍,详细介绍项目,主要是美团实习项目,然后画项目架构图。
五道编程题目:
本来想的是采用map的结构,最后其实是采用堆进行存储,在Java中可以看一下PriorityQueue,内部是采用堆进行实现的。
2.
中序遍历,存储根节点到每个叶子节点的路径。
3.求平方根,两种方式。
#输入:整数n#输出:n的平方根#精度10^(-5),定义域:实数
(1)二分法
publicstaticdoublesqrt(doublet,Doubleprecise){doublelow=0,high=t,middle,squre,prec=precise!=nullprecise:1e-7;if(t<0){thrownewRuntimeException("Negetivenumbercannothaveasqrtroot.");}while(high-low>prec){middle=(low+high)/2;squre=middle*middle;if(squre>t){high=middle;}else{low=middle;}}return(low+high)/2;}(2)牛顿迭代法
publicstaticdoublesqrt_(doublet,Doubleprecise){doublex0=t,x1,differ,prec=precise!=nullprecise:1e-7;while(true){x1=(x0*x0+t)/(2*x0);differ=x1*x1-t;if(differ<=prec&&differ>=-prec){returnx1;}x0=x1;}}(4)两数之和为定值
(5)遍历一遍用两个指针实现删除倒数第k个单链表节点
classNode{intval;Nodenext;}publicvoiddelete(Nodehead,intnum){Nodep1=head;Nodep2=head;intindex=0;while(p1!=null){p1=p1.next;index++;if(index>num){p2=p2.next;}}if(p2.next==null){p2=null;}else{p2.val=p2.next.val;p2.next=p2.next.next;}}三面过了几天,上来同样是介绍项目,自我介绍一系列,感觉宜信的面试过程没有过于重视基础知识,主要还是围绕算法展开,最后同样来了一道算法题,求若干个线段的最大重合个数,可以详见我的另一篇博客:
宜信的面试比较注重算法,尤其是研发岗,按照同一个模式进行面试,具体到大数据开发还是Java开发等,都是去了以后再进行分配,整体来看这个公司的面试还是有一定难度,公司在互联网金融也有一定前途。
大数据研发工程师,实时计算。
快手是有一个学长内推的,远程面试的,整体感觉不是很难,感觉快手最近如日中天,这个公司还是不错的。有感兴趣的小伙伴可以考虑加入,快手比较重视基础,问的东西和阿里有点类似,总体来看还是偏难的。
印象里面的面试题如下:
因为之前实习过了华为,没有去,所以通知只需要参加一轮终面即可。因为自己被选入了华为的一个“领鹰计划”,最后签约的时候还给涨薪了,当然最后没有签华为,觉得华为还是不错的,可是我还是想去互联网公司。华为面了一面,这次主要问了问项目,基础知识也问了一下,反正不难,跟聊天似的,华为校招看学历,看来国防科大的牌子还是挺有用的,面试题想不起来了,总之,挺简单的,主要是聊为主,面试官人很好。
总之,秋招面试算是结束了,这一年,是我记忆深刻的一年,通过面试,我的水平提高了很多,希望去了公司还能好好努力,下一次,争取可以面试别人,嘿嘿~还没找到工作的小伙伴,加油哈!