2023秋招——大数据研发工程师提前批一面
Posted 柳小葱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2023秋招——大数据研发工程师提前批一面相关的知识,希望对你有一定的参考价值。
🌻最近在准备秋招,又到了面试的环节,我将会对秋招面试的问题进行一系列的复盘,在面试中一点一点成长。对往期内容感兴趣的小伙伴可以参考下面👇:
- 链接: 2022暑期实习字节跳动数据研发面试经历-基础数仓.
- 链接: 2022百度大数据开发工程师实习面试经历.
- 链接: 2022暑期实习字节跳动数据研发面试经历-data部门
- 链接: 2021年暑假滴滴数据开发面试
🌿这次面试的是百度大数据研发工程师的提前批,没有笔试,简历通过后直接面试,具体的业务方向是好像是自动驾驶。
目录
- 1. 面试问题
- 1. 自我介绍
- 2. 介绍一下简历中的项目
- 3. 你的项目中提到了kafka,介绍一下你的项目为什么要用kafka,说一说kafka的作用?
- 4. kafka中的生产者的数据一致性保障是如何实现的?
- 5. 说一说双流join?
- 6. 说一下HDFS中如果一个数据块突然坏掉了,会如何处理?
- 7. 说一下spark和hadoop的区别?
- 8. 介绍一下你在字节跳动做的项目?
- 9. 你在项目中遇到过什么困难吗?你是如何解决的?
- 10. 你遇到离线任务出错的情况是如何处理的?
- 11. 你提到多是业务问题,有没有遇到过什么技术问题?
- 12. 你对sparksql优化有何经验?
- 13. 如果一个需求很复杂,你觉得应该如何去解决或者优化这个需求?
- 14.如果一段sql运行很慢你觉得是什么原因?从关系型数据库的角度说一说,并解释一下应该如何处理。
- 15. 写一道sql题,窗口函数没问题吧?(下面题目是我记忆中的题目)
- 16. 我这边会议室时间快到了,这次面试还是以灵活性问题为主,你有什么想问我的?
- 2. 自我总结
1. 面试问题
1. 自我介绍
开局就是自我介绍,我有点生疏,语速有点快,等面试次数多了,就好了。
2. 介绍一下简历中的项目
我这里介绍的是一个flink的项目,介绍了这个项目的技术,datagen、kafak、flink、es和mysql,数据源为datagen,然后经过kafka消息队列的处理,输入到flink中进行计算,然后输出到mysql和es中进行一个可视化的过程。(这块我没有加入数据的业务逻辑,比如数据源的数据啥样、消息队列如何处理、flink中业务逻辑是什么、最终得到一个什么结果。)
3. 你的项目中提到了kafka,介绍一下你的项目为什么要用kafka,说一说kafka的作用?
我这里说了一下消息中间件的作用,异步和削峰的特点,不用处理完数据之后马上返回结果,达到一种异步的操作,然后还有就是可以处理某一时间段大量的数据输入,我们可以通过消息中间件进行缓存,需要处理的时候再处理。(我觉得我没说到kafka在流式数据处理中的作用,说的是消息队列本身的特点,我应该结合flink说一说)
4. kafka中的生产者的数据一致性保障是如何实现的?
问到这里,我说了幂等性和事务,但是生产者的幂等性和事务的具体实现是什么样子的,我没说出来(这个过程有点复杂,不记得了)
5. 说一说双流join?
我觉得这个名词很熟悉,但是不记得是啥原理,不会答(面试官应该认为我是实时开发的,所以前面问的都是实时相关的问题,我直接说我是离线开发之后,后面就开始说离线的问题了),后面问了一下别人,双流join就是两个流数据直接进行join,因为数据是不断变化的,可能一条流中的数据还没join上就流出去了,所以需要设定一个类似水位线的时间,来限制多久之内没join上,就直接流出去了。
6. 说一下HDFS中如果一个数据块突然坏掉了,会如何处理?
这里我从namenode和datanode的角度来说的,说客户段将数据划分为123m一块,存储在datanode上,datanode会进行备份,会返回每一份的地址给namenode,如果其中一个块坏掉了,会通知namenode从别的datanode上返回备份数据块。
7. 说一下spark和hadoop的区别?
我从map reduce和rdd算子的计算方式、基于内存和磁盘、shuffle中的分区排序和分区不排序做了一些讲解。
8. 介绍一下你在字节跳动做的项目?
七七八八说了一堆,我没有总结,感觉自己说的很乱。
9. 你在项目中遇到过什么困难吗?你是如何解决的?
这个问题好广泛啊,因为我做的需求都是零零碎碎的,我就从我做的业务需求难度、代码的复杂程度等问题进行说明(我觉得这个问题太范了,下次我应该总结几条)
10. 你遇到离线任务出错的情况是如何处理的?
我主要是提了一下我的处理流程:
- 首先看DAG图,看上游数据是否都成功到达。
- 都到达就重跑一遍,然后看看日志。
- 如果是资源不够,可以加资源,比如shuffle超出限制,资源紧张等等。
11. 你提到多是业务问题,有没有遇到过什么技术问题?
这一块我主要说的就是数据倾斜,把数据倾斜处理的手段说了一遍。
12. 你对sparksql优化有何经验?
这里我回答的很浅,像:比如先where后join、不要count distinct、不要select *、不要outer join(我这一块觉得很像如何避免数据倾斜)
13. 如果一个需求很复杂,你觉得应该如何去解决或者优化这个需求?
和需求方确定好,数据范围、包括字段、数据类型等等、然后自己探查和开发的时候碰见疑问,及时抛出来,一起对齐,巴拉巴拉说了一堆(我不知道这个问题的重点在哪)
14.如果一段sql运行很慢你觉得是什么原因?从关系型数据库的角度说一说,并解释一下应该如何处理。
脑子里的第一反应就是:资源不够、数据倾斜,但是感觉以及回答很多遍了,后面面试官叫我从关系型数据库的角度说一说,我就说,可能是数据量太大,应该分库分表,然后我就不会了,面试官也没追问什么。
15. 写一道sql题,窗口函数没问题吧?(下面题目是我记忆中的题目)
这道题主要是算出一个状态的开始时间和结束时间,只要头和尾
这道题我没写出来,但是有思路,就是lead函数,取下一个,然后打上标记,再判断,有点紧张,只写了个lead函数,然后把思路说了一下,后面复盘的时候就写出来了,还是比较有难度的,需要lead和lag
# 第一层的思路确实是lead函数,但是后面需要用lag函数,补充上一个状态最早的开始时间
SELECT if(release_time>lag(t1,1,null)over(ORDER BY release_time ),lag(t1,1,null)over(ORDER BY release_time ),release_time) min_time
,t1,now_status
from(
SELECT release_time,
LEAD(release_time,1,null)over(ORDER BY release_time ) t1 ,
now_status,
LEAD(now_status,1,null)over(ORDER BY release_time ) s1,
if(now_status=LEAD(now_status,1,null)over(ORDER BY release_time ),1,0) tag
from status_info
)main
where tag=0
结果如下:
16. 我这边会议室时间快到了,这次面试还是以灵活性问题为主,你有什么想问我的?
这个问题就大家问自己想问的,但是我一般会反问面试官,您在这个岗位3年后,除了薪水能得到提高之外,您觉得这份工作还能给您带来其他的收获吗?
2. 自我总结
这次面试还是有点紧张,而且准备的不是很充分,哈哈哈,回答问题没有明确的范围,想到啥说啥,后面可能需要总结出一类问题的回答。面试官也说了,主要是灵活性的问题。应该是提前批,大家基础都不差,主要是想看大家对工作的态度和处理问题的能力吧。
以上是关于2023秋招——大数据研发工程师提前批一面的主要内容,如果未能解决你的问题,请参考以下文章