求职刷题神器

funit.cn

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

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

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

面试公司:字节跳动

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


一面

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

表情
热帖排行
热门话题
  1. 531人参与
  2. 243人参与
  3. 153人参与
  4. 98人参与
  5. 25人参与
  • 微信扫码加好友进群