字节大数据开发实习一面二面三面面经

一面

java

类加载(加载流程,加载器,强弱软虚引用会被问到,得了解)
垃圾回收(怎么解决计数法的弊端)
多线程(线程间的通信,锁,volatile,CAS)
内存模型,内存管理(溢出和泄漏的区别)
NIO(知道,不了解,哭)
Java核心就是围绕这几个方面

操作系统

没学过,直接跳过了(上来第一题就是内核态,状态切换相关,哭)
后面有提到数据传输过程,零拷贝的实现

redis

数据结构(zset怎么实现的)
备份(RDB和AOF)
RDB过程中修改数据,怎么办
缓存击穿/穿透/雪崩(常考点,但是面试官没问我)

spark

clien和cluster模式的区别
stage划分
宽窄依赖
spark shuffle(从stage划分递进到shuffle过程,条理性很强)
数据倾斜
join的种类
两张表join(小表直接广播出去,不能广播的表怎么解决)
spark shuffle
spark内存管理
(个人看法:spark面试核心三大块:内存管理,shuffle,数据倾斜相关的优化)
算法题:链表排序,面试官让我用归并排序实现。

总结

Java面试主要是大厂常见的类加载,垃圾回收,多线程,内存老四样。以前一直在做项目,Java这几样都是面试前突击复习的,以为一面只问基础,不问框架的,spark内容这几天没有复习,导致背过的spark内存管理都忘了。面试官问的问题,总的来说答出了70%-80%的样子,算法题也没AC,一面就这么惨,差不多是凉的透透的了。大厂考查得非常全面,也算是一次收获不小的经历了,想面字节的兄弟姐妹们要加油复习呀。(如果没凉,后面还会更新)
居然约了二面,周五面完继续更新。。。沟通交流很重要,跟面试官唠得好了,还是有机会的。
二面预测:MySQL索引,引擎,事务老三样,Kafka,HBase,Spark,Flink,挖项目。心态放平,就算没过,也是个提升自己的机会,加油!

二面

主要聊了聊业务,基础知识问的比较少
说说spark和flink的区别
介绍介绍kudu
如何设计一个类似kudu的数据库
面试官主要还是结合项目来聊业务,面试前一定要把自己的项目吃透
数据仓库建模,雪花模型,星型模型,ODS,DWD,DWS多层结构
数据结构相关的问了平衡二叉树,常见的排序算法,hashmap的实现原理
什么场景下用归并排序,什么场景下用快速排序(从mapreduce shuffle的角度出发,就能发现)
算法题是实现常数级的时间复杂度取出栈中的最小值(庆幸是简单题)
二面几乎是纯业务聊天,面试官非常友好
周四下午三面,我必须考虑这是不是我此生仅有的机会!

三面

继续聊项目聊业务,整个项目的细节,项目的难点,项目中遇到的问题
spark on yarn的流程,分部署模式答
spark程序故障重启,checkpoint检查点
讨论spark读取的数据,我一开始的理解的是driver读数据,分发到executor上,跟面试官讨论了一下,发现driver读取的是元数据,也就是数据位置/偏移量
讨论业务场景:
from to
1       2
2       3
2       4
3       5
3       6
3       7
3       8
3       9
抖音的视频转发场景:视频的原作者发布了一个视频吗,TA的关注者看到后会转发,后续关注者的关注者会继续转发,以此类推。我们现在有这样一个数据集,要找到视频的源头,以及转发的层次数。
我首先想到的是类比文件系统的目录结构,递归查找,一直追溯到源头,追溯的同时用一个变量记录层数,类似于我们查一张表,把结果当作条件,继续查找,一直递归查找到没有from,面试官让我考虑考虑别的方法;
思索片刻,想到了图,可以把整个集合抽象成图,用并查集就可以完美解决,面试官让我继续考虑有没有别的方法;
思索片刻,抽象成树,遍历树,面试官问在分布式场景下我们该如何考虑让这玩意分布式的实现;
思索片刻,这玩意的结构跟spark的DAG图不就很像嘛,一层结点一个RDD,一个结点就是一个分区,通过自定义分区,不停的扩大分区。
面试到这就差不多了,总的来说,二面三面都是考察业务能力和对项目的了解程度,面试官可能不会问的很细,但是一定要把项目讲细致,对做过的项目一定要滚瓜烂熟。
虽然没有得到确切的答复,整个过程还是蛮顺利的,跟面试官唠的也不错,许愿一下录用,希望明天能接到人力的电话!
来牛客还愿,投递状态更新成了面试已完成,这几天就静等录用了。希望我的好运能传递给看到这个帖子的兄弟姐妹们!
#实习##面经##字节跳动##大数据开发工程师#
全部评论
什么场景下用归并排序,什么场景下用快速排序,楼主这个问题怎么回答的?我理解就是比如reduce中溢写到磁盘的有序数据和内存中的有序数据做排序使用到多路归并排序,所以说归并排序适合大量有序数据的合并,快排是不是适合小批量最好无序数据的场景数据的排序?
2 回复 分享
发布于 2021-03-30 23:36
楼主你好, 请问面试算法题是在牛客写吗? 是ACM模式, 还是核心代码模式呢? 谢谢!
1 回复 分享
发布于 2021-03-19 09:49
兄弟感谢!
点赞 回复 分享
发布于 2021-03-09 17:37
请问想试试阿里云这边的数据开发岗位吗?
点赞 回复 分享
发布于 2021-03-09 19:24
兄弟你做了多少项目呀,我是跟着b站视频做的项目,感觉有点虚,但是学过的框架原理还比较熟,如果要自己找项目做,有推荐的吗
点赞 回复 分享
发布于 2021-03-19 14:40
楼主状态没更新,是凉了吗🤣
点赞 回复 分享
发布于 2022-06-07 11:41

相关推荐

团队介绍:Flow-QA团队,主要负责Flow相关业务的质量建设工作。一方面,团队通过构建全方位的质量风险识别和防控体系,持续提升和保障产品品质,为用户和开发者提供更极致的体验。另一方面,团队也致力于结合AI、大模型和业务特性来优化和创新质量保障方法技术,推进局质量体系从标准化到自动化、智能化的升级持续提升软件工程能力和效能,保障业务高效高质交付。如果你也对AI感兴趣,加入我们,除了AI领域知识,还能深度参与全球化复杂架构的质量保障。锻炼跨团队协作能力,感受多语言工作环境,提升全球化视野。1、主要负责客户端/服务端产品质量相关或业务线测试与工具开发工作;2、深度参与产品研发项目,协同产品和研发团队高质量交付产品;3、日常项目线下测试与线上质量分析;4、参与质量体系规划和建设;5、参与开发效率工具和保证技术项目质量。职位要求1、2025届获得本科及以上学历,计算机相关专业优先;2、热爱计算机科学和互联网技术,对软件质量保障工作有浓厚兴趣;3、扎实的数据结构和算法基础,熟悉至少一门编程语言,包括但不仅限于:Java、C、C++、Python、Go、PHP;4、具备优秀的产品意识,对市场上典型App有自己的想法和改进方案;5、具备快速适应能力、学习能力,善于发现和定位问题;6、了解常用客户端、服务端开发或测试工具,如自动化框架、压测工具、大数据处理工具者优先。
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
11 94 评论
分享
牛客网
牛客企业服务