面试公司:字节跳动
面试岗位:大数据开发
一面题
1、exector 分为几种内存?原理都是什么
2、堆外内存不会被gc回收的,都是用来作什么的
3、flatmap和mapPartition的区别?
4、partition分为hashpartition和rangepartition?各自的实现原理
5、sqoop怎么实现增量导入的?
6、场景模拟:sql实现行转列和 列转行?spark core怎么实现?
7、group by的 数据倾斜问题怎么解决?
8、会问到 hashmap 的相关问题
9、找出两个数组中和为K的元素,两个for循环嵌套实现?时间复杂度为多少更优化的方案?map 实现?空间复杂度多少?
10、二叉树实现 左右子节点的交换,代码落地!
11、还有项目中的相关的问题,注重的解决问题的思路和方法!
12、当然算法也问到了,实现思路说一下就行了,逻辑回归,决策树等
13、 sql就是考察的开窗和相关的优化,尤其是shuffle要尽量少,stage尽量优化为一个!
二面题
1、map、reduce的个数是有什么决定的?
2、A 表:userid session,B表:userid order
求 userid count(session),count(order),尽量优化
3、NameNode 和 Secondary NameNode 的区别和作用
4、数仓建设流程
5、union 和 union all的区别
6、数据倾斜的解决方案,多种,他会质疑你的方法或者私立,问你有没有更好的思路
7、星型模型和二手模型的区别
8、业务实现:抠细节!很具体,很注重思路!
(具体的情况实现,会不会出现的问题,比如数据量比较大的情况下会出现的问题,解决方案等)
9、HDFS写数据的时候,是怎么写的?如果中途也在读数据会产生什么样的情况
10、在hive表中临时加字段,重新跑一边数据就可以吗?怎么处理比较完善并且不用修改表?
11、细节问题问的也不少,主要是能抗住他对你的一些思路的质疑和更加完善的想
三面题(部门领导)
基本上没怎么问具体的技术问题,会问思想和思路上的问题:
1、处理问题的解决思路,会不会想到需要整合代码或者封装?
2、平时自己的学习方法和方式
3、一般业务需求来了之后,团队怎么分工,你在业务处理的过程中是都做的什么?
4、在分层的时候,都需要注意那些点?比较重要的(脱敏、权限控制、业务线的整合等)
5、平时都是通过什么方式提升自己的技术水平和思想
6、你以后准备的发展方向都是什么样的
7、还聊了好多 自己对技术的看法和方向什么的,题目比较开放
四面题(技术,实时情况问的多一些)
1、离线的问题上面的其实都差不多,会让你写数据处理的过程
2、mysql的更新数据是怎么导入到hive表中的?
3、缓慢变化维是什么?怎么具体实现?
4、实时的业务流程(数据走向?)具体你都做了什么,抠得很细,还注重思路的优化
5、spark streaming 连接kafka的时候用的什么连接?为什么这么用?
6、spark streaming 连接kafka的直连模式offset维护在哪里,这样有什么好处
7、直连模式 下,我想要重新消费三天之前的数据,这时候该怎么做?
8、checkpoint怎么设置的?设置在哪里?会统一管理嘛?
9、场景模拟题:
一个实时流的数据 message 就这一个字段,字段中包含了tag信息
数据类似于:message #台风#风很大,降雨较多。#山东洪水严重#这个tag就是 台风 和 山东洪水严重
求:每分钟跑一次数据,求得当前时间往前推24小时的tag数量的top100。
(有点类似于微博的热搜)
五面题(HR)
HR小姐姐很温柔。
1、为啥离职
2、以后的发展方向
3、自己都是怎么学习的
4、再就是讲了一下字节跳动的相关情况和部门的介绍
5、期望薪资,给到了你会直接来吗 等等就是上一家公司的待遇也会问到
其他的就没什么了,就是聊天的了。
好啦,今天的面试题分享就到这啦,上面这些问题你都会答吗?