明略科技大数据开发一、二面经及吐槽
明略科技
首先先吐槽一下。
1、首先是流程,我是面试前好多天,下午2点50多接到的电话,说了一下面试地点和时间,我想着都会有面试短信和电话。然后直到面试前一天晚上,都没消息,我还是从牛客上搜明略科技看到别人有同样的疑惑,有面过的大佬给解答了之后,才知道具体的面试地点。然后面试当天凌晨,来了面试地点通知的短信(:з」∠)
2、二是岗位有点混乱,看牛客贴已经看到好几个牛友被写错面试岗位了。。。有产品写成技术的、技术写错成产品的。。。到我这里也错了,大数据开发工程师给变成了普通研发岗,找了那边的工作人员记录了才好,不过好歹没有跨界太离谱。
然后是面经吧:
一开始一二面面试官都坐一起,一起面,后来二面面试官有事接电话去了,就只有一面面试官在面了。
一面:
1、我先看一下你简历啊。
2、自我介绍一下。
3、你的实习时长怎么都这么短啊,才一两个月。
4、你的求职意向大概是怎么样的?然后我问了一下公司内大数据的方向。
5、现在有一个文件,每个页面被访问的记录,记录的信息是timestamp、url、userid、action(包括open、close、refresh页面三种)。
①统计一下每个页面每天被访问的次数,即pv。Hive写了一下SQL,然后Spark RDD写了一下思路。在这个过程中大概用到了RDD的哪几个算子?map、filter(考虑其中close不属于访问,需要过滤掉)、countByKey
②求uv的话,key应该怎么设计?某天每个页面的访问用户数?说了一下Hive里的思路,然后Spark RDD的思路。RDD中对url做group by,map里对userid做distinct,再统计。若统计时会报内存溢出,会是什么原因导致的呢?答数据倾斜。这个问题怎么解决?随机前缀思路,打乱均匀分区。还有别的思路吗?自己想reduceByKey那些,类似MR中的Combiner,或者拆分RDD。如果要自己写方法去实现呢?group by的机制了解么?假如我们现在给你多台机器,你会怎么做?答文件拆分。单台机器可以拆分么?如何拆文件才能保证内存不溢出?面试官提示用哈希,讲一下哈希的原理?没想到具体的做法。
6、排序算***么?熟悉哪几种排序算法?讲一下冒泡的思路?讲一下快速排序的思路?写一下快排的代码。大概讲一下?算法的时间复杂度是多少?
7、堆是什么?大顶堆和小顶堆是什么?假如现在有一个堆,大顶堆和小顶堆,如果要把大顶堆转换成小顶堆,怎么做?如果要遍历一个大顶堆,一般有什么办法?
8、写一个二叉树的前序遍历吧。
9、B+树、B-树、B树了解吗?是怎么样的形式?数据库索引用的什么树?B树和B+树有什么区别?随便写一个B树?
10、什么时间毕业?
11、问面试官公司业务内容,工作方向?
二面:
3分钟结束,短小精悍(:з」∠)
1、刚刚那个问题怎么解决的?前缀?前缀也会有问题啊,你觉得会有什么问题?随机前缀怎么随机?随机数怎么生成?你怎么保证相同用户id不会分到两台机器上去?然后想通了,用userid做Hash去分区。
2、你后面的意向刚刚问过了吧。
3、工作地点在北京有问题吗?我问大数据研发不是有三个地方可选么,不是有南京么,我倾向于去南京。然后面试官说他这个部门没有南京,大部门有南京,但是那个部门重点在南京招,觉得北京的人不会去南京,所以压根没过来。说看看后面的话,联系南京那边再约你。
一面面试官挺好说话的,也挺和蔼。二面一开始还好,说了要去南京就。。。emmmmm,也怪我简历上没写意向城市。
发个面经给大家做下参考,希望之后的面试都能非常顺利