小米大数据开发二面面经
作者:蓝荆凌
链接:https://www.nowcoder.com/discuss/255702?source_id=discuss_experience_nctrack&channel=-1
来源:牛客网
前天面一面之前就牛客好多人在说小米劝退面,都招满了走流程,一面面的确实时间也很短,所以本来都觉得没有然后了,发了一面的凉经。没想到昨天收到了二面的通知,发一下面经造福一下大众,攒攒人品,希望早日突破0offer。
二面:
1、自我介绍
2、Hive里面count的用法?count(*)和count(列名的区别)。一般算数量怎么算。
3、Hive里面union和union all的区别?
4、join操作,left join、right join、inner join、outer join的异同?
5、where、having、group by、order by出现在同一个语句中的执行顺序是什么?having和where除了执行顺序还有什么的区别?where中能否用聚合的数,例如count(*)作为条件?
6、hive语句的运行机制,例如包含上面的where、having、group by、order by,整个的执行过程?
7、MapReduce作业执行的过程中,中间的数据会存在什么地方?不会存在内存中么?
8、MapReduce和Spark各自的优缺点?
9、若Spark要保存数据到HDFS上,要用什么算子?
10、Spark的*()和persist(),他们的区别是什么?他们和上面问题里的saveAsTextFile的区别又是什么?
11、Spark里面的transform和action你都用过哪些?列举一下。
12、Spark里的map和flatMap的区别?
13、将RDD中”1\t2\t3\t4\t5”这样的数据用flatMap展平。
14、HDFS若要将本地文件拷贝到远程的HDFS上用什么命令?答-put。还有没有其他的方法?从远程往本地拉文件用什么?若有一个文件夹d1,d1下有很多文件,将d1下所有文件聚合起来拉到本地的一个文件中。
15、HBase里面的RowKey的设计。
①有哪些要遵循的原则?不会,扯了一下项目里的RowKey设计。能不能写几个例子看一下?9位”id” + “timestamp”。
②若现在遇到id前缀基本一样的话在HBase里存储的话,会引发什么问题,例如“4009192~4010000”?
③如果让你去设计一下均匀分布,或者说优化一下这个rowkey的设计,你有什么好的方法么?扯了一下设计新key值使Hash尽量均匀。面试官说Hash有32位,原本id是9位,问会不会增加rowkey占用的空间大小。如果限制一下空间大小也要和之前尽可能的接近,还有没有其他的设计?
④如果从某一天开始,id增加了一位变成了10位,此时再用之前的规则是否会有问题,若继续增加位数呢?
16、算法题:有一个int数组{1,-5,6,5,0,2,-1,9,6,7},用最优的时间和空间复杂度,得到一个二元组a+b=0。求所有这样的a、b数据对。
①先用了HashMap实现。问时间复杂度?
②如果不允许使用工具类呢?考察底层的算法知识。扯了下先排序,然后双指针,问时间复杂度?问面试官得知数据有可能存在重复。然后让写双指针遍历的过程。说一下思路吧?
17、你有什么要问我的么?