求职刷题神器

funit.cn

讨论区 > 求职面经 > 字节跳动大数据研发工程师面经

字节跳动大数据研发工程师面经

五等分的代码
发布于2021-03-08 15:37:50 143浏览

面试公司:字节跳动

面试岗位:大数据研发工程师


一面

1、数据不一致有没有遇到过,怎么解决的。

回答:遇到过,最常见,同一个指标,多个人多个团队出,口径不一致;或者相同逻辑多个地方维护,复制粘贴,改一个地方另一个地方忘记改

追问解决办法:

指标体系,复用数据:按照业务线将一个业务线设计到的所有维度和指标统一建模到一张hive表,上层所有应用或者对商分暴露的表都是同源的,且直接取不用再计算

规则引擎,复用逻辑:相同的字段加工逻辑抽离到规则引擎中进行配置,保证一处修改,处处运行

2、一道sql的题,一张表,用户id和登录日期,查找连续两天登陆的用户。

回答:按照用户id group by,编写 UDAF补充红: (性能高),拿到一个用户的所有登录日期,判断是否有连续的

面试官补充:不用UDAF,就纯SQL,可以用表自关联,关连建为user_id


select distinct a.uid 
  from tb_log a 
  left join tb_log b 
    on a.uid = b.uid 
   and (a.pdate = date_sub(b.pdate,1) or a.pdate = date_add(b.pdate,1))


3、怎么定位性能问题对应的是哪段sql

回答:

spark driver log 看 执行慢的stage(99%)

spark ui 上看 该stage 的task 执行完成比率

spark ui 上看 该stage 对应的 continer id 和 所属job

spark ui 上看 sql 的执行计划 和 执行计划图,最终定位到是哪段sql

4、遇到spark性能问题怎么解决的

回答:分三部分:小文件问题,数据倾斜,其他性能问题分别讨论,这个比较多,就不在这里写了

5、算法问题


二面(主要就是聊项目了)

1、项目用了什么存储

回答:分情况说了下hbase,es,kylin,doris 的应用场景

2、规则引擎相关的问题。规则多了怎么管理,有完全相同的规则怎么解决,多个相似的名字怎么解决

3、写sql。求一个省份下的uv最高的城市,主要考察窗口函数


select province,
        city
  from (    
        select  province,
                city,
                row_nnumber()over(partition by province order by uv desc ) rank
          from(
                select province,city,
                       count(distinct uid)  uv   
                  from tb_log
                where pdate = {date}
                 group by province,city
           ) a
   ) a1
 where rank = 1


进阶考察: 出现慢结点怎么处理(考察数据倾斜和去重优化),数据倾斜。 一个人多条访问数据

回答: 先去重 group by 省份,城市,userid (预聚合过滤重复数据)

再进行求和,求和的时候对大key分情况处理,加盐

4、linux 求一个文件出现某个单词的行数,linux做完用spark写


三面

1、数据不一致遇到过吗,是什么原因

回答同一面

2、讲一下UA(项目)

这个就和自己做的相关有关系了,没啥可说的

3、报表系统有做过吗

实际没做过,拿同事做的来说

4、一搬用spark还是hadoop

5、cache和persisit 的区别

cache可以选缓存级别,persisit 调用 cache,指定缓存级别为内存

6、有优化过Spark执行性能吗,怎么优化的?

根据项目举例子:主要用到,shuffle逻辑下沉,选取合适的存储引擎,合理使用cache,参数调优,优化算法时间复杂度从O(n^2)到O(n),(这里和一面差不多,只是和面试官有更多讨论)

7、spark on service 用过吗, spark context有退出的问题遇到过吗?

这个知道没用过,所以没答出来,不过通过这个问题能看出来字节大佬还真挺厉害的,三面面试官对技术都这么了解

8、spark dataframe比rdd性能好,为啥

不知道,没答出来,反问面试官,面试官说是因为数据结构优化

9、堆外内存是干什么用的

netty。结点直接交互数据,spark 最新feature 弃用jvm,直接c++调用内存,都是堆外

10、知道什么是whole stage codengen吗?

面向接口编程太耗时间,主要是方法递归调用,虚函数调用,可以将一个stage的所有task整理成一个方法,并且生成动态字节码并结合

11、spark 3.0 特性了解吗

12、未来一年在技术学习上有什么规划 加强数仓和业务的学习 加强底层原理的学习

13、讲了讲字节部门的业务。问有什么问题


HR面

1.为什么跳槽

2.未来几年的技术规划

3.未来几年的个人规划

4.期望薪资

5.对我们部门有了解吗


本文首次发布于趣IT ,转载请注明出处,谢谢合作

字节跳动大数据研发工程师面经

全部评论0

成为第一个评论的人

还可以上传7

表情
  • 快速扫码进群
    加入职友圈
下一步
知道了