字节跳动大数据开发岗位三面凉经

    作者:杨超越救救孩子啊
    链接:https://www.nowcoder.com/discuss/241523?source_id=discuss_experience_nctrack&channel=-1
    来源:牛客网

    早上十点开始的面试
    一面:
    自我介绍,
    一开始问的忘记了。。
    编程题有道是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给求出来
    这里写了很久没能搞定,最后就凉了。。。