1. 项目中遇到过什么困难?你是怎么解决的?
这个当时说了下项目遇到的一些技术难点,然后讲下是怎么解决的。
2. 可以说下数据库的几个范式吗?
第一范式(无重复的列),数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。
通俗讲就是:一个字段只存储一项信息。
第二范式(属性完全依赖于主键) 定义:满足第一范式前提,当一个主键由多个属性共同组成时,才会发生不符合第二范式的情况。比如有两个属性的主键,不能存在这样的属性,它只依赖于主键中的一个属性,这就是不符合第二范式 通俗解释:任意一个字段都只依赖表中的同一个字段。
第三范式(属性不能传递依赖于主属性) 定义:满足第二范式前提,如果某一属性依赖于其他非主键属性,而其他非主键属性又依赖于主键,那么这个属性就是间接依赖于主键,这被称作传递依赖于主属性。 通俗理解:一张表最多只存2层同类型信息。
【参考:https://blog.csdn.net/qq_15037231/article/details/61628143】
3. Hive有哪些优化?
SQL语句本身的优化,及参数调优,数据倾斜的处理。
4. 可以说下数仓的一些理论吗?
主要讲了维度建模,事实表,维度表,星型模型,星座模型,雪花模型,数仓规范等。
5. 介绍一下Kylin
讲了下核心的预计算功能,存储在HBase带来的好处,还有聚合组中层级维度,必要维度等的一些操作。
6. Spark的shuffle过程是怎么样的?
【参考:https://blog.csdn.net/qq_39131779/article/details/83998194】
7. Spark的优化有哪些?
提到了持久化、复用算子,使用广播变量等。
【美团 Spark性能优化指南 基础篇:https://tech.meituan.com/2016/04/29/spark-tuning-basic.html】
【美团 Spark性能优化指南 高级篇:https://tech.meituan.com/2016/05/12/spark-tuning-pro.html】
8. JVM了解吗?GC机制?
【参考:https://blog.csdn.net/anjoyandroid/article/details/78609971】
【参考:https://blog.csdn.net/know9163/article/details/80574488】
【参考 JVM参数设置分析:https://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html】
9. HDFS写数据过程是怎么样的?如果管道断了,会怎么样?
pipeline recovery
如上图所示,pipeline 写入包括三个阶段:
- pipeline setup:Client 发送一个写请求沿着 pipeline 传递下去,最后一个 DataNode 收到后发回一个确认消息。Client 收到确认后,pipeline 设置准备完毕,可以往里面发送数据了。
- data streaming:Client 将一个 block 拆分为多个 packet 来发送(默认一个 block 64MB,太大所以需要拆分)。Client 持续往 pipeline 发送 packet,在收到 packet ack 之前允许发送 n 个 packet,n 就是 Client 的发送窗口大小(类似 TCP 滑动窗口)。
-
close:Client 在所有发出的 packet 都收到确认后发送一个 Close 请求,pipeline 上的 DataNode 收到 Close 后将相应 replica 修改为
FINALIZED状态,并向 NameNode 发送 block 报告。NameNode 将根据报告的FINALIZED状态的 replica 数量是否达到最小副本要求来改变相应 block 状态为COMPLETE。
Pipeline recovery 可以发生在这三个阶段中的任意一个,只要在写入过程中一个或多个 DataNode 遭遇网络或自身故障。
【参考:https://www.cnblogs.com/Java-Script/p/11090379.html】
【hdfs读写异常:https://blog.csdn.net/u012151684/article/details/108115727】