字节大数据开发实习一面二面三面面经
一面
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,一个结点就是一个分区,通过自定义分区,不停的扩大分区。
面试到这就差不多了,总的来说,二面三面都是考察业务能力和对项目的了解程度,面试官可能不会问的很细,但是一定要把项目讲细致,对做过的项目一定要滚瓜烂熟。
虽然没有得到确切的答复,整个过程还是蛮顺利的,跟面试官唠的也不错,许愿一下录用,希望明天能接到人力的电话!
来牛客还愿,投递状态更新成了面试已完成,这几天就静等录用了。希望我的好运能传递给看到这个帖子的兄弟姐妹们!
#实习##面经##字节跳动##大数据开发工程师#