津爱改装车|小米大数据岗位面试题汇总

小米面试题
津爱改装车|小米大数据岗位面试题汇总学长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?
学长21)基本信息
(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)给一个数组 , 一个值 , 找出第一次出现的两个数的和等于这个值的下标并存入List中(好像Letcode第一道题 , 双层for循环)
(13)Spark中划分宽窄依赖的底层原理:只说Shuffle划分Stage没用
3)二面(下午4点25分到5点10分):
(1)自我介绍
(2)手写SQL:(看着你写 , 注意)
表t1
页面id 点击 浏览 日期
page_id view visiable date
0 0/1 0/1
1 0/1 0/1
...
表t2
品类id 页面id
border_id page_id
a 0
b 1
a 3
a 4
b 0
...
找出各个border_id的view , visable个数 (join group by where count(if)......)
(3)JVM内存和调优
(4)Redis数据类型 , 事务(凭印象说的multi,exec,watch) , 持久化方式和区别 , Redis中zSet底层实现是什么?
(5)Redis问的很细
(6)跑任务用的什么(Azkaban)?定点定时跑还是周期性跑?
(7)手画星座模型
(8)业务过程 , 维度 , 事实
(9)手写单例模式
(10)实时统计过的指标
(11)如何从0到1搭建数据平台?
4)三面(下午5点10分到5点30分):
(1)自我介绍
(2)B+树和B树底层 , 与二叉树的区别(手画) 不太会
(3)给你两个矩阵(txt文件 , 以\t分隔) , 让你用MapReduce实现两个矩阵相加并输出(每行打行号标记)
... ...
5)四面:(下午5点35分到5点50分)
(1)了解上家公司情况
(2)入职相关事情
学长31)笔试:
(1)链表两两反转(搞定)
(2)验证二叉树是否符合以下条件:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1 。 (我说我对二叉树不咋熟悉)
(3)求一个序列中的最长上升子序列的长度(搞定)
2)面试: