1.自我介绍
2.熟悉flink还是spark
答:flink
3.介绍下flink架构吧
答:这里越深越好,我就讲到了flink的jobmanager(dispathcer,jobmaster)和taskmanager
4.flink有哪些算子?
答:map,flatmap,filter,window,union等,RichFunction提供生命周期open close,上下文环境。
5.flink你知道有哪些窗口吗?计数窗口能介绍下吗?
答:时间窗口有滚动滑动会话,计数窗口有滚动滑动。
6.你知道窗口什么时候触发吗?
答:讲了一下窗口触发器trigger
7.你能介绍下flink有几种窗口触发器吗?底层怎么实现的。
答:讲了一下事件时间触发器和处理时间触发器的原理。
8.假如flink窗口突然不触发了,你怎么排查。
答:这里我答了一下排查上游其中一个流是否断流,如果其中一条流断流可以设置withIdleness空闲时间,让窗口的最小水位线机制去掉那个断流的依赖,靠另外的流触发计算。
这里面试官提了一个场景,如果小米商城半夜就是没人买东西或者数据量很小导致水位线不能及时更新,(就是每条流都没数据)那你该怎么触发呢?利用窗口触发器ProcessingTimeoutTrigger
9.口述一道sparksql题
10.sparksql优化
答:
(1)sort by 代替 order by,需要结合distribute by使用。
(2)count(distinct)优化
(3)列裁剪
(4)谓词下推
(5)优化MAPJOIN阈值。
(6)定期合并小文件,防止maptask数量过多
(7)多用explain看执行计划,避免笛卡尔积等意外情况
11.执行计划怎么看
每个stage是根据shuffle切分,执行计划会写上具体的操作符和数据量和JOIN规则。
12.distrubute by 会发生shuffle吗?根据什么字段distribute by? 这个和cluster by的区别是什么?
13.反问:
(1)小米数仓具体是做什么数据?
(2)为什么岗位介绍上写了机器学习?面试官说这个有专门团队去做,跟数仓关系不大
牛客字数限制,答案写的有点简略
小米面试官的技术感觉很强,态度好,体验很不错,希望以后有机会能进吧。
#大数据开发#