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


(1)Flink的状态后端
(2)说说rockDB状态后端 , rockDB做状态后端有啥好处和缺点
(3)说说HDFS状态后端 , 它是怎么存储的状态的
(4)说说Flink中的keyState包含哪些数据结构
(5)Redis常用数据类型
(6)SparkStreaming是如何处理数据积压的 , 说说反压机制的令牌桶算法
(7)简单谈谈JVM垃圾处理的算法 , 了解多少 , 分别是什么
(8)谈谈JVM内存的分布 , 方法区中都存些什么
学长41)语言基础:
(1)String类可以被继承吗?为什么?
(2)HashMap , HashTable , ConcurrentHashMap的异同?
(3)Java单例模式 , Scala语言如何实现?
(4)实现快速排序算法
(5)设计4个线程 , 其中两个线程每次对j增加1 , 另外两个线程对j每次减少1 。 写出程序 。
2)Hive
(1)把每科最高分前三名统计出来 --成绩表Score(student_name,student_no,subject_no,score)
(2)找出单科成绩高于该科平均成绩的同学名单(无论该学生有多少科 , 只要有一科满足即可) --成绩表Score(student_name,student_no,subject_no,score)
(3)一个表 test(name,price) , 构建一个新表 , 将name相同的 , price所有价格合并到一个字段里面
(4)如何将题3中price合并后的prices字段再拆分为多条记录?
3)Spark
(1)用户访问日志文件有两列 , 分别为日期和用户ID:(date , user_id) , 使用Spark统计每天的访问的记录数和用户数 。
(2)在Spark中 , 代码的执行位置:
dstream.foreachRDD { rdd =>val where1 = "执行位置1"rdd.foreachPartition { partition =>val where2= "执行位置2"partition.foreach { record =>val where2 = "执行位置3"}}}学长51)基本信息
(1)2019年11月10号:
(2)面试地点:小米6期
(3)面试时长:共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)如何从0到1搭建数据平台?
4)三面(下午5点10分到5点30分):
(1)自我介绍
(2)B+树和B树底层 , 与二叉树的区别(手画) 不太会


推荐阅读