大数据开发内容太多了,我到底应该怎么学?(附应届生学习路线)
Posted 小刘讲大数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据开发内容太多了,我到底应该怎么学?(附应届生学习路线)相关的知识,希望对你有一定的参考价值。
背景:
有很多小伙伴找老刘讨论大数据开发相关内容,第一句往往是:”大数据内容太多了,我到底应该怎么学习大数据开发“。
有这种困惑是很正常的一个情况,尚硅谷它免费分享出来的大数据学习视频有109.60G,有18个文件夹,很多人看到这么多技术直接懵了,脑子里冒出无数个问题:
我是应该全部学习呢?还是挑部分学习?
如果全部学习,时间够吗?来得及复习吗?
挑部分学习,挑哪部分学习呢?
大数据开发不知道怎么学,不知道哪些是重点?
学了后不知道企业中怎么开发?怎么用?这点很让人烦恼!
......
老刘当初作为一个初学者,和这些小伙伴想的一样,天天愁眉苦脸,到底该怎么学,能不能学好找到工作,企业中怎么应用学的知识,脑子里全是乱七八糟的东西!
现在快毕业了,回想起这段时光,真想给自己几下,在没用的事情上浪费了太多时间,所以老刘趁着这段空闲时间给应届生好好讲讲如何高效准备大数据开发,如何不让自己迷茫!
正文
面对这么多的大数据组件如何学习?把每一个都掌握吗?
这个想法有点疯狂,一个组件花费一个星期学习,那18个组件就需要花4个半月。
但我们能保证一个星期内掌握一个组件吗?
老刘感觉一个星期的时间对大多数组件来说只是接触了一个皮毛,不能保证有应用能力。我们到企业中是要干活的,要有输出,要有应用能力,没有应用能力,是很危险的一件事!
(如果有人能在4个半月完全掌握,就当我没说哈,特殊情况特殊对待)
那我们应届生如何破局,在一定的时间内高效学习大数据开发技术呢?
应届生的秋招面试关注点更多在于基础,有扎实的基础,才能说明自己的学习能力和可塑的空间。
企业招我们进去工作,可以给我们安排这个岗位,也可以给我们安排另一个岗位,是因为他们觉得我们学习能力强,基础好,有着可塑空间,学这个学的也快,学那个学的也快!
所以我们要有扎实的基础,包括:Java编程基础知识、计算机网络知识、操作系统知识、大数据部分组件基础知识,甚至我们都可以不具有大数据部分组件知识,有一些公司招聘大数据开发岗位都不问大数据问题,只问Java基础知识、计算机网络知识、操作系统知识,因为这些公司基础平台做得好,已经不需要我们了解底层大数据知识,我们只需知道我们的岗位是什么,在企业中怎么干,加上扎实的基础就OK了。
有些公司在面试过程中不问大数据相关问题是真的,大家看看字节、网易、华为、阿里的实习招聘要求,如图所示:
它们都有一个共同点,熟练掌握Java、SQL,大数据组件算做加分项,也就是我们最起码要有扎实的Java基础。
在Java基础中,面试官一般会问一些常见的原理性问题,例如:
这是某位大数据开发大佬给我说的内容,我希望大家能够通过这张图明白基础的重要性!
挑部分学习,挑哪部分学习呢?
如果我们具备了扎实的Java基础,还有多余的时间,那完完全全可以去挑部分大数据组件学习,但大数据组件实在是太多了,挑哪部分学习最好?
由于网上能搜到的免费大数据项目大多数都是数据仓库项目,我们完完全全可以根据数据仓库涉及到的组件进行学习!
数据仓库分为离线数据仓库和实时数据仓库,离线数据仓库的难度比实时数据仓库小,掌握花费的时间也比实时数据仓库少,所以老刘先从离线数据仓库讲解一下学习内容。
离线数据仓库的学习路线如下:
-
Java基础、Linux系统、shell编程
-
mysql的用法和原理
-
Hadoop基础系列(HDFS、MapReduce、Yarn、Zookeeper)
-
Hive的原理、用法、相关调优
-
Spark/Scala的原理、用法、相关调优
-
数据仓库建模管理的相关概念
-
离线数据仓库练习
大家可以从网络上找到这些组件的免费学习资料,根据这些学习资料掌握这些组件!
老刘去年也是根据这个学习路线学完了离线数据仓库,相关组件并不是很多,每天早起晚睡疯狂背原理很快就能掌握!
接下来是实时数据仓库内容,实时数据仓库组件较多,难度较大,学习时间有点长,如果大家学习完离线数据仓库相关内容,还有多余的时间,可以学习一些实时数据仓库组件,不一定非要做一个实时数据仓库项目!
实时数据仓库的学习路线如下:
-
Java基础、Linux系统、shell编程
-
MySQL的用法和原理
-
Hadoop基础系列(HDFS、MapReduce、Yarn、Zookeeper)
-
Hive的原理、用法、相关调优
-
Spark/Scala的原理、用法、相关调优
-
数据仓库建模管理相关概念
-
离线数据仓库练习
-
SparkStreaming的原理、用法、练习
-
Kafka的原理、用法、调优
-
Flink的原理、用法、练习
-
HBase的原理、用法、调优
-
实时数据仓库练习
很明显,实时数据仓库的学习内容是在离线数据仓库的基础上进行了扩展。根据这个学习路线,如果有足够的时间,完完全全可以学习完,但没有足够的时间,老刘建议学学Kafka、Flink这几个就行了。需要补充的是这些学习资料都可以在网上找到免费的,大家不要担心学习资料的问题。
学了后不知道企业中怎么开发?怎么用?
总是担心这个问题是非常正常的一个情况,大部分人没有经历过实习,只是学了一身本领,还没地方施展自己的抱负,害怕自己的本领无法发挥出来!
但对于应届生来说,基础最重要,基础不牢地动山摇,而且在实习期,在别人的带领下,我们可以凭借扎实的基础,快速学习快速上手快速掌握。
举个例子,老刘所在的华为部门,今年组织了一个提前学习小组,给我们分享了Java基础学习视频、华为Java编程规范、开发者测试快速入门等良心学习资源,老刘最后获得了学习之星、优秀学员、优秀学习小组三个奖励,全是靠自己平时的积累加快速学习的能力,所以老刘希望大家不必过于担心,该学的学该吃的吃该喝的喝该玩的玩!
总结
本文全篇就强调了一点:基础,只要我们牢牢掌握了基础知识(Java基础、计算机网络、操作系统、大数据基础这几个),我们压根不用担心找不到工作,希望大家明白基础的重要性,把基础打牢!(老刘已经强调无数遍了)
老刘为了这篇文章准备了很久,但因为毕业相关事情一直拖着,今天终于能发出来了,希望可以帮助到同样想找大数据开发的应届生或者大学生!
最后,请给老刘点个赞!(有问题直接留言)
双非本硕,成功上岸大数据开发 !!!
校招生应届生写的大数据上岸过程比较少,很多应届毕业生想从事大数据开发,但是网上搜不到太多完整的上岸的过程,大部分都是面经之类的,所以想总结一下,不知道是否能帮助到有需要的人。
个人背景
我觉得有必要写一下个人背景,没有个人背景的上岸过程就是耍流氓,有些人一开始说无竞赛,无论文,我一想那我来学习一下,最后知道是复旦本硕,这你不是搞我心态么。(狗头,如有冒犯,不要打我)
自己是双非本硕,大数据一年的练习生,喜欢rap篮球。
上岸过程
靠自己的热爱学习,拿到大厂暑期实习,然后秋招上岸。贼简单的一句话需要细细展开来讲。
首先你需要热爱大数据,热爱是第一驱动力,我知道很多本硕选择大数据,是觉得后端或者别的太卷了,选择大数据是一种逃避手段,那我只能说对于大厂而言,大数据也很不容易,原因如下:
- 工作岗位比后端少得多
- 很需要你实际的工作经验
- 自己学习和工作脱轨的很严重
- 很多大厂岗位分的极其细致,可能你看到的数据开发根本不适合你
我个人觉得在大厂应届生极其卷的情况下,大数据逐渐神仙打架,如果是一线城市,那不好意思了,神仙下凡,那作为一个双非如何上岸呢?
- 第一,你是否真的喜欢大数据
这一点很矛盾,虽然说越努力越热爱,但是一开始学习后是否很喜欢大数据对你的帮助真的很大,你能否接受从0开始接触一堆组件,而且可能是你本科完全没听过的东西,如果接触了以后很喜欢,那么恭喜你,你的起跑线和别人一样,但跑的速度可太快了,每天学自己热爱的东西,是多么幸福的事情,能让你最后坚持下来。如果不是真的喜欢,只是想找个工作,卷后端/前端/客户端靠谱多了,既然都卷,选岗位多,容易进的嘛。
- 第二,打扎实你的基础
注意,我这里指的基础并不是大数据的基础,而是你计算机的基础,通俗的说就是科班素养,再具体点就是考研408科目(数据结构+操作系统+计算机网络+计算机组成原理),为啥喜欢科班的,就是因为再不怎么学,至少在脑子里留下一丢丢的印象,这些科目为我打下的基础让我受益匪浅,会对我的思考方式有帮助,甚至对解决问题的也有帮助,还有看计算机论文,看文档,画图的能力,都是平时锻炼出来的。
那如果非科班,或者平时真的学的不好怎么办呢,那当然是赶紧弥补,不过如果确定从事大数据的话,我觉得数据结构+操作系统足够了,可以稍微偷个懒,这两门课的重要性时时刻刻影响着我,他的思路在计算机很多领域都有影子。
其余的基础那就多了,编程语言,大数据思想,学了什么框架等等。校招生和社招生最大的区别就是,校招生最主要的是展示自己的潜力值得培养,你所学的一切东西在面试的时候都是为了展示这一点,我举一个面试遇到的问题:c在处理垃圾堆快和java自身靠jvm处理,你觉得有什么区别。这个问题是面试官结合人物背景和之前的聊天临时问的,如果你全靠背八股直接凉了,需要你当场思考给出回答,他不需要你回答标准答案,甚至这个问题就没有答案,但是面试官会通过你的当场思考来判断你的思维能力,如何思考并回答呢,答案就一个,基础是否扎实。
所以,如果还有几年才毕业的同学,好好打基础哟~
- 想不到吧,秋招其实三月份就开始了
双非进大厂现在老难了,最好要找个暑期实习,不断是不是大公司,但需要找一个,基本上大厂的暑期实习3月份就开始了,而且有些其实就是秋招,默认你可以转正,我当时面试的有几个大厂直接就和我说,这个其实就是秋招直接转正的,所以会问的难一点,秋招不放hc了。
有实习经验对自己帮助很大,主要收获有以下几点:
1)工程能力,github/maven/shell/linux,这些常见的工程模块平时用的比较少,还以一些测试交接的流程熟悉以后,知道现实中工作是怎么样的。
2)结束实际中的海量数据,平时练习几十万条数据最多了,集群上的机器也很少,实习让你实际感受几十亿,几百亿的数据量,和庞大的集群,收获很多,会遇到很多想不到的问题,算是彻底入门了大数据。
3)对你的秋招帮助很大,尚且不说大厂实习如果转正,那你秋招有很大的底气,关键是如果没转正出去找工作,别人一看,实习过,那说明你具备一些实际的工作经验,同时有公司相信的潜力,这也让我有信心自己可以相信你的潜力。
所以,对于校招的大数据而言,不光是大数据,还有很多别的,但最终就是个展示自身潜力的过程。
学习的内容
- 编程语言类:java, scala(皮毛),python(皮毛),shell(皮毛)
其实主要就是 java,面试的时候遇到的也是java,并发编程,jvm gc,基础的 collection 都问到了
- 数据结构!!!!:力扣不刷直接挂,除非学历很好
- 基础:要是非科班,有条件的话还是尽可能看一下数据结构和操作系统吧
- hadoop组件:hadoop(会个基础的mr job,了解相关原理,看一下google的三驾马车),hbase(基础应用),hive(hql还是需要练习一下的)
- spark:sparkcore(可以看一下常用算子的源码),sparksql,主要就这两个,其余的有条件可以看一下spark streaming
- flink:时间足够的话可以看(推荐入门书籍flink基础教程,以及flink官方文档),之后自己做个简单的项目上手还是快的
- 消息队列:kafka,了解并使用一下,自己练项目也会用到
- 做项目带到的工具:flume,sqoop,datax,redis,说实话,项目做完我知道我用过,重新用的话还是对着文档写
- 项目:可视化小项目(java ssm框架基础实用),离线数仓(主要是hive),实时数仓(flink简单实用)
剩下的还是一些别的内容是实习过程中学到的,就暂时不写了。
面试遇到的内容
比较有意思的场景题或着开放题
1)假如要一个没有存储上限的arraylist,怎么设计
2)c语言回收堆快时,和jvm相比你觉得有哪些不同
3)两个超级大表做关联,如果不用sql,让你直接设计计算过程怎么设计
4)常规的百万级别数据blablabla……
5)你调研一个框架是如何调研的
6)java有单元测试,如果对sql做单元测试怎么设计
7)实际更新spark3之后,对比spark2在实际工作中全部是优点么
8)如何判断出现了shuffle,如何快速定位哪里出了问题
问题已经有写记不全了,选择了一些有意思的,我这里没有给出我当时的回答,每个人有每个人的思考方式,希望大家的思维可以发散。
结尾
我把春招实习/秋招遇到的问题放一起了,做一个简单概括,这部分面经市面上还是很多的。总觉得自己写肯定也没别人写的好(虽然自己写过一篇),感觉还是牛客上多看看吧,不过大数据的面经确实不多就是了,不过感觉放在这偏文章里不太合适,显得太拖沓了,之后另外发吧。如果真的热爱大数据,请一起坚持下去,还是很有意思的。
以上是关于大数据开发内容太多了,我到底应该怎么学?(附应届生学习路线)的主要内容,如果未能解决你的问题,请参考以下文章