先说些废话

作为一个全栈开发工作者,曾经对公司专职的大数据开发有着浓厚的兴趣,所以尝试学习大数据开发所需要的各种技术栈。

本文就是我在学习过程中记录下,所遇到的一些大数据面试的提问,仅供参考。

当然,因为时间精力有限,并非所有的问题我都去记录了答案,如果您不了解某些问题或者不认可我记录的解答,可以带着问题百度或者问ChatCPT,相信会给您留下更深刻的印象。

最后,读者可以把本文当作模拟面试的提纲,欢迎各位在评论区交流,大家一起成长,努力变得更强!!!

高频基础知识点

执行过程

  1. MapReduce 的执行过程,如何进行一个文件的计算,shuffle的过程(不需要手写MapReduce或者用java写MapReduce)
  2. HDFS 的读写流程
  3. Yarn 的任务提交流程,如何查看任务日志和报错信息
  4. Hive 的执行过程(Hive SQL 如何解析成MapReduce的)
  5. Spark 任务的执行过程
  6. Spark SQL 的底层执行过程

Linux

  1. 如何查看内存,CPU占用
  2. Shell脚本如何定义函数调用
  3. Shell脚本第一行:#!/bin/bash的含义
    • 第一行的内容指定了shell脚本解释器的路径,而且这个指定路径只能放在文件的第一行
    • 第一行写错或者不写时,系统会有一个默认的解释器进行解释
  4. Linux脚本授权是什么?Linux授权命令是什么?
    • chmod [{ugoa}{+-=}{rwx}] [文件或目录]
    • chmod [mode=421] [文件或目录]
  5. Shell标准输出和标准错误是什么?
  6. 工作中常用的Linux命令有哪些?

MySQL

  1. sql的执行计划,执行错误报警机制
  2. 索引有什么优缺点
  3. 什么时候会导致索引失效
  4. 如果我给一张表的所有字段添加索引会有什么样的问题
  5. 如何进行sql调优 高频

Hadoop(HDFS/MapReduce/Yarn)

  1. Haddop3对于Hadoop2有哪些新特性
  2. HDFS 常用命令有哪些
  3. 工作中遇到 MapReduce 流程的相关问题如何排查
  4. 其他问题汇总

Hive

  1. 工作中如何进行Hive优化 高频
  2. Hive中有任务跑的时间比较长,怎么优化
  3. Hive任务处理过程中遇到过什么样的问题
  4. Hive SQL 查询比较慢(数据倾斜),怎么处理
  5. Hive的参数设置用过哪些,有什么作用
  6. Hive中表关联方式join的分类、用法、应用场景
  7. 什么时候会走MapJoin
  8. 什么情况下会产生Hive小文件,小文件有什么危害
  9. Hive的查询过程,哪些方法可以提高查询效率 变相的问优化
  10. Hive的窗口函数,常用窗口函数,怎么使用
  11. Hive SQL的数据去重方式
  12. 项目中Hive有多少表
  13. Hive查询组件Impala了解吗?简单介绍下
  14. Hive中的行列转换,除了case when,还有别的方法吗
  15. Hive中内部表和外部表的区别?内部表和外部表如果删除了元数据是由谁来维护?元数据的存储位置和管理者是谁
    • 从创建表和删除表两个方面说明
    • metastore,master节点上
    • mysql,metastore
  16. Hive分区和分桶的区别?分桶的原理?分区可以提高查询效率吗?分区越多越好吗
    • MR中:按照key的hash值去模除以reductTask的个数
    • Hive中:按照分桶字段的hash值去模除以分桶的个数
    • 缩小数据查询范围,提高查询效率,但是不是分区越多越好
    • Hive中如果有过多的分区,由于底层是存储在HDFS上,HDFS上只用于存储大文件而非小文件,因为过多的分区会增加NameNode的负担
    • Hive SQL会转化为MapReduce, MapReduce会转化为多个task,过多小文件的话,每个文件一个task,每个taskー个JVM实例,JVM的开启与销毀会降低系统效率
    • 合理的分区不应该有过多的分区和文件目录,并且每个目录下的文件应该足够大
    • Hive中分区是否越多越好?
  17. 如何反查哪条Hive SQL执行较慢?
  18. Hive查询在工作中遇到什么样的难点?如何解决?

Hbase

  1. Hbase查询用的多吗,有没有做过优化?
  2. Hbase查询过滤器用过吗,简单介绍下
    • RowFilter、FamilyFilter、QualifierFilter、ValueFilter
    • SingleColumnValueFilter、SingleColumnValueExcludeFilter、PrefixFilter、PageFilter
    • 多过滤器综合查询FilterList
    • HBase过滤器查询
  3. 用户画像的构建是Hbase做的吗?特征值怎么提取的?
  4. 项目Hbase的RowKey是如何设计的?

