这段时间各大公司的春招陆续开始了,但是也有很多同学还在因为刚刚入坑或者还在纠结,对学习路径比较迷茫。(这也是去年的我)所以这边总结一下,一个面向面试的学习路径,后面也会补充上全面的学习路径。面向面试就是掌握到基本能应付暑期实习面试的基本技能和知识,足以在春招实习招聘中应对,但是如果要在秋招里乱杀还是得全面学习的哟。

1 计算机基础

1.1 基础八股文

《计算机组成原理》《数据结构》《操作系统》《计算机网络》这四门课程是计算机专业的必学,虽然在大数据开发/数仓开发的面试场景中80%的时候并不会问道相关的八股,但是部分大厂(字节、阿里、快手(这是我面试到的))还是会问一些基本知识比如:TCP&UDP、三次握手、四次挥手、http等,所以只要去找一些常见的问题背下来就好

1.2 算法基础

所谓的算法基础实际上就是数据结构、算法题,盯着牛客、LetCode去刷题就好,每天三道美滋滋,面试手撕不用怕。暑期实习能有个100-150道基本能cover实习面试,如果时间实在来不及直接去做“剑指offer”的系列题,容易碰到原题或者类似题。如果是秋招的话得有个300左右的题量,建议直接刷LetCode题库的前300,不论笔试还是面试都会原题。(一定要总结同类题思路!!!数组、动态规划、DFS、BFS等等)

2 编程语言

2.1 SQL

如果是数仓、数开,SQL 是必备技能(SQL Boy/SQL Gril),笔试面试都会考到,建议直接到牛客刷题。这部分的SQL题要重视,不论是笔试还是面试手撕60%概率是SQL题,如果有一定基础建议直接刷牛客的大厂真题:

这里面的SQL题难度基本够了,也比较全面,难度也符合到一些实际生产场景(强力推荐!!)

2.2 Java&Scala

由于很多大数据组件都是由Java编写,所以JAVA也是数开/数仓的基本技能,虽然在实际工作中用到JAVA并不多,大部分时候就是写个UDF等。不过,我们在面试中还是会以JavaSE的要求来提问,所以需要背的八股以及补充的也比较多。不过如果时间不够的话,建议直接背常见Java八股题(面向面试嘛)。但最最基础的还是得会写一些Java,所以建议大家刷Letcode用Java去练习。

Spark和Flink的底层有Scala编写,而且相对而言Scala在部分场景较Java更符合大数据场景,所以偶尔用到,但是面试基本不会问到,浅学即可,不要投入太多时间。

2.3 Python

锦上添花,无也无妨。

但是如果会用Python做一个深度学习、机器学习的模型(调包侠也行)在面试官那里会有一定加分,部分团队会有相关的工作,但是还是要保证基础。

3 大数据组件

大数据组件非常的多,如果是全面学习的话,建议按照$ 尚硅谷的学习路径$ 去进行。如果只是面向面试学这几个Hadoop、Kafka、ZooKeeper、Hive、Hbase、Spark、Mysql即可。但是如果是要做实时开发还需要补充Spark Streaming、Flink,此外全面的学习还需要有Azkaban(任务调度)、clickhouse(OLAP)、redis等组件。

3.1 Hadoop

数据存储基本上还是使用 HDFS。MapReduce 虽然使用较少,但其思想十分重要,必会,也是调优的基础。

Yarn 调度非常常用,但面试中很少考到。常问:HDFS读写流程、MR流程、Shuffle流程

3.2 Spark

现在的离线计算引擎机会都是 Spark3.0引擎,很少用到 MapReduce 了,所以也是必会。需要掌握与 MapReduce 的区别。常问:spark作业提交流程、Spark宽窄依赖&血缘、spark的持久化&缓存机制、Spark和MR的区别、Sprak和MR的Shuffle的区别

3.3 Kafka

Kafka作为发布订阅消息队列,基本也是常问的,哪怕在Java开发也常常会有kafka的问题:Kafka数据重复、Kafka消息数据积压,Kafka消费能力不足怎么处理?Kafka 零拷贝、Kafka高效读写数据

问的频率相对其他几个较少,掌握核心原理即可

3.4 Mysql

Mysql的涉及到数据库的基础知识,基本也是每次面试必问,而且问题常常会从数据库底层原理以知道sql调优

常问:Mysql索引、数据库事务、四种隔离级别、MVCC、谓词下推、执行计划等等

MySQL一定要多准备一些

3.5 Hive

作为构建数据仓库的工具,常常会从Hive延伸到数据仓库模型的问题,或者从hadoop的问题延伸到Hive来。

有两种方式:

Spark on Hive:写 Spark SQL,Spark 读取的数据源是 Hive。

就是通过 Spark SQL,加载 Hive 的配置文件,获取到 Hive 的元数据信息。

Spark SQL 获取到 Hive 的元数据信息之后就可以拿到 Hive 的所有表的数据。

接下来就可以通过 Spark SQL 来操作 Hive 表中的数据。

Hive on Spark:写 Hive SQL。Hive 将自己的 MapReduce 计算引擎替换为Spark,当我们执行 HiveSQL(HQL) 时底层不是将 HQL 转换为 MapReduce 任务,而是跑的 Spark 任务。

常问问题:Hive的架构、HQL转成MR的流程、数据倾斜、小文件问题(前面两个需要扩展到hadoop和spark的数据倾斜和小文件)、Hive优化、Hive常用调优参数

4 数仓模型

数据仓库的原理作为数仓开发工程师的核心技能,绝对是我们的高频问题,基本99%的面试官都会提问到相关的问题。完整的数仓架构需要了解。建模理论(星型建模、ER 建模)需要了解。推荐看阿里的《大数据之路》,需要这本书的电子版可以私信我。

其中最重要的是,对数据仓库的理解、数仓分层、为什么这么设计、维度建模

(既然我单独写了这一部分,足以见得绝对是Top1的重要性)

5 数据治理

了解一下概念即可。实习招聘考的少,秋招考的多。包括元数据管理、数据质量、血缘等。

6 项目经历

学完上述内容后,那么必然需要一个数据仓库的项目来完善个人简历,还是推荐尚硅谷。

数仓这块如果咱们自己很难有实际项目,这边给推荐两个。

第一:B站尚硅谷,可以跟着视频做项目,离线和实时的都有,项目内容也比较贴近真实开发场景,坏处是做的人很多,烂大街。

第二:github,找大数据开发的项目,含金量更好,但需要自己投入大量的时间。如果是暑期实习的话我这边建议还是做尚硅谷的项目,只要能吃透,应对实习面试够了。

项目讲解:STAR原则

学完以上所有这些(面向面试),根据我个人的经验,大概会在40-60天,其实时间也不短。建议大家在学完Hadoop之后就可以开始投一些简历,然后通过面试去不断磨砺个人技术理解,愈战愈勇。再者,面试之后也会发现,其实知识的深度重要性大于广度,与其花很多时间去把整个大数据链路学完,不如完成基础内容,然后自己去实操去思考问题,再通过一定的面试技巧(简历引导、语言问题引导、面试节奏掌握)等,就可以很顺利的通过大部分的面试。

最后!!祝大家都能在春招中拿到满意的Offer!!

(如果有需要看简历的也可以私信我哈,有空我都会回复滴)

希望能帮到大家!!

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: