史上最全的2023最新大数据面试笔记【200+页,10w+字】

简介:我本硕都是双非计算机专业,研二开始学习大数据开发的相关知识,从找实习到秋招,投递过100+公司,拿到过10+的offer,包括滴滴、字节、蚂蚁、携程、蔚来、去哪儿等大厂,现在已经签约蚂蚁数据研发工程师。依稀还记得刚开始找工作,从零开始准备八股文的时候,心情超级浮躁,不知道该准备哪些内容(大数据组件实在太多了!!!),不知道哪些是重点,在这里感谢一下CSDN平台,提供了大量的面经,让我更快的抓住面试重点。在找工作的整个过程中,有了和面试官无数次交锋的机会,终于总结出了一份最强大数据面试笔记,非常好用!!!最后,为了回馈CSDN,决定将自己总结的所有面试重点题目开源出来,供大家学习参考!!!

全文共分为八大部分,涵盖大数据开发JAVA计算机基础数仓理论SQL场景等面试题

第一部分 大数据开发

HDFS面试重点

1. HDFS的架构

2. HDFS的读写流程

3.HDFS中,文件为什么以block块的方式存储

4. 小文件过多有什么危害,你知道的解决办法有哪些

5.在NameNode HA中,会出现脑裂问题吗?怎么解决脑裂

6. 简述hadoop压缩和解压缩的框架

7.namenode的安全模式有了解吗

8. Secondary NameNode 了解吗,它的工作机制是怎样的

9. 在上传文件的时候,其中一个 DataNode 突然挂掉了怎么办

10. 在读取文件的时候,其中一个块突然损坏了怎么办

11.介绍namenode宕机的数据恢复过程

12. NameNode 在启动的时候会做哪些操作

MapReduce面试重点

1. 简述MapReduce整个流程

2. 手写wordcount

3. join原理

4. 文件切片相关问题

5. 环形缓冲区的底层实现

6. 全排序

7. MapReduce实现TopK算法

Yarn面试重点

1. 简述yarn 集群的架构

2. yarn 的任务提交流程是怎样的

3. yarn的资源调度的三种模型

4. 简述Hadoop1.0 2.0 3.0区别

5. 任务的推测执行(spark ui见过)

Zookeeper面试重点

1. 简述leader选举机制

2. 简述什么是CAP理论,zookeeper满足CAP的哪两个

3. zookeeper集群的节点数为什么建议奇数台

4. 简述ZooKeeper的监听原理

5. 请说一下zookeeper的典型应用场景有哪些

6. 客户端向服务端写数据流程

7. zookeeper是如何实现分布式锁的

8. Paxos算法

9. Zab协议

Flume面试重点

1. 简述flume基础架构

2. 请说一下你提到的几种source的不同点

3. 简述flume的事务机制

4. flume采集数据会丢失吗

5. 简述flume的channel selector

Kafka面试重点

1. 为什么要使用kafka

2. 简述kafka的架构

3. 命令行操作

4. 生产者发送流程

5. 简述kafka的分区策略

6. kafka是如何保证数据不丢失和数据不重复

7. kafka中的数据是有序的吗,如何保证有序的呢

8. zookeeper在kafka中的作用有哪些

9. broker工作流程

10. 简述kafka消息的存储机制

11. kafka的数据是放在磁盘上还是内存上,为什么速度会快

12.kafka消费方式

13 kafka消息数据积压,消费者如何提高吞吐量

14. 你知道Kafka 单条日志传输大小吗

15. Kafka为什么同一个消费者组的消费者不能消费相同的分区

HBase面试重点题

1. 简述HBase的数据模型

2. HBase和hive的区别

3. HBase的基本架构

4. 简述HBase的读写流程

5. HBase在写过程中的region的split时机

6. HBase 中 compact 用途是什么,什么时候触发,分为哪两种,有什么区别

7. 热点现象怎么产生的,以及解决方法有哪些

8. 说一下HBase 的 rowkey 设计原则

9. 列族的设计规则

Hive面试重点

1. 简述hive

2. 简述hive读写文件机制

3. hive和传统数据库之间的区别

4. hive的内部表和外部表的区别

5. hive静态分区和动态分区的区别

6. 内连接、左外连接、右外连接的区别

7. hive的join底层实现

8. Order By和Sort By的区别

9. 行转列和列转行函数

10. grouping_sets、cube和rollup

11. 自定义过UDF、UDTF函数吗

12. hive3的新特性有了解过吗

13. hive小文件过多怎么办

14. Hive优化

15. 常用函数的补充

Spark面试重点

1. 简述hadoop 和 spark 的不同点(为什么spark更快)

2. 谈谈你对RDD的理解

3. 简述spark的shuffle过程

4. spark的作业运行流程是怎么样的

5. spark driver的作用,以及client模式和cluster模式的区别

6. 你知道Application、Job、Stage、Task他们之间的关系吗

7. Spark常见的算子介绍一下(10个以上)

8. 简述map和mapPartitions的区别

9. 你知道重分区的相关算子吗

10. spark目前支持哪几种分区策略

11. 简述groupByKey和reduceByKey的区别

