小米面试题
学长1
大家可以投一下小米的推荐算法。
一面:问两个有序大数组合并成一个数组的最佳方法,还有快排,问了所有项目。
二面:是问推荐算法的业务实现,还有如果你自己做一个推荐,你会怎么选择模型、算法。
三面:数据结构的查找,新增,删除的时间复杂度、还有各种数学问题,然后写了二叉树的查找、还有根据算法题写了一个递归,差不多就这样就过了
1)技术部分
(1)Java8的新特性?
(2)Java8的hashMap为什么采用数组+链表+红黑树?
(3)垃圾回收的算法,CMS和G1的比较,用什么监控JVM?
(4)Kafka对接SparkStreaming?
(5)线程池好处是什么,什么场合用?
(6)Zookeeper的选举机制,以及我们还可以用Zookeeper做些什么?
(7)Flume采集数据的优缺点,还有什么可以代替它,也可以通过自己公司的业务情况自己开发。
(8)Spark Streaming和Storm,Flink的比较,以及各自的优势?
(9)怎么从10亿条数据中计算TOPN?
学长2
1)基本信息
(1)面试地点:小米6期
(2)面试时长:共2个半小时
2)一面(下午3点30分到4点10分):
(1)自我介绍
(2)Spark Streaming和Flink区别
(3)MR和Spark引擎的区别
(4)引起Shuffle的算子有哪些?
(5)Flink+Kafka保证精确一次消费相关问题
(6)Zookeeper的应用
(7)Java中HashMap和TreeMap区别(记不清是不是这个问题了)
(8)SparkStreaming保证精确一次消费
(9)给出数据倾斜解决方案
(10)被问到任务划分的源码(DAGScheduler划分)
(11)给一个整形数组,找出最大的连续子集
(12)给一个数组,一个值,找出第一次出现