被暴捶的字节提前批后端开发-data三面凉经
三面:一小时十分钟 已挂
项目:
- 你对离线还是实时处理比较擅长
- Spark 和 Flink 的区别
- spark 使用的版本
- 你用spark streaming 不用flink 最后项目的效果是怎么样的啊
- 双流join 的具体过程。流A和 流B 具体用什么表示?join的时候如何判断两个同时存在
- Kafka 如何实现消息的有序消费?(指定partition或指定key)
- 指定partition的话,如果发生了数据倾斜,一个key 的数据全发到了一个partition会出现什么问题 不会😰
- 我回答会造成OOM,突然想到Kafka 数据是落在磁盘的。答什么内存溢出啊。追问:为什么会内存溢出?😰不知道,答得可能磁盘会满。
- 那怎么解决这种造成的Kafka 的倾斜问题?不会😰
- Kafka 同步消费和异步消费知道吗?
- 说一下Kafka 的分区是如何进行leader election 的?
- 说一下Kafka 如何实现高吞吐?
- 说一下零拷贝技术?说一下传统 IO 四步操作?
做题:
题干:Atoi 实现 public static long valueOf(String str)
注意以下几个点:
- 异常处理(RuntimeException),
- 状态机
- MIN_VALUE,MAX_VALUE处理
追问:这个方法是线程安全的吗?一开始回答的是需要加synchronized关键字,后来改口String不可变变量线程安全。好像答的不对。有人知道怎么答麻烦告知一下。
追问:synchronized 对静态方法加锁是怎么实现的?说下内部原理?不会😥 有人知道这个怎么回答吗?
八股:
栈里面可以有对象吗?不会
虚拟机栈里面存的是什么?
如何判断对象可回收?
GC Roots 有哪些?
场景题目:
设计一个缓存系统,10万条<key,val> 存到五台机器上如何设计?呵呵,这是让我从头设计一个Redis吗?😨
我说可以用Redis 的集群实现。面试官说,别用Redis,自己设计一个。
我:先说的按照range 分到五台上,对于数据倾斜的加上随机数在存到五台机器上
面试官:我想得到一个key,怎么知道去哪台机器上拿?如何拿到?我模拟 namenode 说的记录key和所在的块的位置,面试官给否了
我:再挣扎一下,给自己挖个大坑。我觉得也可以用哈希把key 分散到五台机器上
面试官:那再加上一个机器不就是要rehash了吗? Rehash 你打算如何去解决?不会 😥
面试官:行吧,那先这样,如果一台机器宕机了咋办
我:我觉得可以多副本,然后一个副本放在本机,另外两个放到其他的两个机器上
面试官:你还没有回答我怎么去找到缓存的key啊
我:我好像理解成设计分布式文件系统了,要的是设计cache。
时间到了,就这样吧。😥大家知道这道场景题怎么答吗?蹲一蹲
反问:
新人培养机制:面试官吹了一波字节平台好,场景多,业务线多,锻炼人适合应届生。
对我有啥建议:建议好好享受学校生活,有时间多出去玩
总结:
首先,有兄弟知道项目部分中中7,8,9如何去解决Kafka 的倾斜问题的?能不能在评论区里贴一下答案,谢谢!
这次面试暴露出自己看八股不仔细,重点知识没研究透。还有自己项目里面的细节,要给别人讲的项目重难点没有彻底搞明白很被动。发下凉经攒攒人品,继续加油加油加油!!!