2023秋招——大数据研发工程师提前批一面(代码片段)

2023秋招——大数据研发工程师提前批一面(代码片段)

🌻最近在准备秋招,又到了面试的环节,我将会对秋招面试的问题进行一系列的复盘,在面试中一点一点成长。对往期内容感兴趣的小伙伴可以参考下面👇:

🌿这次面试的是百度大数据研发工程师的提前批,没有笔试,简历通过后直接面试,具体的业务方向是好像是自动驾驶。

目录

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秋招面经小红书前端-提前批(1h)(代码片段)

  1. 自我介绍
  2. 你认为前端工程师的技术要素有哪些?
  3. 你刚刚说的都是偏开发的,但我们工作中还有很多比如说排障、问题分析、相关工程的运维、发布、部署、编译,这样的东西你觉得依赖哪些知识?
  4. 举个例子,假设代码不是你写的,页面出现了卡顿,越用越卡,你怎么去分析问题,找到故障点?有没有办法通过工具或者工具的分析来进行准确定位?
  5. 从url输入到页面渲染发生了哪些事情?
  6. http1.0、1.1、2.0的区别
  7. 浏览器渲染经过哪些步骤?
  8. dom树和render树之间结构有区别吗?还是说是一样的?
  9. dom树的根节点是什么?

document > html > head, body
body需要渲染,head不用
需要渲染才会构成render树

  1. setTimeout函数的执行过程(原理),可以结合事件循环说,它什么任务?在哪里执行?

在执行栈中执行

  1. 执行栈中执行到setTimeout之后,JS引擎会做些什么?
  2. setTimeout定500ms一定是500ms之后执行吗?它的callback是怎么执行的?为什么可能会有延迟?
  3. 你觉得跨域是什么?怎么解决?
  4. cors设置请求头是什么原理?
  5. jsonp是什么原理?
  6. iframe跨域如何通信?
  7. JS作用域有哪些?是通过什么形式在作用域中查找的?
  8. 看代码说输出
var a= 
	b: function() 
		console.log(this)
	

console.log(a.b())	// a
var c = a.b
console.log(c())	// window
  1. 把b改为箭头函数呢?
var a= 
	b: () => 
		console.log(this)
	

console.log(a.b())	// window
var c = a.b
console.log(c())	// window
  1. 算法题:最长回文子串
  2. 反问(风控安审团队)
赞(1)

文章来源于网络,原文链接请点击 这里
文章版权归作者所有,如作者不同意请直接联系小编删除。
作者:柳小葱