Scala

  1. Scala有什么特性
  2. Scala的class和case class在使用层面有什么区别
  3. Scala的Option类型的作用与使用方法
  4. Scala的泛型斜变逆变
  5. Scala的函数柯里化了解吗?优点是什么?
  6. Scala的隐式函数、隐式转换
  7. Scala用过哪些函数
  8. Scala中的String是可变的吗?
    • String是一个不可变的对象,所以该对象不可被修改,这就意味着你如果修改字符串就会产生一个新的字符串对象,但其他对象,如数组就是可变的对象
    • String对象是不可变的,如果你需要创建一个可以修改的字符串,可以使用String Builder
    • Scala:字符串
  9. Scala是否可以多继承
    • Scala中的多重继承由特质(trait)实现并遵循线性化规则
    • 在多重继承中,如果一个特质已经显式扩展了一个类,则混入该特质的类必须是之前特质混入的类的子类
    • 这意味着当混入一个已扩展了别的类的特质时,他们必须拥有相同的父类

Spark

  1. 你了解Spark的序列化吗?Spark提供了哪些序列化类?
  2. Spark中RDD持久化了解过吗?
  3. Spark算子分类?常用算子?怎么使用的? 高频
  4. Spark的惰性计算机制了解过吗?(懒加载)
  5. 工作中如何进行Spark优化? 高频
  6. Spark的Stage和Task的划分?Task数目由什么决定?
  7. Spark的宽窄依赖了解过吗?
  8. Spark如何查看日志和排查报错问题?
  9. 工作中跟有没有遇到到Spark数据倾斜,如何处理的?
  10. Spark Streaming怎么保证精准的消费?
  11. Spark在工作中遇到什么样的难点?如何解决?

Spark面试资料合集

  1. Spark面试八股文
  2. Spark吐血整理
  3. Spark学习笔记
  4. 上万字详解Spark Core

Kafka

  1. 简单介绍下kafka的核心概念及个人理解
  2. Kafka在数据传输过程中遇到重复数据怎么处理
  3. Kafka在使用过程中如何保证数据不丢失
  4. Kafka中的ack含义是什么

Kafka面试八问

大厂面试官竟然这么爱问Kafka,一连八个Kafka问题把我问蒙了?

  1. 为什么要使用Kafka?
  2. Kafka消费过的消息如何再消费?
  3. Kafka的数据是放在磁盘上还是内存上,为什么速度会快?
  4. Kafka数据怎么保障不丢失?
  5. 采集数据为什么选择Kafka?
  6. Kafka重启是否会导致数据丢失?
  7. Kafka宕机了如何解决?
  8. 为什么Kafka不支持读写分离?

Java

  1. Java的io流分类
  2. Java怎么写事务
  3. MyBatis怎么使用事务
  4. Java的内部类和外部类
    • 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类
    • 内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类
    • 静态成员内部类:使用static修饰类
    • 非静态成员内部类:未用static修饰类,在没有说明是静态成员内部类时,默认成员内部类指的就是非静态成员内部类
  5. Java中全局变量、静态全局变量、静态局部变量和局部变量的区别
  6. Java中重写与重载之间的区别
  7. Java中的final关键字
  8. Java的jvm了解吗
  9. 多线程,线程启动个数如何确定?最多多少?
  1. Flink-cdc介绍一下
  2. Flink和Spark的区别是什么?
  3. 你们之前使用Spark做实时,后来为什么使用Flink了?
  4. Flink的windowapi的分类介绍一下
  5. Flink常用算子介绍一下
  6. Flink的cep了解么?怎么使用的?
  7. Flink的水位线了解吗?可以具体讲讲吗?
  8. 你们Flink主要使用api开发还是sql开发?
  9. 能讲讲Flink双流join是如何实现的吗?

Flink面试资料合集

  1. Flink面试八股文
  2. Flink面试大全总结
  3. Flink高频面试题
  4. Flink学习笔记

clickhouse

  1. 你们有有过clickhouse做join吗?如何保证秒级延迟?

涉及到项目和数仓的问题

  1. 简单介绍一下你们项目中的业务吧
  2. 能结合业务说说你们的数仓怎么搭建的吗?你负责哪些模块?
  3. 你们项目中的人员怎么分配的?
  4. 你们的主题是根据什么来划分,为什么这么划分?
  5. 你们源数据大概多少张表?
  6. 你们的日志数据到建立事实表的过程中,主要做了什么?
  7. 你们的维度层是怎么建设的
  8. 如果在解析日志文件时遇到很多的硬编码,如何使用维度去解决?
  9. 你们的项目中有多少个指标?负责过多少个?怎么编写的?
  10. 如果指标出现同义不同名的情况如何解决?
  11. 阿里的oneData体系有了解吗?
  12. 你们如何保证数据质量的?你日常遇到最多的数据质量问题是什么?
  13. 你的项目中离线任务有多少个?任务执行的时间是什么时候?
  14. 你的项目中数据量,日活,漏斗分析大概是多少?以及其他分析的方向?
  15. 你们项目中的业务数据清洗是怎么做的?
  16. 数仓的整体架构是什么样的?数仓是如何分层的?
  17. 介绍一下项目中的数据流向
  18. 介绍一下项目中处理后的数据用途
  19. 数仓中的增量表全量表分别是怎么做的?有没有用过拉链表
  20. 工作中有没有遇到的数据倾斜?如何处理的?
  21. 工作中有没有遇到过断点续传的问题?怎么处理的 这个问题具体技术具体处理
  22. 你的数据建模经验介绍一下?
  23. Java框架在你们项目中的应用?
  24. 你在实时开发的过程中遇到什么问题?如何解决的?
  25. 你们的实时模型是如何进行优化的?怎么评估它是否是一个优质的模型?
  26. 你们的任务监控有做过吗?主要监控什么?
  27. 你们如何保证数据的准确性
  28. 埋点数据缺失怎么处理,埋点数据相关的表示如何设计的?
  29. 零点漂移如何解决?
  30. 有做过用户路径模型吗?每条路径的转化率是多少?(是不是类似页面单跳率那种)
  31. 你们的OLAP引擎主要用的什么?为什么这样选型?
  32. 能聊聊端到端的一致性精准一次消费吗?

