字节大数据一二三面面经(已意向书)

发面经,求offer (一面到offer就整整一星期,字节效率真滴恐怖!!!)
增加各个问题答案以及大数据规划(ing)

----------------一面--------------------- 8.10 45min(小姐姐)
1. Flink Checkpoint
面试官是说到checkpoint作用,然后我就开始拓展
项目中开启了checkpoint相关配置给用户使用,说到一些配置信息
之后我自己对ck还挺了解的,所以引申到Chandy-Lamport论文,这篇论文基本思想就是marker n一到进程就保存进程状态,但是进程状态到最终快照状态n的差距还需要链路状态来弥补
而flink的ABS其实简化了里面思想,但是这种简化思想导致的就是barrier需要对齐,而barrier对齐那么导致ck时效性受到影响,反压更加加剧这种情况。所以flink 1.11阿里提出了unalignCheckpoint机制 ,这个机制具体怎么做看直接flink文档吧

说到配置,C-L论文,ABS,barrier对齐,对齐缺点,阿里的不对齐
2. 端到端的exactly-once:
端到端要说三部分,源+数据处理+sink
比如kafka,源主要是offset由ck保存到快照里了,所以offset交给自己去管控(assign/seek)而非kafka
数据处理自然就是ck
sink:要么外部支持幂等性,要么外部支持事务,kafka这种就是事务了,大概原理就是在barrier n来时preCommit事务n-1,开启事务n,在notifyCheckpointComplete时commit 事务n-1 (后续传个图上来)

3.Ck恢复,拓扑图修改后如何恢复?
这个其实只要理解快照中各个算子对应的state(keyedState+OperatorState)都是算子id--->State形式,而如果不指定算子id,那么算子默认id和其前后算子有关,所以一旦拓扑图改变,那么必然算子id改变,状态对不上,从ck或者savepoint中恢复失败
不太会,我说指定算子id

4. stateBackend用过哪些
直接说RocksDB不太会 😂  这里感觉如果知道hbase,可以说一说

5. Spark stage、task划分
这个典中典了,反向创建,反向submitMissingTask(先父stage再子stage)

6. Spark提交流程
典中典了
算法:
礼物的最大价值(dp)
栈序列是否合法(stack模拟即可)

-----------------二-----------------  8.12 1h
1. 进程线程区别
3部分吧
资源、调度单元
通信方式
切换代价

2. 进程通信方式、最常用是哪种
管道、消息队列、共享变量、socket、信号量、信号   socket

3. socket通信涉及哪些方面(很发散感觉答的不好)
3个部分吧
scoket使用和TCP各个阶段对应
最后可以说到I/O多路复用,然后举Kafka网络模型的例子,岂不美哉???

4. Java HashMap和ConcurrentHashMap 说了很久很久
典中典了
HashMap:桶集合+链表/红黑树
为什么桶集合选择数组啊?
为什么使用拉链法解决冲突啊?
什么时候resize() 啊?
什么时候树化?恢复?
ConcurrentHashMap :1.7/1.8区别,然后size和get无法强一致性之类的

5. Kafka理解 说了很久很久
kafka这个可以先说为什么使用kafka:回溯消费啦、上下游解耦啦... 全部怼上去
然后kafka总结下来真的就高吞吐、高可靠、高可用三点
高吞吐:生产者异步、压缩、批量发送啦、网络模型I/O多路复用高效啦、写入pageCache啦、顺序I/O啦、baseOffset形成跳表啦、零拷贝啦、批量拉取啦,一条龙整上,爽歪歪
高可靠:如何做到不重不漏不乱序?典中典了
高可用:Controller HA、PartitionHA(可以说到ISR、ISR概念,为什么设定ISR、如何保证消费一致性啦.............)

我从高吞吐、高可靠、高可用三点回答的,但是说的太多了,面试官到最后要求用三句话说明高可靠

6. 两数之和

7. 10TB 日志数据类似统计谁访问了哪些域名,访问了多少次,给出解决方案
我只会用mapreduce思想,想请教大佬解答下

算法
最大连续子数组之和(具体数组)
设定start,end
大于max时不断更新end,nums[i]+dp[i-1] < nums[i] 更新start

----------------三面-----------------   8.16 40min
1. 说说MR(介绍的很不好)
告辞!

2. 主动说Spark的shuffle 过程
三种shuffleWrite(名字可能有错,源码好久没看了)
BypassMergeSortedShuffleWriter
SortedBaseShuffleWriter
UnsafeShuffleWriter
每一种都有自己使用范围,第一种就是分区数<200(可配置),不排序,不聚合  最后生成两个文件blockFile+index ,sortedBaseShuffleWriter解决了第一种过渡消耗内核缓存区缺点,那么最终要按pid分组,那只能对pid进行排序了,额外的可以选择对key进行排序与聚合(如果可以,说说里面的sizeTrackingAppendOnlyMap,Array[2*cap] 存放了<pid+key, value>,使用线性探测解决冲突之类的);unsafeshufflewriter主要涉及到较新的spark内存管理有关了,申请memoryBlock为page,然后数据序列化到page中,设立一个类似索引的page,最后溢写磁盘对索引的page进行排序之类的,可以看看网上博文

