数据结构和算法篇
- list 反转,合并,两个list 是否相交。
- 排序。
- 二叉树,最近公共祖先。
- DFS
- BFS
- 动态规划。
编程语言篇–Java
- HashMap的实现,与ConcurrentHashMap区别。
- volatile 的作用,与synchronize 的异同。
- 了解的设计模式,单例模式的实现。
Hadoop篇
- MapReduce作业流程,其中有几次排序。
- Yarn任务调度过程,Yarn的调度方法。
- MR Shuffle 过程。
Hive
- row_number 与 rank 的区别。(窗口函数之排名函数)
- 行转列: lateral view explode 。列转行collect_set, collect_list, sort_array, concat / concat_ws() 。
- Hive窗口函数怎么设置窗口大小?
- order by,sort by,distribute by,cluster by 区别
- Map,Reduce 个数怎么设置?
- SQL数据倾斜有哪些原因?怎么优化 ()
- 使用的是什么数据压缩格式。(parquet 列储存,不需要支持事务,支持spark/impalga)
- HQL怎么转成MR任务的。(Hive 架构)
- HQL 中UDF,UDAF,UDTF 是否了解,实现过UDF吗?(自定义UDF)
- 怎么验证Hive SQL 的正确性?(将多个阶段拆开执行与整体执行比较结果。与其他渠道比较结果)
- join操作底层的MapReduce是怎么去执行的 ?(MR 的过程)
##SQL应用题:
- 一个login_in表,userid、login_time、ip,数据量很大,
需求:- 一个人可能有多条登录数据,取出最近10个登录的用户。
- 统计登录的总条数( PV )和登录的总人数 (UV)。
- 一个用户好友表 userid , follow_list (该用户的好友id数组)
A [B, C, D]
B [A, C]
C [D]
需求:- 统计这个表有多少对好友
Spark
- Spark任务执行过程。()
- Spark的内存管理模型。()
- 讲讲Spark shuffle 以及它与 MR shuffle 的异同。
- Spark Shuffle bypass模型。
- Spark cache,checkpoint,持久化。
Flink
- Flink 架构
- Flink 如何做到Exactly-once
- Flink state 有哪些,用过哪些。
- 如何做内存调优。
- 是否遇到过 OOM,怎么处理。
- Flink 的反压机制,与Spark Streaming 反压的区别。
- Flink 窗口函数,时间机制,checkpoint机制。
- Flink 双流join。
- Flink 维表关联有哪些方式,数据量大时怎么处理。
数仓
- 项目的数仓分层。
- 范式建模和维度建模的区别。
- 型模型和雪花模型的区别。
- 设计统计各渠道用户留存的模型。
- 缓慢变化维怎么处理。拉链表的插入与回滚。(dw.his 表和ods.info 表join加union后插入dw.his)
- 数据怎么同步到数仓的,怎么保证数据不丢失。
- 数据质量怎么控制。
- 数据规范怎么定义的。
- 如何进行元数据管理。
kafka
- Kafka 消费者怎么从Kafka取数据的 。
- Kafka生产消费怎么保证Exactly Once(producer端的幂等,ack机制。消费者端的异步commit等等)。
- Kafka怎么保证有序性的(参数:1.retries. 2. MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION=1)。
- Kafka Controller是做什么用的 (leader分区选举)。
- Kafka 多副本leader如何选举 (ISR 集合中选)。
- Kafka 消费者组重平衡流程是怎样的 (consumer总选一个来分配消息与消费者的对应关系,然后发给brokcer)。
- 如何查看消费者的消费进度。
Hbase
- rowkey 如何设计。()
- 热key 问题怎么解决。
- Hbase 的读写流程。
- 使用过程中做过哪些优化。二级索引。
- compact 机制及其作用。
Redis
- 哪些数据结构(string/list/set/zset/hash)。
- 各种数据结构底层实现方式()。
- 数据持久化及其优缺点(rdb: 二进制快照,性能高。aof: 性能高)。
- 一致性hash。