当前位置: 首页 > 面试经验 >

【星环3面已OC】大数据后端开发

优质
小牛编辑
151浏览
2023-03-28

【星环3面已OC】大数据后端开发

前言

星环感觉整个流程非常不错,二面面试官不是搞大数据的,但是交流上感觉到了尊重,面试实在7月份,八月份就给意向了,进展到十月份了对比看来星环流程真的不错(PDD推荐组某个面试官一生黑),看到大数据后端已经不招人了,但是可能会拒掉

一面

忘记了没有记录

二面

1.1. HBASE架构

1.2. Regionserver结构

1.3. Hbase避免热点数据(Rowkey的设计)

[大白话彻底讲透 HBase Rowkey 设计和实现! - 腾讯云开发者社区-腾讯云 (tencent.com)](https://cloud.tencent.com/developer/article/1786752#:~:text=HBase 中的行是按照 Rowkey,的字典顺序排序的,这种设计优化了 scan 操作,可以将相关的行以及会被一起读取的行存取在临近位置,便于 scan。)

我谈到HBASE预分区了,预分区的步骤:1.先确定rowkey范围(现在和未来),2.根据rowkey预先分区。在第一部就需要设计rowkey就会有解决热点数据的问题

1.4. 深入问了Hbase预分区(离散key怎么预分区)

这里不太理解面试官的问题,我本身把HBAS忘光了,就在这结束了

2.1 Kafka Producer Batch

在新建ProducerBatch时需要评估这条消息的大小是否超过batch.size,如果不超过,就以batch.size的大小来创建这个ProducerBatch,这样在使用完后还可以通过BufferPool的管理进行复用。若果超过,则以消息的大小来创建ProducerBatch,此内存区域不会被复用。

  • pool:32M
  • batchsize:16K

2.2 聊到 producer端 sender线程里的InFlightRequests

这里没讲清楚,其实Sender线程发送的时候就指定了ACK。。。。。

2.3 怎么提高Kafka消息发送的吞吐量

  1. batch size 加大,增加一次发送消息的大小
  2. buffer memeory 加大,防止sender阻塞
  3. compression.type,降低了消息的size,也能增加一次发送消息的数量
  4. 超时时间设置短一点

2.4 kafka partition 分区策略/过程

一开始我说的controller,后来记混了说到consumer端的Coordinator了

Apache-Kafka 核心组件和流程-控制器 (qq.com)

2.5 kafka 3.0 raft协议竞选 controller

聊了一下ZAB和raft对比,面试官也刚看了raft论文,所以raft应该重点去研究一下

3.1 I/O(异步IO非阻塞与阻塞概念?)

卡到异步非阻塞IO?不知道面试官聊的异步IO是什么?

3.2 使用I/O资源有什么需要注意的点

答案是要关闭(我吐了,我想得很复杂,就这?),顺口说了一句可能我coding比较少,居然没有想起这个概念,然后这句话被它记下来了,可恶。

3.3 I/O不关闭会出现什么问题

JVM的GC不会帮助释放I/O这类的操作系统资源,对于系统I/O资源一般需要手动去请求操作系统关闭。

3.4 tcp四次挥手流程+问标记位记没记

直接摆烂说只记了主要流程

4.1 二叉树层次逆序遍历

最后估计面试官把DFS和BFS搞混了,我们说的牛头不对马嘴

5.1 Java队列,问HashMap

我说我只看了concurrentHashMap,面试官问了HashMap扩容,我说我能说concurrentHashMap的扩容吗,说完之后,面试官说很不一样

星环3面

介绍一个印象最深的项目(高频,按start逻辑描述)

HDFS写文件流程

我没说完整,client在写完所有block时,会close掉这个输出流,NN会把该文件标记为可用状态,这时候整个写入流程才结束,没有close()直接被3面面试官抓住了啊。

Java垃圾回收机制

没讲清楚ZGC的并发标记与并发回收,ZGC的流程应该重点看一看,为什么会有短暂停顿,不熟练!

JVM调优、解决频繁Full的方法、解决热点代码耗时方法

直接给干趴下,JVM调优内容,细到问什么工具,我直接摆烂不会

IDEA写求二叉树最大深度

递归写完了,非递归脑子宕机了,没写出来

Flink如何实现 Exactly-once(实时数仓如何保证这个语义)

这里没讲清楚,我讲知识点一直有个心里假设怕对方知道不想讲很多细节,但是面试就是要细节,所有要做到事无巨细

  1. Flink与Kafka如何实现Exactly-once:通过 基于ck的两阶段提交协议 与 Kafka事务 来保证不同存储层之间传输的 Exactly-once
  2. Flink与OLAP直接一般是通过下游的幂等性+At-least-Once来提供Exactly-once(事务也可以,但是实时性会受影响)

怎么处理小文件问题

回答方式:如何预防小文件 与 如何处理小文
小文件是热点面试题,我用Flink-Hudi小文件产生的原因与避免方式去讲解了。面试官的点应该是如何处理小文件,是小文件已经产生后的处理策略。

  • Hive ORC表可以合并分区里的小文件
  • Hive知道reducer数量覆盖旧表也可以减少小文件
  • parquet文件也有工具合并

数据倾斜遇到过吗?怎么解决?

我直接说我没遇到过,然后谈谈了谈常见的解决方案,但是回答逻辑有问题
分Groupby 与 join

  1. 引擎自带的解决方案
  2. 用户解决方案

20G int数据 内存2G,找出重复的数据

 类似资料: