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

    作者:God_Newbie
    链接:https://www.nowcoder.com/discuss/609584?source_id=discuss_experience_nctrack&channel=-1
    来源:牛客网

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