首页 > 其他分享 >2023大数据面试总结

2023大数据面试总结

时间:2023-07-14 09:11:14浏览次数:53  
标签:总结 Flink Hive Kafka 面试 2023 Spark 数据

先说些废话

作为一个全栈开发工作者,曾经对公司专职的大数据开发有着浓厚的兴趣,所以尝试学习大数据开发所需要的各种技术栈。
本文就是我在学习过程中记录下,所遇到的一些大数据面试的提问,仅供参考。
当然,因为时间精力有限,并非所有的问题我都去记录了答案,如果您不了解某些问题或者不认可我记录的解答,可以带着问题百度或者问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查询组件Impala了解吗?简单介绍下
  7. Hive中的行列转换,除了case when,还有别的方法吗
  8. Hive中内部表和外部表的区别?内部表和外部表如果删除了元数据是由谁来维护?元数据的存储位置和管理者是谁
    • 从创建表和删除表两个方面说明
    • metastore,master节点上
    • mysql,metastore
  9. Hive分区和分桶的区别?分桶的原理?分区可以提高查询效率吗?分区越多越好吗
    • MR中:按照key的hash值去模除以reductTask的个数
    • Hive中:按照分桶字段的hash值去模除以分桶的个数
    • 缩小数据查询范围,提高查询效率,但是不是分区越多越好
    • Hive中如果有过多的分区,由于底层是存储在HDFS上,HDFS上只用于存储大文件而非小文件,因为过多的分区会增加NameNode的负担
    • Hive SQL会转化为MapReduce, MapReduce会转化为多个task,过多小文件的话,每个文件一个task,每个taskー个JVM实例,JVM的开启与销毀会降低系统效率
    • 合理的分区不应该有过多的分区和文件目录,并且每个目录下的文件应该足够大
    • Hive中分区是否越多越好?
  10. 如何反查哪条Hive SQL执行较慢?
  11. 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~

标签:总结,Flink,Hive,Kafka,面试,2023,Spark,数据
From: https://www.cnblogs.com/fx67ll/p/bigdata-interview-list.html

相关文章

  • 2023.7.13 鲜花
    早晨:短暂地打了一会联考,然后看学弟打枪战&下棋。下午:好困好困,补觉补觉。晚上:下棋+学习国际象棋+围观别人下棋。真的是充实的一天!怎样才能不摆啊?怎样才能不摆啊?怎样才能不摆啊?怎样才能不摆啊?怎样才能不摆啊?怎样才能不摆啊?怎样才能不摆啊?......
  • web前端 第五天总结
    案例1:js初体验<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</t......
  • C++面试八股文:什么是构造函数?
    C++面试八股文:什么是构造函数?某日二师兄参加XXX科技公司的C++工程师开发岗位第29面:面试官:什么是构造函数?二师兄:构造函数是一种特殊的成员函数,用于创建和初始化类的对象。构造函数的名称与类的名称相同,并且没有返回类型。构造函数在对象被创建时自动调用。structFoo{F......
  • 概率期望做题方法总结
    1.概率其实我个人感觉我概率是非常不错的。常有的求解方法为a.定义法(发生次数/总次数)b.dp大法(常用于有顺序的应用题)c.然后就是乱搞贪心(也不失为一种选择)d.还有排列组合也有可能2.期望期望中,我对“无限不可列”的那种非常恼......
  • 2023.7.13拷逝
    T1原题链接看到最大值最小,考虑二分答案。接下来考虑如何构造\(b\)数组。因为\(b\)数组单调不减,所以当前的\(b\)越小,对后面的影响越小。所以构造时尽量小地构造\(b\),如果无法构造,说明当前的二分值不合法;如果构造成功,说明合法。\(code:\)#include<iostream>#include<cs......
  • 2023年 1月 做题记录
    LOJ#10132异象石题目简述:支持对树上一点集删单点和加单点的操作,询问点集组成的虚树的边权之和(虚树边权为原树上两点间距离)。做法:考虑给定点集答案的求法,将其中的点按dfs序排序,使dfs序从小到大的点依次相邻,同时使dfs序最大和最小的相邻,构成一个环。环上相邻点的距离就是答案。......
  • 2023年 2月 做题记录
    前言:记录2月一些好题的解法,同时有可能会补以前写过的题目。CF718CSashaandArray对于每一个下标\(i\)记数对\(S_i=(a_i,b_i)\)。代表第\(i\)个位置斐波那契数列的前第\(0\)项和第\(1\)项是\(a_i\)和\(b_i\)。例原数组中\(a[3]=3\),则\(S_{3}=(1,2)\)。考虑对......
  • 7月12日面试查漏补缺
    1.巩固mysql的B+树优势,以及mysql究竟在哪里处理数据。MySQL既可以在磁盘中处理数据,也可以将数据加载到内存中进行处理,这取决于具体的配置和使用情况。通常情况下,MySQL会将热数据(经常被访问的数据)加载到内存中进行处理,而把冷数据(不经常被访问的数据)保留在磁盘上。这可以提高查询效......
  • 暑假训练2023.7.13
    CodeforcesRound884(Div.1+Div.2)A.SubtractionGame简单构造,输出a+bB.Permutations&Primes2和3都是质数,1不是,因此满足条件的区间一定包含1。把1放到序列最中间,2和3放到两端其他数字随意排列,可以证明此序列得到的素数mex的个数最大,为\(\lfloor\frac{n+1}{2}\rfl......
  • 2023-07-13:如果你熟悉 Shell 编程,那么一定了解过花括号展开,它可以用来生成任意字符串
    2023-07-13:如果你熟悉Shell编程,那么一定了解过花括号展开,它可以用来生成任意字符串。花括号展开的表达式可以看作一个由花括号、逗号和小写英文字母组成的字符串定义下面几条语法规则:如果只给出单一的元素x,那么表达式表示的字符串就只有"x"。R(x)={x}例如,表达式"a"......