12. 简述reduceByKey、foldByKey、aggregateByKey、combineByKey 的区别

13. 宽依赖和窄依赖之间的区别

14. spark为什么需要RDD持久化,持久化的方式有哪几种,他们之间的区别是什么

15. 简述spark的容错机制

16. 除了RDD,你还了解spark的其他数据结构吗

17. spark调优

18. 谈一谈RDD,DataFrame,DataSet的区别

19. Hive on Spark与SparkSql的区别

20. sparksql的三种join实现

21. 简单介绍下sparkstreaming

22. 你知道sparkstreaming的背压机制吗

23. SparkStreaming有哪几种方式消费Kafka中的数据,它们之间的区别是什么

24. 说一下你知道的DStream转换和输出原语

25. 简述SparkStreaming窗口函数的原理

Flink面试重点题

1. 简单介绍一下Flink

2. Flink和SparkStreaming区别

3. Flink的重启策略你了解吗

4. Flink的运行依赖于hadoop组件吗

5. Flink 集群有哪些角色?各自有什么作用

6. 简述flink运行流程(基于Yarn)

7. max算子和maxBy算子的区别

8. Connect算子和Union算子的区别

9. Flink的时间语义有哪几种

10. 谈一谈你对watermark的理解

11. flink对于迟到或者乱序数据是怎么处理的

12. flink中,有哪几种类型的状态,你知道状态后端吗

13. Flink是如何做容错的

14. Flink 是如何保证 Exactly-once 语义的

15. flink是如何处理反压的

16. Flink 是如何支持批流一体的

17. 你用过Flink CEP吗,简单介绍一下

第二部分 Java开发

java基础

1. JDK、JRE、JVM三者区别和联系

2. 基本数据类型和引用数据类型的区别

3. 8种基本数据类型、字节大小

4. 访问修饰符权限

5. java中方法的参数传递机制

6. final关键字

7. static关键字的作用是什么

8. Comparable和Comparator区别

9. Object类有哪些方法

10. java的深拷贝和浅拷贝的区别

11. java中==和equals的区别

12. String和StringBuffer、StringBuilder的区别

13. 简述面向对象三大特征

14. java中方法重载和重写的区别

15. 抽象类和接口的区别

16. 集合之间的继承关系

17. ArrayList和LinkedList区别

18. ArrayList扩容过程

19. HashMap底层实现

20. HashMap扩容过程

21. HashMap中为啥用红黑树不用二叉排序树或者平衡树

22. TreeMap底层实现

23. HashMap和Hashtable的区别?

24. Hashtable怎么保证线程安全的

25. ConcurrentHashMap原理

26. java反射机制

27. 异常体系

28. 常见的IO模型

29. 设计模式

30. 一致性hash算法

JVM

1. java运行时一个类是什么时候加载的

2. JVM一个类的加载过程

3. 继承时父子类的初始化顺序是怎样的

4. 什么是类加载器

5. JVM有哪些类加载器

6. 什么是双亲委派模型

7. JDK为什么要设计双亲委派模型,有什么好处

8. 可以打破双亲委派模型吗?如何打破?

9. 如何自定义类加载器

10. ClassLoader中的loadClass()、findClass()、defineClass()区别

11. 加载一个类采用Class.forName()和ClassLoader.loadClass()有什么区别

12. Tomcat的类加载机制

13. 为什么Tomcat要破坏双亲委派模型

14. 热加载和热部署,如何自己实现一个热加载

15. java代码到底是如何运行起来的

16. JVM内存结构

17. Java对象如何在堆内存分配

18. JVM堆内存中的对象布局

19. JVM什么情况下会发生堆内存溢出

20. JVM如何判断对象可以被回收

21. java中不同的引用类型

22. JVM堆中新生代的垃圾回收过程

23. JVM对象动态年龄判断是怎么回事

24. 什么是老年代空间分配担保机制

25. 什么情况下对象会进入老年代

26. JVM本机直接内存的特点及作用

27. 几个与JVM内存相关的核心参数

28. 堆为什么要分为新生代和老年代

29. 新生代为什么要有两个survivor区

30. eden区与survivor区的空间大小比例为什么是8:1:1

31. JVM中的垃圾回收算法

32. JVM垃圾收集器

33. full gc是什么

并发编程

1. java实现多线程有几种方式

2. 线程池相关内容

3. 线程有哪几种状态

4. sleep,wait,notify,yield和join方法的区别

5. 什么是上下文切换

6. 设计一个简单的死锁程序

7. ThreadLocal相关内容

8. 并发编程的三个问题

9. 介绍一下java内存模型

10. synchronized是如何保证三大特性

11. synchronized的特性

12. synchronized 的原理

13. ReentrantLock底层原理

14. synchronized与lock的区别

15. volatile的作用

16. volatile和synchronized的区别

17. CAS介绍一下

18. 乐观锁和悲观锁的区别

19. 锁升级的过程

20. synchronized优化

第三部分 计算机基础

计算机网络

1. OSI七层模型

2. TCP连接管理

3. TCP连接建立为什么需要三次握手

4. TCP连接释放为什么需要四次挥手

