大数据面试看这一篇就够了

大数据面试看这一篇就够了

大数据吹牛草稿: https://blog.51cto.com/u_14932245/4730609

一. 自我介绍

二. 项目介绍

三. 八股文

  1. 维度建模理论

    1. 请解释Kimball维度建模方法与Inmon维度建模方法之间的主要区别。在数据仓库设计中,什么是维度表和事实表?请提供一些示例。
    2. 什么是数据仓库的星型模式和雪花模式?它们之间有什么区别?
    3. 请解释维度建模中的Slowly Changing Dimension(SCD)是什么,并举例说明不同类型的SCD。
    4. 在数据仓库中,什么是ETL流程?它的主要步骤是什么?
    5. 请描述Kimball维度建模中的维度层次结构是什么,为什么它对数据分析如此重要?
    6. 在维度设计中,什么是维度属性和维度度量?请提供一些示例。
    7. 什么是事实表粒度?为什么选择正确的粒度在数据仓库设计中至关重要?
    8. 在数据仓库中,什么是事实和维度之间的关系?为什么需要它们之间的关联?
    9. 在Kimball维度建模中,您如何处理不一致的数据源和数据质量问题?
    10. 请解释维度建模中的事实表的类型,例如事实表、累积快照事实表和周期快照事实表。
    11. 什么是维度建模中的维度角色?为什么它们对多维度分析有重要作用?
    12. 在维度建模中,您如何处理层次和父子关系维度?
    13. 在数据仓库设计中,如何处理大量的历史数据?请描述一种处理历史数据的方法。
    14. 请描述一下维度建模中的事实表和维度表之间的关联以支持数据分析。
  2. Hadoop

    1. 什么是hadoop? https://www.dataapplab.com/a-beginners-guide-to-hadoop/

      Hadoop是Apache的一套开源框架,核心是做大数据的存储和计算, 它包含HDFS, MapReduce, Yarn等。

    2. Hadoop的MapReduce是什么?它的工作流程是什么?https://andr-robot.github.io/Hadoop中MapReduce执行流程详解/
      MapReduce是一种适合处理大量数据的编程模型,
      它的工作流程主要分为3个阶段,
      第一阶段是map阶段,先对输入数据进行分片, 对数据切分,切分完成后由多个maptask读取并处理成KV格式.
      第二阶段为shuffle阶段, 主要是根据key键排序, 合并key相同的数据,并发送给reduce端
      第三阶段为reduce阶段, reduce端对数据进行排序合并, 得出结算结果并输出

    3. 请解释HDFS的特点和工作原理。 https://www.51cto.com/article/616576.html

      Namenode是管理节点,负责管理文件系统的命名空间(namespace)以及客户端对文件的访问。Datanode是实际存储数据的节点。HDFS暴露了文件系统的命名空间,用户能够以操作文件的形式在上面操作数据

    4. Hadoop中的数据块大小是多少?为什么选择这个大小?https://blog.csdn.net/leen0304/article/details/121902198

      在Hadoop2.x的版本中,文件块的默认大小是128M,老版本中默认是64M;
      文件块越大,寻址时间越短,但磁盘传输时间越长;
      文件块越小,寻址时间越长,但磁盘传输时间越短。
      HDFS中平均寻址时间大概为10ms;大量测试发现,寻址时间为传输时间的1%时,为最佳状态,所以最佳传输时间为10ms/0.01=1000ms=1s, 目前磁盘的传输速率普遍为100MB/s;
      计算出最佳block大小:100MB/s x 1s = 100MB,所以我们设定block大小为128MB。

    5. 什么是Hadoop的shuffle操作

      Spark之所以出现Shuffle,主要是因为具有某种共同特征的一类数据需要最终汇聚到一个计算节点上进行计算。这些数据分布在各个存储节点上,并且由不用的计算单元进行处理。这种数据打乱然后汇聚到不同节点的过程就是Shuffle。

    6. 什么是Spark,它与MapReduce有什么不同?https://www.zhihu.com/question/53354580

      Hadoop的维护成本较低,因为它主要取决于处理数据是磁盘的存储类型。而Spark的成本要高得多,因为它取决于实时数据处理的内存计算。因此,Spark需要包含大量 RAM 的旋转节点。
      Hadoop适用于批量处理和线性数据处理;而Spark更适合自发处理,以及处理实时的、非结构化的数据流。

  3. Spark

    1. Spark是什么?

      Spark也是开源的大数据集数据处理引擎。Spark 更像是 MapReduce 的 Hadoop 升级版。与Hadoop类似,Spark将大型任务分配到不同的节点上。

    2. Spark shuffle原理: https://www.jianshu.com/p/542b243d24e9

    3. Spark shuffle和MapReduce shuffle区别

      • 在 MapReduce 框架,Shuffle 是连接 Map 和 Reduce 之间的桥梁,Map 阶段通过 shuffle 读取 数据并输出到对应的 Reduce。而 Reduce 阶段负责从 Map 端拉取数据并进行计算。在整个 shuffle 过程中,往往伴随着大量的磁盘和网络 I/O。所以 shuffle 性能的高低也直接决定了整个程序的性能高低.
      • Spark 也有自己的 shuffle 实现过程。在 DAG 调度的过程中,Stage 阶段的划分是根据是否 有 shuffle 过程,也就是存在 ShuffleDependency 宽依赖的时候,需要进行 shuffle。 并且在划分 Stage 并构建 ShuffleDependency 的时候进 行 shuffle 注册,获取后续数据读取所需要的 ShuffleHandle, 最终每一个 job 提交后都会 生成一个 ResultStage 和若干个 ShuffleMapStage,其中 ResultStage 表示生成作业的最终 结果所在的 Stage。ResultStage 与 ShuffleMapStage 中的 task 分别对应着 ResultTask 与 ShuffleMapTask。一个作业,除了最终的 ResultStage 外,其他若干 ShuffleMapStage 中各 个 ShuffleMapTask 都需要将最终的数据根据相应的 Partitioner 对数据进行分组,然后持 久化分区的数据。
    4. SQL转MapReduce的过程及执行顺序: https://blog.csdn.net/weixin_36190755/article/details/108998817

    5. Spark 宽窄依赖详解: https://blog.csdn.net/modefrog/article/details/79581770

    6. RDD宽窄依赖及Stage划分****😗*** https://zhuanlan.zhihu.com/p/67068559

    7. RDD和DataFrame和DataSet三者间的区别: https://blog.csdn.net/weixin_38750084/article/details/106797136

      https://blog.csdn.net/qq_21539671/article/details/104480222

    8. 按照action划分job, 按照宽窄依赖划分stage,根据分区数划分task

    9. 常见的action算子:reduce, collect, count, take, foreach

    10. 常见的transformation算子: map, filter, flatMap, groupByKey, join

    11. Spark持久化级别: MEMORY_ONLY, MEMORY_AND_DISK, .MEMORY_ONLY_SER, .MEMORY_AND_DISK_SER, DISK_ONLY

    12. 数据倾斜如何优化

      • 业务层面:
  4. Hive

    1. Hive join转化为MapReduce任务? https://codeantenna.com/a/WAWU2bpMcq

      1)只支持等值join,因为非等值连接非常难转化为MapReduce任务

      2)可以join多个表,如果join中多个表的join的列是同一个,则join会被转化为单个MapReduce任务

      3)join时,转换为MapReduce任务的逻辑: reduce会缓存join序列中除了最后一个表的所有表的记录(具体看启动了几个map/reduce任务),再通过最后一个表将结果序列化到文件系统。这一实现有助于在reduce端减少内存的使用量。实践中,应该把最大的那个表写在最后(否则会因为缓存浪费大量内存)

      4)left semi join 经常用来替换 in和exists

  5. Flink

  6. Java

四. 算法

  1. SQL高阶函数
  2. 数组

五. 面试真题

  1. https://blog.csdn.net/bigdataprimary/article/details/120744941
    1. a,b,c三张表a join b on a.id=b.id join c on b.id=c.id有几个map-reduce? 一个, 因为join的列相同
    2. 连续登录问题:求连续登录5天以上的人
    3. 用户登录表,每次登录记录一条数据,登录时间精确到秒,求用户的登录总时长,如果两次登录时间超过三十分钟不作为连续登录,单条登录信息时间算0
    4. 微信红包, 入参:红包个数,总金额, 出参:数组,数组的长度是红包个数,数组的内容是红包的随机金额
    5. 如何评价数仓的好坏
    6. 二叉树的广度优先,深度优先实现
  2. https://juejin.cn/post/7077453675555192862
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值