1
文章由来
机缘巧合认识了大腿哥,那时他还在漫漫转行路上,出于缘分,我对他给与了帮助,包括学习视频,面试题,简历指导,面试辅导及offer筛选等,当时我们约定他入职后要给我写一篇转行之路的文章。
最后他选择了一个月薪综合15K左右的大数据开发工作,然后才有了这篇文章,以下均为大腿哥所写。
2
转行前个人情况
我毕业于福建某普通本科学校,学习的是农学类专业,跟编程八竿子打不着。
转行之前职位是数据分析,然而工作中大部分时间都在做报表、写sql查数据,可以说没有任何技术含量。准备转行时我对编程是一窍不通,连IDEA都不会用,唯一优势可能就是sql写的比较熟,但也仅限于查询数据。
3
转行原因
当时公司只有我在做数据分析,没人带自己瞎做成长很慢,以至于做了快两年还是没整明白啥是数据分析;
此外在公司做了快两年,各种杂事都推给我做,领导每次说涨工资最后总是不了了之。总之成长很慢,工资很低,在这种情况下我希望能找到一个有挑战性,工资高,前景好的行业,综合考虑最后选择了大数据开发。
4
学习过程
1
Java学习
学大数据之前一直在思考学大数据要不要学java开发,现在回过头来看学习java是很有必要的。因为学大数据的相关技术时会涉及到java,而且有了编程思维会帮助你更快的学习。
我学习java其实是从2019年9月才开始,在慕课网上从最基础的数据类型开始看起,整个java基础看了差不多1个月。后面开始看SSM框架,也是看了差不多1个月左右,跟着视频敲代码完了在oneNote上做笔记。这段时间还挺煎熬的,因为对很多东西毫无概念,基本看完就忘。由于当时我在技术部,学的差不多之后我就跟领导说想做个开发项目学习一下。领导就把公司报表系统的几个小需求交给我做了,几个需求做完,对编程就开始有感觉了像开了窍,回头再看基础和框架就有更深的认识了。
学习java期间我基本每天下班后能保证3小时的学习时间,白天做完手头上的活就以做项目的名义光明正大的学java,而且节假日无休。虽然很努力,但是现在看有很多地方纯属浪费时间。一是当时有个朋友给推荐了个web开发项目视频,然后这项目用开发工具的是Eclipse,我跟着学一遍之后后面用IDEA就很不习惯。所以目前准备学java的同学,如果你们学习的视频里还在用Eclipse就果断放弃,千万不要再看这些过时的东西。其次,我当时接项目的时候有一个前端需求,为了这个小需求我把html、css还有js都看了一遍,如果你只是想做大数据开发,前端其实可以忽略不看。另外,春节的时候因为疫情在家,我把多线程和虚拟机从头到尾看了一遍,结果到现在也没用过,基本也都忘记了,这部分了解一下即可。
总结一下,java这部分要把基础打牢,建议多刷算法题,能做一个SSM的web开发项目练练手最好,其他的了解一下即可。
2
大数据学习
由于学过一段时间java,开始学大数据的时候还是很自信的,结果被现实浇了一盆冷水。
最开始学大数据一般从Hadoop开始,首先要做的就是学会搭集群。开始搭集群时我是一脸懵逼的,虚拟机不懂,linux不懂,更别谈什么分布式。搭建Hadoop集群时各种报错,因为是自学,一个bug都要解决几天,那是我第一次感受到被bug支配的恐惧。而且那段时间因为刚复工,白天事情很多,晚上回来没就日没夜的搭集群,有次搭cdh的伪分布式集群,搭了一天一夜没合眼,最终集群搭建成功的时候真的激动哭了,那种成就感到现在都记忆犹新。
搭完集群后就要开始学各种技术栈了,HDFS、MapReduce、Yarn、Hive、Spark、Scala等等。那段时间刚复工,公司事情很多,尽管我每晚坚持自学还是感觉进度很慢,渐渐萌生裸辞的念头。
到了5月,感觉还是没学到什么,索性就提了辞职申请,5月底正式离职开启了全日制自学模式。
刚辞职的时候很激动,感觉每天能学很多东西,不过慢慢的也产生很多问题。一是大数据组件很多,学完就忘,对自己越来越不自信;二是没有找到合适的大数据项目,也不知道什么是大数据项目;三是裸辞在家没有收入,房租合同也快到期了,心态有点崩。到了7月份开始病急乱投医了,因为自己搞不定,开始在网上付费找人教我。期间遇到很多坑,有些人给你推荐的东西学到最后发现不太行,浪费不少时间。
最后遇到了我的贵人-昌哥,听了他建议之后准备了两个项目:一个离线数仓,一个spark streaming实时流处理项目。包括后续的简历指导及面试辅导,重新确立好学习路线之后就是夜以继日的准备了,一边看项目视频结合自己的体会把当成自己的项目来思考,一边复习巩固之前学过的技术栈。这段时间应该是收获最大的一段时间,很多技术栈都看了第二甚至第三遍,慢慢感觉很多东西已经牢记于心了。
5
面试过程
两个项目看完都过了8月了,准备开始投简历。第一周没收到什么理想的面试机会,陆续收到几个面试邀请和电话面试。虽然没有拿到offer,不过开始熟悉面试套路和面试官的口味了。
总的来说简历要想过项目经验要有亮点,一是项目至少要有2个或以上,二是项目中用到的技术栈一定要牛逼,反正就大胆写。花了一个星期调整,然后开始全力投简历,一个星期的时间收了4个offer,由于我当时房租到期,加上自己信心不足就没继续等了,赶在9月前上了岸。后面入职之后其实又收到几个很不错公司的的面试邀请,不过那时我已经搬过房子了,也就没再考虑了。所以找工作一定要耐心,一边面试一边调整,总会找到合适的。
6
总结建议
如果你也是0基础转行,最好找个靠谱的人带一下,实在不行就报个线下班找人指导,线上的就算了;
学习的时候,要注意学项目,在项目里学技术,不要死抠技术栈;
简历要好好写,项目经验要有亮点,最好多用点新的技术栈;
多面试几家公司,不要急着入职,薪资往高点开,撑死胆大的饿死胆小的;
最后的最后,我想说的是:从0转行大数据开发真的很难,并没有很轻松,但是只要你有足够的耐心和毅力,坚持下去,真的可以转行成功。
7
大腿哥面试题总结
一、Linux类
1.怎么查看用户组
2.怎么修改文件权限
3.常用的命令有哪些
4.怎么修改文本文件第一行字符
二、Shell
1.怎么知道上一条命令有没有执行
2.怎么定义变量
3.怎么使用参数
三、Java
1.java基本的数据类型
2.HashMap
三、Hdoop
1.安装Hadoop的8个配置文件?
2.8个配置文件都做了什么?
四、HDFS
1.HDFS如何DataNode检测是否发生故障?2.读写流程
五、Hive
1.Hive的执行流程?
2.hive的元数据信息存储在哪?
3.sql语句的执行顺序from-where-group by-having -select-order by -limit
4.on和where的区别
5.hive语句方面的优化
六、Hbase
Hbase和Hive的区别与适用场景
七、spark
Spark的优化;
Spark的原理;
spark sql有没有用过,生成什么对象?
Spark streaming统计行为次数的思路;
Spark streaming优化思路;
八、项目
数仓项目:数仓的实现思路;
拉链表是什么;
数仓分层思路;
数据采集过程中遇到什么问题,怎么解决?
总结:
(1) java几乎不会问,HDFS/MR/Yarn/flume/sqoop这些组件基本不问。问的多的还是Hive ,spark
(2) 项目的问题问的比较多,几乎都是从项目问起,引申出来
建议:
项目的技术栈要选好,多用spark/hbase这样的,spark是重点;MR感觉已经被淘汰了,没人问;
学习的时候多研究项目,面试官更关注你能不能干活,而不是熟悉原理;
![64c97071fbf4041cc621e96e01583fac.gif](https://i-blog.csdnimg.cn/blog_migrate/33c5a0d0d9c958b998872f3668854858.gif)