5. TCP连接释放的第四次握手为什么要等待2MSL

6. TCP是如何做到可靠传输的

7. TCP流量控制

8. TCP拥塞控制

9. 流量控制和拥塞控制的区别

10. TCP和UDP的区别

11. 视频面试中用TCP还是UDP

12. UDP如何实现可靠传输

13. TCP粘包问题以及解决方案

14. 域名解析的过程

15. 浏览器输入URL到显示页面的过程

16. 介绍HTTP

17. HTTP 1.0 和 HTTP 1.1 的主要区别是什么

18. HTTP和HTTPs的区别

19. HTTP是如何保存用户状态的

20. GET和POST的区别

21. 常见的状态码

22. ARP地址解析协议

操作系统

1. 什么是操作系统

2. 什么是系统调用

3. 进程和线程的区别

4. 进程有哪几种状态

5. 进程间的通信方式

6. 进程同步的四种方式

7. 进程的调度算法

8. 什么是死锁以及死锁的四个条件

9. 常见的几种内存管理机制

10. 分页机制和分段机制的共同点和区别

11. 快表和多级页表

12. CPU 寻址了解吗?为什么需要虚拟地址空间?

13. 什么是虚拟内存(Virtual Memory)

14. 什么是局部性原理

15. 虚拟存储器

16. 虚拟内存的几种实现

17. 页面置换算法

18. 僵尸进程和孤儿进程是什么

数据库

1. 索引是什么

2. mysql中索引的分类有哪些

3. B+树和B树的区别

4. mysql的索引结构

5. 为什么不用二叉树,红黑树,哈希表,B树

6. 聚集索引和非聚集索引的区别

7. 回表查询是什么

8. 覆盖索引是什么

9. 索引下推

10. 主键索引和辅助索引具体是什么

11. 为什么建议用自增id做索引而不用UUID

12. 主键索引使用int和string有啥区别

13. 缺少主键的话mysql怎么处理

14. 选什么字段当索引,索引何时失效

15. 索引合并和复合索引的区别

16. 简述事务

17. 数据库事务并发会引发哪些问题

18. 事务的四个隔离级别有哪些

19. 什么是幻读,如何解决

20. MySQL是如何保证ACID的

21. MySQL支持的锁有哪些

22. MVCC讲一下(怎么实现)

23. 间隙锁讲一下

24. 怎么实现可重复读(读提交)

25. select ... for update

26. 乐观锁与悲观锁,mysql如何实现乐观锁

27. MySQL中常见的几种日志

28. MySQL主从复制的流程

29. 关系型数据库与非关系型数据库的区别

30. 说一说drop、delete和truncate的共同点和区别

31. 数据库3个范式

32. MySQL中char和varchar的区别有哪些

33. MySQL中inner join、left join、right join和full join的区别有哪些

34. MySQL的执行顺序

35. having和where的区别

36. MySQL的存储引擎,以及区别

37. 大数据量里的分页查询怎么优化

38. SQL的优化方法

39. MySQL中视图和表的区别

40. 数据完整性约束

41. group by的实现方式

数据结构

1. 链表和数组的区别

2. 静态链表和动态链表的区别

3. 栈和队列的区别

4. 红黑树了解吗

5. 常见的排序算法

6. 图的常见算法

第四部分 数仓基础

1.数据仓库是什么

2.数据仓库和数据库有什么区别

3.为什么要对数据仓库分层

4.为什么需要数据建模

5.经典的数据仓库建模方法论有哪些

6.数仓相关的名词术语解释,比如数据域、业务过程、衍生指标

7.派生指标的种类

8.经典数仓分层架构

9.模型设计的基本原则

10.模型实施的具体步骤

11.维度建模有哪几种模型

12.维度建模中表的类型

13.维度表的设计过程

14.维度表的设计中有哪些值得注意的地方

15.维度规范化和反规范化如何理解

16.维表整合的两种表现形式

17.如何处理维度的变化

18.事实表设计的八大原则

19.事实表的设计过程

20.事实表有哪几种类型

21.多事务事实表如何对事实进行处理

22.单事务事实表和多事务事实表哪种设计更好

23.周期快照事实表的设计过程

24.累计快照事实表的设计过程

25.累计快照事实表的特点

第五部分 常考SQL

1.连续问题

2.分组问题

3.间隔连续问题

4.打折日期交叉问题

5.同时在线问题

6.最大连续登陆的最大天数问题

7.留存问题

第六部分 场景题

1.1亿个整数中找出最大的10000个数

2.给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url

3.有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M,要求返回频数最高的100个词

4.有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M,要求返回频数最高的100个词

5.外部排序

6.大数量中寻找中位数【网易】

7.大数量中寻找中位数【网易】

8.数据倾斜

第七部分 大厂面经合集

美团、蚂蚁、阿里、字节跳动、百度、滴滴、网易、快手、微众、京东、携程

共计100+篇面经

第八部分 大厂SQL真题

短视频业务

用户增长业务

电商业务

打车业务

教育业务

内容业务

猜你喜欢

转载自blog.csdn.net/qq_42397330/article/details/130218083
今日推荐