干货满满,202303最新各大厂大数据核心面试题

10 篇文章 1 订阅
5 篇文章 1 订阅
面试者在面对字节跳动、阿里巴巴等公司的面试时,遇到了关于Hive优化、数据倾斜解决方案、SparkSQL性能分析、Flink生产问题以及数仓下游业务交互等深入问题。面试官关注实际生产环境中的案例和策略,对理论知识与实践经验的结合有较高要求。
摘要由CSDN通过智能技术生成

最近有群友私聊小编,说面试了很多家,面试题大同小异,但是回答的不够理想。

1、 字节、阿里、拼多多、中移杭研、海亮等:Hive做过哪些实际优化?必须结合实际项目来谈,结合我实际离线数仓里做的优化?

本人回答:

1.小文件的优化(解决方法是combineHiveinput、merge、jvm重用等)

2.数据倾斜的优化:

2.1分组聚合导致的数据倾斜要map-side在map端预聚合,或者打开set hive.groupby.skewindata=true;启动两个mr,第一个MR按照随机数分区,将数据分散发送到Reduce,完成部分聚合,第二个MR按照分组字段分区,完成最终聚合。

2.2 join产生的数据倾斜,null值能过滤的就过滤,不能过滤的就key加随机数;大小表join使用使用map join;大表和大表join,可以分桶或者启用set hive.optimize.skewjoin=true;或者大表加随机数打散,然后扩容小表。

面试官追问:

1. 阿里:上面的回答都是理论上的,有没有实际中的hive的优化,高级一点的?(阿里面试官不要配置参数开关这种优化,听他的意思是有些sql类型的优化,或者其它生产中的优化)

2. 字节:你说的分组聚合的数据倾斜,利用map-side在map端预聚合,但是如果倾斜的key分布比较散乱在不同的mapTask上,每个mapTask预聚合的条数有限,预聚合后还是有大量倾斜的key要做shuffle怎么办?你这样map-side效果也不明显啊?

3. hive的优化中不要讲那些count(distinct by),数据倾斜等等这些,讲一讲实际生产中到底用过哪些优化?

1.1字节(上海):

1 、sparkSql跑得特別慢,怎么分析原因?(我讲了数据倾斜,explain查询引擎等,面试官很不满意)

2、离线项目中你做的亮点(这题很多家都问频繁挂)?

2、字节、阿里:两张大表要做join,一张是产入表,一张是产出表,各自都是一亿行左右,而且里面都有热点key(join的时候会数据倾斜),你怎么解决?

我:可以先进行采样,确定热点key,把两种表热点key对应的数据单独where过滤出来进行mapJoin,其他没有产生热点的数据继续走common join。

面试官:如果产生倾斜的热点key很多呢?你都要采样一个一个把这些过滤出来再join吗?

我:可以启用set hive.optimize.skewjoin=true,会自动扫描超过100000行的倾斜key数据,把他们做map-join,其他没有产生倾斜的key会进行common join

面试官:(面试官不太满意,回答手动打散大表扩容小表也不满意。。)把这些产生数据倾斜的key单独拎出来做join,为什么就是map-join?如果不是map-join,这些产生数据倾斜的key做join不还是在一个task里面会产生数据倾斜吗?

3、字节问如何统一指标口径?阿里问如何统一口径?(这题是最惨的,面试官问完就对我印象很不好)

我:我们初期公司指标混乱,各业务部门出人梳理所有指标。将指标拆成原子指标,将派生指标拆成=原子指标+统计周期+统计粒度+业务限定,以后业务方需要的指标,都必须先在我们开发的web系统上检索有没有现成的指标,有的话看看指标的定义是不是符合业务方需求的;如果没有的话,就要看埋点数据有没有,没有埋点数据就要新增埋点,有了埋点数据的话,就得在web平台上提需求,新增指标,评审,数据平台和数仓负责人都通过,该指标才能开发并添加上线web系统,给业务方用

字节:你怎么强迫大家都遵守web平台的规则呢?

阿里:你这个是说怎么建立的指标体系吧?我是问你怎么统一口径的?还有你这套web指标系统到底是服务数仓的同事还是服务业务方产品方的?

。。。。这个问题百度了很久,没有查到,看您b站上面的视频好像有这个题目,但是视频内容讲的是hive的

4、阿里、喜马拉雅:flink遇到过哪些高级点的生产问题?把解决问题的过程说出来?

我:flink cdc1.x经常启动报错,全表扫描时锁业务库表;Flink sql 中left join会产生撤回流,导致重复数据;flink的数据倾斜,flink的背压。。。

阿里:有没有遇到高级一点的?或者全链路的也行。。。

。。。。这个问题又没有答出来。。。

5、flink数据积压怎么办?(我说增大kafka的并行度,面试官问还有吗?我说不会了,他不太满意)

6、阿里、字节:离线数仓和实时数仓的下游业务有哪些?报表是给谁看的?用户画像从你们数仓里取哪些数?实时指标怎么检测对不对?和业务方怎么打交道的?指标都是谁提的?你们数仓自己没有提指标吗?

我:离线数仓下游有报表和用户画像;实时数仓下游是实时报表和推荐系统;报表给用户画像和推荐的同事看,还有老板看;

实时指标的质量监控,不会,每天离线指标会覆盖实时指标一次;

很少和业务方打交道,他们提指标我们开发;

我们数仓很少自己提指标

7、数据质量怎么监控的?这题问得很深,接下来还问数据治理

数据质量监控我们有web系统,底层调用python+shell,shell中写sql做以下监控:单表数据量监控、单表空值检测、单表重复值检测、单表值域检测、跨表数据量对比等。

数据治理:这个回答得不好,因为我说得是表健康度=计算健康度打分+存储健康度打分+合规健康度打分等加权。面试官说你这些都是打分,有没有实际一点的?

8、三一集团:

8.1 flink更改并行度后重启重新打包提交,程序却起不来遇到过没?面试官提示了一下,是checkpoint没有感知到并行度的改变。。。(还是没有回答出来)

8.2 假如flume积压,如何加快消费(我回答是增大flume内存和增加多台flume机器、节点等,面试官说不对,就单个flume的话怎么办,提示说flume只能按照文件读吗?依然想不通)

8.3拉链表耗费性能(拉链表每次都要和最新分区9999-12-31中的数据join),有什么办法提高拉链表性能吗?

8.4数仓建模自己独有的经验谈谈?你做过离线和实时那么久应该有自己的经验吧?

8.5谈谈你认为的流批一体?(我回答flink的API目前是支持流批一体,面试官问还有吗?)

8.6元数据的管理(不要说atlas,一说到atlas面试官就说不要聊了)

9、聚水潭二面

9.1 kafka的某些并行度上积压了数据,消费策略会如何?

9.2如何判断哪些指标适合实时,哪些指标适合离线?

9.3 flink的miniBatch还可以用来做什么?除了攒批做聚合以外?

10、美团

10.1 OLAP随机按照维度分组聚合遇到过吗?比如dws层宽表中的维度不能满足这些即席查询的需求,怎么办?我回答说是可以从dwd明细层取数,再关联维度层dim,但是面试官不太满意

10.2 你说你在离线数仓当中做了一些升级,除了引入了Maxwell做一些增量表的同步以外,你还做了哪些工作?(这题好多家面试都问过)

11、阿里健康

如何评价数仓建模的好坏?面试官见我沉默不语,提示说比如你的同事做了数仓建模,你怎么评价他建得好不好呢?

12、万能wifi

12.1我讲了一下我的离线数仓架构:Mysql会同步全量表和增量表到ods层,全量表每日Datax同步一次到维度层dim,增量表用Maxwell实时同步到dwd层。

面试官立刻追问:你的事实表的数据是当日实时来的,但是维度表的数据还是前一日全量同步来的,那么事实表就拿不到维度表的当日数据啊,维度的数据就不是最新的啊,你怎么解决的?

12.2 hive离线数仓脚本跑报错了,怎么排查?我说看日志+血缘关系,他说日志怎么显示?怎么看是哪些计算过程哪些字段产生的报错?后面是重新跑,从哪里开始跑?

13、拼多多、美团

13.1 flink每次重启需要多久?重启的这段时间,实时数仓的下游(业务方)消费不到数据怎么办?(沒回答出來)

13.2 flink数据积压怎么办?(我说增大kafka的并行度,面试官问还有吗?我说不会了,他不太满意)

13.3数据倾斜产生的原因?解决方案?(这题美团也问到,面试官追问要实际的生产方案,不要网上的八股文)

14、中移杭研

14.1你们ck应该有设置表数据失效时间(ttl)吧?有没有遇到过clickhouse 的ttl失效这类问题?比如说已经失效的数据过了一个月又出来了?我说没有遇到过呀。他说不对,你是ck的21.9版本吗?我说是的,但是确实没有遇到过。。。(面试官对我开始不信任了)

14.2 clickhouse的重分区partition问题(这题我就没懂他在说什么)

15、阿里、字节等几乎所有大厂非常关心数仓下游的应用,我回答说离线下游有报表和用户画像,实时有推荐系统,面试官会深问和下游方的关系,和业务方怎么打交道的?

总结:面试问最多的

sparkSql跑得特別慢,怎么分析原因?(我讲了数据倾斜,explain查询引擎等,面试官很不满意)

离线项目中你做的亮点?

就是离线数仓和实时数仓中,你做的是哪些工作?

负责哪些主题或者数据域?

离线数仓和实时数仓实际解决过哪些问题(高级点的问题)?

Hive实际做过哪些优化?Flink实际做过的哪些优化?

数据倾斜你在生产中碰到的是哪种场景,生产里是如何解决的,不要网上的那种理论知识?口径如何统一?

数据质量监控和元数据管理也是经常问的,数据质量监控(回答单表数据量监控、单表空值检测、单表重复值检测、单表值域检测、跨表数据量对比这些不够),元数据管理回答atlas也不行,面试官问得非常细。

数仓下游产品线有哪些?字节会问日常怎么和这些业务方打交道?

指标都是谁提的?他们为什么要提这些指标?

埋点具体是怎么埋点的?我不是问你埋点的类型,我是问你如何设置这些埋点的,怎么选择在哪里埋点的?有哪些埋点?和谁配合的?

拼多多、阿里:gmv下降了20%如何排查原因?

以上是群友提供的面试总结,大家可以参考一下,查漏补缺

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小哭包

创作不易,给作者加个鸡腿吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值