工作内容的问题

  1. 你们的需求周期一般是多久?拿到需求之后怎么分析?
  2. 在完成需求的过程中,有没有考虑过数仓的通用性,你们是如何体现的?
  3. 你在工作中的最大收获是什么,带给你什么样的能力?
  4. 你们的工作强度怎么样,能接受加班吗?
  5. 如果一周内让你做十个紧急的需求,你会怎么办?
  6. 你们部门之间是直接进行对接吗?
  7. 有没有反驳过产品提出的需求,如果不合理怎么办?

各种组件需要学到什么样的程度

hadoop学习到什么样的程度

  1. hdfs、mapreduce、yarn 基本原理即可
  2. 各种面试基本题完成即可
    • MapReduce的执行过程,如何进行一个文件的计算,shuffle的过程(不需要手写mapreduce或者用java写mapreduce)
    • HDFS的读写流程
    • Yarn的任务提交流程,如何查看任务日志和报错信息
  3. 大多数公司可能都进入spark阶段了

spark学习到什么样的程度

  1. 主要为了优化mapreduce2的一些问题,利用内存计算,减少磁盘IO
  2. spark streaming + hbase 离线实时 -> 使用flink搭建一整套实时
  3. 熟悉spark开发的api和常用的算子
  4. 熟悉spark调优
  5. spark的应用:批处理,流处理流计算(flink和sparkstreaming),数据分析,图形计算

spark面试重点

  1. 一些八股文知识点,基本原理,是高频且必须熟练知晓的,核心原理的流程和图
  2. spark常见报错的解决方案
    • real spark冲突怎么解决
    • om怎么处理,driver的om和excute的om分别怎么处理
  3. 参数调优,集群层面调优,应用层面调优
    • 为什么这么做
    • 有没有更好的方案
  4. sparksql调优
    • 调优场景
    • 怎么发现问题的
    • 发现问题后怎么定位问题的
    • 定位问题后怎么解决的
    • 解决之后达到什么样的一个效果
    • 还有哪些更好的一些优化方案吗
  5. 根据业务场景现场写sql,根据数仓的理论优化sql
    • 常规的业务逻辑,join,for函数,截取字符串,嵌套多个高级函数
  6. 企业开发使用场景的解决方案
    • udf管理:统一仓库管理还是自己提交,怎么解决相同含义的sql function被重复的udf提交
    • thift server怎么用的,怎么用的,怎么解决多租户,怎么解决权限,怎么解决负载均衡
  7. spark平台和二次开发,源码,遇到的问题详细问
  8. 面试流程相关
    • 10-20分钟问项目
    • 20分钟问编程基础
    • 20分钟问组件
    • spark问20分钟左右

spark畅谈

  1. 小公司大部分业务场景是离线开发,实时场景也较少
  2. 大公司80%离线,20%实时
  3. sparkstreaming批处理比flink批处理更快,性能差百分之五十左右,spark使用门槛较低
  4. 入职后可以想老员工讨教经验,核心组件
  5. 博客快速浏览一些内容
  6. 官网提供的一些例子

未来技术趋势

  1. 万字详解数据仓库、数据湖、数据中台和湖仓一体
  2. 一文读懂大数据实时计算
  3. 20000字详解大厂实时数仓建设

附录

面试资料总结

  1. 大数据面试吹牛草稿V2.0
  2. 史上最全大数据面试题​V3.1
  3. 精选大数据面试真题10道

大厂面试总结

  1. 字节跳动大数据开发面试题-附答案
  2. 美团优选大数据开发岗面试真题-附答案详细解析

我是 fx67ll.com,如果您发现本文有什么错误,欢迎在评论区讨论指正,感谢您的阅读!
如果您喜欢这篇文章,欢迎访问我的 本文github仓库地址,为我点一颗Star,Thanks~ 😃
转发请注明参考文章地址,非常感谢!!!

Q.E.D.


Hi!欢迎访问 fx67ll.com 的个人博客站点!Code is my life ~