点击上方 "大数据肌肉猿"关注, 星标一起成长
点击下方链接,进入高质量学习交流群
今日更新| 1052个转型案例分享-大数据交流群
分享学习群一位大数据专业同学的秋招学习和求职经历,他是211大四学生,年初才开始学习,但还好赶上了春季实习,拿了一些大厂的实习offer,其中包括字节、阿里美团等,最后选择了去字节实习。
但几个月的字节实习经历以及他对生活的规划,让他不想继续待在北京,于是秋招全身心投老家地方国企和中厂,也收割了一些offer,最终签了一家省内大型国企。
背景介绍
211本科大数据专业大四学生,虽然是大数据专业,但学校主要教学的是数学和统计相关的深度学习导向的课程,跟大数据没有任何关系。
到大三的时候发现算法方向自己不是很感兴趣,而且学习和求职门槛都比较高,于是想转大数据开发。刚开始计算机基础非常薄弱,没有学习过Java语言,上课学过一点C,需要补足的地方还很多。
学习过程
从大三下才开始跟着峰哥安排的计划开始学习,那个时候已经非常晚了,而且我是一个零基础的状态,但峰哥说还来得及,也给我吃了颗定心丸。
从Java基础开始,然后就是hadoop、spark和hive等框架,中间穿插着算法和八股文面经的学习。大概在刚开始学没多久,春招实习就已经开始了,刚开始很犹豫,觉得自己什么都不会就不敢投递。但峰哥鼓励我早点学完项目就可以投,后面到4月份的时候边投递边学习,慢慢有了笔试和面试的机会。
现在回过头来看,觉得学习大数据开发可以从Java和计算机基础、大数据框架、项目三个方面来学习。
Java和计算机基础
编程语言基础:Java基础是所有后续大数据学习的基石。我最开始是通过看书学习,看完后没有什么感觉,后面峰哥推荐了跟着对应的视频学习,每一个知识点都讲的非常全面,也会有详细的案例。如果你是零基础,建议看视频入门,代码一定要自己敲一遍,切忌眼高手低!Java 的书就推荐《Java编程思想》。
此外,还有Scala语言,因为后续要学到 Spark、Flink等框架,这些框架采用Scala编程极为灵活,所以需要学习Scala的编程规范。关于Scala学习,建议在spark学习之前学习。
我认为计算机科学和基础还是很重要的,软件工程师分为两种:一种充分理解了计算机科学,从而有能力应对充满挑战的创造性工作;另一种仅仅凭着对一些高级工具的熟悉而勉强应付。这两种人都自称软件工程师,都能在职业生涯早期挣到差不多的工资。
然而,随着时间流逝,第一种工程师不断成长,所做的事情将会越来越有意义且更为高薪,不论是有价值的商业工作、突破性的开源项目、技术上的领导力或者高质量的个人贡献。
对于计算机基础的学习,如果时间还比较充分的同学建议花时间弄懂操作系统、计算机网络和数据库。如果有志于打下扎实的计算机基础,可以参考github的自学项目,有很多经典的高校课程。如果时间不算很充裕或者英文水平没有很好,可以阅读工业出版署翻译过来的黑皮书。
大数据框架
学完Java之后就可以开始学习hadoop,是大数据框架的基础。然后可以学习hive,之后可以分别学习批流计算的主流框架spark和flink。单独学习完这几个框架之后就可以开始项目的学习,在项目中将剩余的组间边用边学。
项目学习
第一步我们首先是看视频做项目,很多过程中如果没有演示自己很难发现错误在那个地方。我们跟着视频学完,代码可以不需要跟视频里一模一样,最好要有自己的理解,然后找一些可以优化的地方,不断优化,这就体现出和别人的差别了。
比如我们学习的都是数仓项目,我们投递金融公司的时候可以跟量化结合,怎么去存储股票等相关数据;我们投递电商公司就与电商数据结合;投递的是做视频平台的就可以与视频流数据结合,让我们的项目有特点。但这也不是绝对的,具体可以咨询峰哥修改建议。
做完之后可以将代码上传到github或者gitee上,简历上贴出自己的地址,是一个不错的加分项。
第二步我们可以去github上找一些项目甚至是框架源码来看,首先我们保证能根据文档将整个代码运行起来,我们首先知道项目代码有什么作用,才能找到对应的模块去看懂代码。
实习简历投递和面试
我在一个月的时间内快速学习了Java和hadoop、Hive和项目之后就开始投递简历,简历上主要就是我上面学习过程中提到的三个部分,主要的亮点我认为在于项目的展示,将自己的亮点在项目中展示出来,遇到了什么困难,自己是怎么解决的,有什么思考和提升。
然后边投边继续补充实时项目以及一些面经,面试也是一个很好的学习过程,千万不要等全部准备好再开始面试。
面试所问的题部分偏基础,部分考察面试者的思想,因为比较多我就贴一下字节实习时候的面经:
一面(1h10min)
1.自我介绍一下
2.介绍一下你的项目
2.1 Mysql全量数据规模
2.2 既然Mysql能存储,为什么要导入到hive中
3.说一下MySQL的ACID特性
4.脏读和幻读分别是什么含义
5.spark持久化的级别和作用
6.spark任务出现数据倾斜有哪些方法解决
7.hive没办法创建分区怎么理解,怎么解决。
8.常见的工厂模式有哪些
9.介绍一下TCP连接,三次握手。
10.为什么要三次握手,如果两次握手会出现什么问题呢?
[算法题]
1.情景题:客户端发送请求,batch数
数组题,面试官手打。
2.判断一棵树是否是二叉搜索树
说一下什么是二叉搜索树。
二面(1h20min)
1.自我介绍
2.深挖项目
2.1 项目需求
2.2 最终交付的成果,数据从哪里,对交付方有什么帮助
2.3 怎么理解数仓建模
2.4 举一个真实的例子,介绍你负责的项目
2.5 介绍一下你是怎样建模,为什么要这么建模的。
3. 数据爬取,爬虫是怎么拿到数据的,根据你介绍的聊后续扩充
3.1 你写一个爬虫,为什么能拿到你想要的数据,中间经历了什么
3.2 扩展,当你需要爬取的数据量增大,你怎么处理
3.3 并行爬
4.如果多个任务都在爬取网站,如何保证吞吐量尽可能高的同时不让爬取的网站宕机或任务崩溃(大概是这样)
5.收到大量的url,如何选择任务分发模式(分布式场景)
6.介绍一下MapReduce的过程
7.map端的数据如何保证分发到reduce数据的准确性
8.Java中的集合、类有用过嘛
9.SQL题
很简单的多表查询单列聚合。
10.Linux命令,一个进程很慢,你会查看什么指标,用什么命令去分析,可能是什么原因
11.算法题:链表
链表求和的变式:https://leetcode.cn/problems/sum-lists-lcci/
实习经历和感悟
写在最前面,对于开始的比较晚的我找实习其实是一段很痛苦的经历,除了自己的努力更需要一定的运气。我想不论找到实习还是没有找到实习都会焦虑,这很正常,重要的是我们如何为后来的秋招做更加充分的准备。
刚开始进入部门实习的时候没有接触过框架这么复杂的代码,什么都不懂,后来看觉得这很正常。刚入职的时候不要不好意思问问题,只要能够提高工作效率,完成工作任务就去问。mentor也跟我说不用担心问问题,最担心的是自己什么也不说,最后一问什么都没做出来,一个人闷在那。尽快熟悉业务实习代码,提高效率,快速成长起来才是我们需要专注的。
然后刚进去的时候可能会想,不想做一些边缘的事情,比如机械化的CRUD,但是后来实习后发现,不通过一些简单的小项目直接上手整个部门的业务是比较困难的。而且工作以后很多事情,不是自己能把控的,接受工作的安排,然后在工作中去提升自己。
总体来说,在字节的实习对我的成长帮助是很大的,相比于阿里对于实习生的照顾,字节会在半个月后就开始安排工作,整个人会被push着去学习新的东西完成手头上的工作,部门内的氛围很好,和大家沟通都很顺利。但是下班之后几乎没有自己的业余生活了,食堂七点开饭,吃完饭之后晚上会回到工位继续工作到将近十点下班,大家都很年轻很有干劲。综合来看去到大城市大厂实习是非常重要的。
秋招经历和感悟
虽然实习的时候对于技术的提升非常热衷,但是个人对于以后生活的质量和工作与生活的平衡更加看重,特别是在北京生活几个月感觉生活非常单调,所以在秋招的时候并没有再去冲互联网的大厂,转向了自己家乡那边的中厂以及国企。
所以也放弃了字节转正的机会,这期间也拒绝了一些地方大厂给出的比较可观薪资的offer,知道了自己想要什么之后就不会迷茫,最终选择了一个省内的大型央企进去继续从事大数据的开发工作。
--end--
扫描下方二维码
添加好友,备注【交流】
可围观朋友圈,也可私信交流