reduce只有BlockStoreShuffleReader
基本流程就是获取mapStatus,解析获取blockManagerId,然后从对应BlockManager拉取map输出的blockFile对应pid数据,然后边拉取可以边聚合之类的

3. flink中ck超时原因(这checkpoint功能似乎字节面试官很看重,感觉得好好准备)
1. 反压 毕竟包含barrier的event buffer一直不到,subtaskCheckpointCoordinator做不了ck,当然超时
2. 面试官说:算子执行外部请求能否导致超时?当时没想出来,太紧张了【裂开】
后面三面过了后,通过hr给面试官转发了消息:
MailBoxProcessor中的线程也就是数据处理(subtask)线程,该线程每次会pollNext从InputChannel中拿取buffer,如果是event buffer(barrier)并且barrier对齐了,那么此时执行performCheckpoint方法(之后就是保存快照逻辑)

如果直接在某个userFunction去请求数据,那么使用的是就是当前数据处理线程(比如请求MySQL数据,耗费大量时间),必然影响当前线程处理barrier,导致checkpoint超时
而比如在open方法中去初始个线程池比如RichAsyncFunction#open方法中初始化线程池然后去查询,便不会影响正常数据处理线程

必然超时呀!!!

当时脑瓜子嗡嗡的,只说了反压,面试官叫我回去试试算子执行外部请求能否导致超时(东扯西扯,扯到同步快照保存,异步快照保存,都没啥用,最后尬住了。。。)


4. flink和spark区别(spark streaming不太会)
说了flink中subtask和spark中task数据处理区别
这个其实就是数据如何流通还有上游主动推到下游还是下游拉取上游之类的?

5. spark 3.0特性 gg
真不会xdm

6. 反问
问着问着就又变成面试官问我了【裂开】,数据倾斜怎么处理
1. 暴力加并行度
2. 两阶段聚合
3. join里面广播变量 + 采样复制(和面试官争论了一波)
平时怎么看源码的


感谢各位观看,如果有需要讨论的可以在帖子下面回复,能不能厚个脸皮求个关注、求个赞😂感谢感谢!

#面经##秋招##校招##求offer##提前批##字节跳动##大数据开发工程师#
全部评论
我的天呐,不愧是字节,开口就问这么深。。转行菜鸡已经因为看到字节面经去补MIT6.824了
2 回复 分享
发布于 2021-08-11 16:30
想问下三面以后隔了多久收到消息的呀~
2 回复 分享
发布于 2021-08-25 14:56
优秀,我就只会记住了flink几个概念😂
1 回复 分享
发布于 2021-08-16 17:09
顶顶顶
1 回复 分享
发布于 2021-08-18 00:30
请问楼主面的是数仓还是平台开发,太难了😂
1 回复 分享
发布于 2021-08-19 23:37
卷!
1 回复 分享
发布于 2021-08-20 09:20
tql tql
1 回复 分享
发布于 2021-08-23 12:59
1 回复 分享
发布于 2021-08-25 15:21
感谢老哥!顶顶顶😁😁😁
点赞 回复 分享
发布于 2021-08-18 08:51
我靠感觉面的好难
点赞 回复 分享
发布于 2021-08-18 13:14
你这校招水平太恐怖了
点赞 回复 分享
发布于 2022-07-19 14:00

相关推荐

不愿透露姓名的神秘牛友
01-17 11:44
你在各大软件投了一份又一份,你打招呼的hr一个接一个,但是只要你投过的,很快就下线了,没关系你的能量是很强,你看过的岗位招到人的速度都增加了。朋友们一个个拿着丰厚的实习回报,你却默默在家刷新邮箱,等待着那寥寥无几的面试通知。你每天一睁眼就狂投简历,你一有面试邀约就点确认。过年亲戚们围坐聊天,谈论着他们孩子的职场成就,你试图插话说自己面试过的公司数量,但他们显然不太感兴趣。你在心里自嘲,觉得他们不懂面试的艰辛、不懂得每一次面试机会的珍贵,不懂得一张张精心准备的简历背后的努力。笑你那个小侄子只会在网上刷刷职位,而你已经是各大招聘网站的常客。亲戚们夸赞自己孩子一年的成就,儿子的新工作,女儿的晋升,而...
龚新化:这帖删了呗,这跟我朋友有点相似,不过我是无所谓的😀,没什么感觉,我不轻易破防的,但是我一个朋友可能有点汗流浃背了😕,他不太舒服想睡了,当然不是我哈,我一直都是行的,以一个旁观者的心态看吧,也不至于破防吧😃,就是想照顾下我朋友的感受,他有点破防了,还是建议删了吧😯,当然删不删随你,因为我是没感觉的,就是为朋友感到不平罢了🥺
点赞 评论 收藏
分享
2024-12-26 20:46
复旦大学 C++
国棉17厂丶小王:拿了offer的那个周末晚上去网吧通宵,去网吧不知道玩什么刷了lc的每日一题,然后试着第一次打开了三角洲行动,从此少了一个已经刷了700道题的lc用户,但是烽火地带多了一只🐭🐭
点赞 评论 收藏
分享
2024-12-10 19:11
重庆大学 Java
August_Li:主管面要是真挂了,你黑化更彻底😂
点赞 评论 收藏
分享
评论
18
97
分享

创作者周榜

更多
牛客网
牛客企业服务