字节跳动大数据开发岗位三面凉经
早上十点开始的面试
一面:
自我介绍,
一开始问的忘记了。。
编程题有道是n个有序数组求TopK
问了下实习的内容
介绍下Kafka,巴拉巴拉一顿说
问Spark的shuffle过程,然后问了下普通shuffle存在的问题,答了会出现很多磁盘文件
然后说了下用consoiderPartition,可以减少文件数。
然后问使用这个是解决了上面的什么问题,一开始答说是磁盘IO,后面追问确定是磁盘IO么,
想了下,说shuffle过程产生了大量文件,可能操作系统不支持打开太多文件。
一面大致就是这样,有些记不太清楚了
二面
自我介绍
问了下实习相关的
HTTP传输层用了什么协议
介绍下TCP和UDP,巴拉巴拉扯了两者区别,拥塞控制什么的
HTTP的Header都有哪些
有没有去试着改下header的内容
算法题:leetcode买股票问题
给定每天股票的价格,只允许一次买和一次卖,求最大收益
解决了上面那个问题后,问允许多次买卖,求最大收益
问了下Spark遇到数据倾斜怎么办,这里讲了很久,讲到后面面试官说大概就到这里把,然后就问有什么想了解的,
然后二面就结束了
三面
自我介绍
问下实习相关内容
有没有了解过一些流式处理的框架
说了flink、sparkstreaming、strom
然后问了下三者的区别
看我简历写了Spark,问了Spark不少东西,把Spark的相关概念都问了个遍,RDD、task、Stage、executor等等
还有彼此之间的关系也问了个遍
进程间通信方式有哪些,答了管道、消息队列、共享内存
继续追问,还有其他的么
答曰记不住了,然后问了下这三者的区别
说完后又继续追问,还有没有其他的
说了下socket,嘴抽说了句socket一般用于不同机器之间的进程通信
追问那在同一台机器的进程就不能用socket么
答应该可以把,把Socket的IP设置成localhost应该可以,问能不能设置成其他的,emm 设置成127.0.0.1应该也行
问设置成本机真实IP行不行?emm 应该可以。追问,那设置成这三者的区别是什么。
后面给了一个Spark相关的工程题目,给定hive表,存储着关于文章的信息,字段如下(文章ID,userId,action,date(分区字段))
其中的action包括了:点赞,评论,不喜欢,展示,可以根据公司内部提供的一个rpc,传入文章ID得到文章的类别ID,
问如何实现得到每个类别的热点文章的Top1000。
一开始围绕着如何确定文章的热点谈了很久,如何对action字段进行量化,哪些action对分数的影响权值比较大,如何分配权值等等
然后面试官给了一个方法fun(点赞数,评论数,不喜欢数,展示数,date),该方法可以返回每篇文章的最终分数
然后叫我根据上面hive表存储的信息以及这个方法,把每个类别的热点文章Top1000给求出来
这里写了很久没能搞定,最后就凉了。。。