一面 50 min 一位技术很强的老哥 面试体验很好
0.开场热身
- 自我介绍
- 你以后的业务倾向于做哪一块?
1.项目相关
介绍下你的第一个Spark 项目
- 双流Join,讲一下过程
- 你的数据过期时间是多久?为什么这么设置?
- 双流 join 之后你的数据会从Redis 里面删除吗?
- 你说到了用Redis 来缓存延迟的数据,如果缓存存储的数据过多会出现什么问题,怎么解决?
猜:会出现OOM问题,我觉得可以用Redis 集群来解决单个Redis 节点上数据过多的问题 - 追问场景:如果两个流,一个出现了异常,重启后两个流之间出现了很大的延迟。是不是会导致数据全部缓存到Redis 里面?
- 那么你打算怎么解决这个问题?不会啊 大家知道怎么回答这个问题吗?能不能在评论区告诉我一下,谢谢!
- 你在做Hive 数仓项目的时候有出现过数据倾斜的现象吗?是如何解决的?
先答了聚合数据倾斜,打随机数再二次聚合的方法。 - 还有哪些倾斜的场景?
继续答了join 倾斜,大表和小表join。小表复制N份大表打1-N的前缀,join,之后再聚合。忘记说采样了,面试官没有继续追问。下次再改进回答。
2. 数据结构相关
- 说一下怎么判断链表有环?
- 说一下怎么找到环入口?给出详细证明过程?
3.Java 基础相关
- 说一下HashMap 的底层实现
- 说一下重载和重写的区别
- 说一下抽象类和接口的区别
- 反射是什么?反射是怎么创建对象的
- 用过线程池吗,说一说线程池的各个参数?以及他们的含义?
- maximumPoolSize 和 corePoolSize 有关联吗?
- 说一下有哪几种拒绝策略?
4.HiveSQL 相关
两道SQL 题目
题目一
tmp表
id class score
求出每门课程前十名的人
说一下row_number(), rank(), dense_rank() 的区别
题目二
temp表
每个id(用户)会被打上不同的标签。labels. show是曝光次数,click是点击次数。
要求:求出每个label 的曝光次数和点击次数。
id labels show click
1 [a,b,c] 10 3
2 [b,c,d] 20 4
要求返回结果
label show click
a 10 3
b 30 7
c 30 7
d 20 4
面试官问:你知道UDF,UDAF和UDTF 的区别吗?这个地方列转行你觉得会用到UDAF还是UDTF?
5.算法
力扣103 二叉树 zigzag traversal
6.反问
- 有数仓相关的场景吗?
面试官答:对商家(用户)的创作内容,曝光、浏览、点击的受众进行分析。方便后续推广。 - 项目中难点是什么?
面试官答:千亿场景下的双流join(多流join),数据量超级巨大。
7.总结
首先,兄弟们知道如何回答项目部分的第五个第六个问题吗,能不能在评论区里贴一下答案,谢谢你!
我很喜欢和广告、商业化相关的场景,同时快手超大数据量也很吸引我,面试体验也很好。有一些问题答的不好,之后查漏补缺继续复习。希望能给一个二面。
二面 45 min 一位很友善的大哥
warm-up
自我介绍
职业发展规划
项目相关+基础知识
- 介绍下Spark 项目全流程
- 介绍下数仓分层架构,如何分层的
- Flume + Kafka + Scoop 的采集架构,如何保证数据的可靠性
- Redis 为什么快?
- ElasticSearch 你在项目中是怎么用的,如何建的索引?
- Spring 了解吗,说一说?
- 场景:打印错误日志,同一个链路的方法要求打出相同的数字?好像是这个题目。面试官提醒用ThreadLocal 做。这里不太了解,有懂的兄弟吗?
- 场景:现在有直播带货业务,你来搭建数仓,你会怎么去搭建?
- SQL题目:一面的题目如何反向得到 labels 列。
- Spark 和 Hadoop 的区别,说一下
- Spark shuffle 和 hadoop shuffle 的区别说一下。
撕题
K个一组反转链表
三面 40min
leader 面,leader 全程对我不感兴趣
有实习吗?
做自动驾驶的啊,讲讲自己的项目?
一道题目:二叉树最大宽度。
卡壳了,最后没编译出来。中间想和面试官沟通,也不理我,最后到时间了。
反问:觉得大数据开发过程中的难点是什么?
又吹了一波快手。
说实话终面我感觉很不舒服,面试官不想和我交流,做题过程中问提示也不理我。全程没有感觉到双方的吸引力。 就这样吧,很感谢这次经历。
#快手##秋招##面经##大数据开发工程师#