2026-02-06 07:39:14
2021春招大数据开发岗位(阿里、字节、小米)经验总结如下:
一、面试流程与结果MapReduce处理流程:输入分片→Map阶段(键值对输出)→Shuffle(分区、排序、合并)→Reduce阶段(聚合结果)。
数据倾斜解决方案:
预处理(如采样分析倾斜键)。
倾斜键单独处理(如拆分、加随机前缀)。
合并小文件、调整并行度。
HDFS与MapReduce关系:HDFS提供存储基础,MapReduce基于HDFS实现计算向数据移动。
内部表 vs 外部表:内部表数据由Hive管理,删除表时数据一并删除;外部表仅管理元数据,数据独立存储。
数据仓库分层:ODS(原始数据层)→DWD(明细数据层)→DWS(汇总数据层)→ADS(应用数据层)。
HQL优化:
分区裁剪、合理使用索引。
调整并行度、选择高效存储格式(如ORC、Parquet)。
避免全表扫描,使用谓词下推。
Job、Stage、Task关系:Job由Action触发,Stage由Shuffle划分,Task是Stage的最小执行单元。
Shuffle优化:
减少数据倾斜(如使用repartition或coalesce)。
启用bypassMergeSort优化小分区。
RDD理解:弹性分布式数据集,支持容错(血缘关系)、不可变、分区存储。
与Spark Streaming对比:Flink基于事件驱动,支持低延迟(毫秒级);Spark Streaming基于微批处理,延迟较高(秒级)。
Watermark机制:处理乱序事件,通过时间戳和延迟阈值触发窗口计算。
状态一致性:通过一致性检查点(Checkpoint)和端到端精确一次语义保障。
索引优化:
使用B+树结构,覆盖索引减少回表查询。
避免索引失效(如使用!=、OR、函数操作字段)。
事务隔离级别:读未提交(脏读)→读已提交(不可重复读)→可重复读(幻读)→串行化。
可靠性保障:
生产者通过ACK机制确认消息写入。
副本同步策略(ISR列表动态维护)。
数据有序性:单分区内消息有序,多分区需通过分区键设计保障全局有序。
高效原因:内存存储、单线程模型、IO多路复用。
持久化策略:
RDB(快照,适合备份) vs AOF(日志追加,适合数据安全)。
缓存问题:
雪崩:缓存集中失效,通过加随机过期时间缓解。
击穿:热点键失效,使用互斥锁或永不过期策略。
多线程:线程池、锁机制(synchronized、ReentrantLock)、CAS操作。
JVM:内存模型(堆、栈、方法区)、垃圾回收算法(标记-清除、CMS、G1)。
高频题型:链表(虚拟头结点、步长差)、二叉树(遍历、递归)、动态规划(状态转移方程)。
刷题建议:剑指Offer重点题目(如二叉树镜像、链表反转)需熟练掌握。
高频考点:开窗函数(ROW_NUMBER()、RANK())、CASE WHEN条件转换、多表连接优化。
实时化(Flink、Spark Streaming普及)。
智能化(AI与大数据结合,如自动调参、异常检测)。
云原生(Kubernetes调度大数据任务)。
基础阶段:巩固Hadoop、Hive、Spark核心原理。
强化阶段:刷算法题(剑指Offer)、SQL实战(牛客网题库)。
冲刺阶段:模拟面试(重点准备项目细节、优化方案)。
突出技术深度(如Hive调优、Spark任务优化)。
量化成果(如“通过分区裁剪使查询效率提升30%”)。
算法:LeetCode、剑指Offer。
大数据:B站TALKDATA视频、牛客网面经。
总结:大数据开发岗位面试注重底层原理(如Shuffle过程、事务隔离)、工程实践(如HQL优化、缓存设计)和算法能力。建议结合项目经验,系统梳理知识点,并针对目标公司(如阿里重底层、字节重实时)调整复习重点。