-------再更新2021年3月13日----------

目前,很多同学应该在找2021年的暑假实习了,但是很多人咨询我关于简历上的项目该怎么办?

我这里系统回答一下:

无论何种项目,突出能力为主,尽可能表现你的知识深度,适当突出广度。

简历上的项目一般分为以下几类:(你的项目是哪一类,请打在评论区,可以简单描述你的项目,我会定期对项目进行评价,共同进步)

1、伪实战项目(最多人用):本质就是培训班项目,比如秒杀系统、订单系统、大数据分析项目等等,说白了,只是在功能上进行复现,距离真正的企业实战还有一定差距。但是,可以体现自己的学习内容,对于框架或组件的深入理解,比如你用到了dubbo,那么你知道了dubbo底层原理或源码,也是非常优秀的,项目就得到了升华,建议是少谈业务,多聊底层技术,这样显示你的深度。

2、实习项目(鲜有人有):有些同学在实习期间做的项目,这是真正的实战项目,但是人在少数能够有这个经历。如果你有的话,建议朝实战方面封装,比如JVM调优、GC调优、并发量或者实际遇到的并发问题,并发锁的使用等等。

3、比赛项目(部分同学有):做了一些天池、中间件比赛,也是很优秀的。突出比赛难度和你自己的贡献,用比赛数据说话、描述请比赛流程,如何攻克其中的难点,提高了成绩等等。

4、实验室弱相关的项目(部分同学有):实验室做的项目可能和你的职位不太相关,但是也可以体现能力,比如:我之前实验室用linux做了一个项目,虽然和大数据关系不是那么大,但是能够突出linux一些技能和计算机消息队列等方面,我就封装了下,面试下来发现效果还不错,因为这个项目在实验室中是真正运行起来的,属于国家重点项目,说起来有底气。

5、写一个框架作为项目(难度较大):难度大且有点重复造轮子的嫌疑,但是你能写出一个框架的部分功能,说明你的能力是有,比如实现一个RPC框架,一般面试官对这种项目还是很感兴趣,并且面试官可以从写的框架展开提问,也许一个框架就可以占据面试的60%的时间。

6、参加开源项目(难度更大):在开源项目中做过贡献,比如Apache旗下的热门项目中提交过代码,这是非常值得炫耀的,另外面试官也会被深深吸引,这就是你和竞争对手的差距,你的独特之处,面试官就会记住你。

最近也准备好好搞下公众号,感兴趣的同学,去搜TALKDATA,去关注,满满的干货,如果不是干货,随时取关,佛系发帖,随缘点赞。

-------更新2020年7月18日----------

下面学习经验更新了一些内容,书籍讲解链接,记得看!

来知乎很长时间了,这个回答收到的赞最多了,今天想更新下说几点:

1、这个帖子下本来是有群号码的,但有人说是软广,我就去掉了,下面说的资料想自取,看我主页自己加(两个群加起来快3000多人了,觉得是软广就不要加了);

2、个人看法:这个时代“软广”真的是错误吗?高质量“白piao”真的有吗?我只想说高质量的付出也是希望获得一定的利益吧,人总要生存。

3、这个贴子,官方曾主动邀请加入广告,我拒绝了,我觉的这个广告我不懂,我也不想为了一点广告费,误导认同我的人,不信看下图

-------更新2020年3月31日----------

以下是我的个人学习经历,由于每个人学历、学习时间和能力不一样,不能完全复制。

Java后端本身也是一个非常好的方向,我本身是非科班出身,所以想走不一样的道路,转行到大数据开发。

咨询较多的问题统一回复:

Java后端开发和大数据开发怎么选?

以下是个人建议:

1、我是非科班转行大数据,学了大概1年多,最终也拿到一些大数据或者后端的offer(因为大数据开发岗位少,所以为了降低风险,就多准备了一些后端的知识),但是我的路线不能完全复制,要根据自身情况,比如学历、学习能力、时间安排等等原因;

2、如果你的学习时间不充分,只是想去互联网找一份工资较高的工作,目前(2020)来看,走后端开发比较合适,岗位多、需求大;

3、如果你对大数据技术感兴趣,想走一条不同的技术路线,可以走大数据开发,但是学习成本和求职难度是相对后端较高

4、未来发展主要看个人是否会持续学习,谁也无法预知。

当转行大数据开发的时候,就看到这个帖子,那时候我也是很迷茫,经过1年多的学习,现在的我应该可以回答这个问题了。

一、笔者背景

1、本科阶段

专业自动化,主要学习C语言、嵌入式、硬件等,拿过电设、飞思卡尔等国奖,没刷过算法、对软件几乎零基础

2、研究生阶段

硕士985,控制专业,研一开始,从零基础学习了Java基础、算法、大数据框架等。

3、收获offer

春招实习拿到了蚂蚁金服、拼多多、华为(终端)、远景能源、华泰证券(Java)等。

4、已入职

工作方向:数据中台,大数据开发等

二、我为什么转行大数据开发

从转行到面试全过程视频讲述:

1、大家都选择Java开发,那我有什么优势?

当我决定转行时,身边的同学几乎都是Java,但是我想走一个与众不同的路线,当时可以选择算法或者大数据开发,感觉算法岗应该是神仙打架,而且一堆公式看不懂,所以最终选择了大数据开发,因为这个岗位既要学Java基础,也要学大数据框架,虽然学的比较多,但是,就算大数据学的不理想,也可以直接转向Java开发岗,两手准备,最后事实证明,我选择大数据开发是对的,当然中间也经历了痛苦和迷茫,差点放弃。

2、未来的职业规划

如果做Java的话,每天可能是针对不同的业务CURD,这样感觉好无聊啊,于是,希望做一些有挑战性的工作,比如组件优化、中间件、流计算、大数据存储等工作,所以,希望未来工作是少一些业务、多一些技术,这样可以帮助我技术提升和积累,未来技术路线走的更加长远。

3、未来是DATA时代

网上很多人说:互联网的后半程应该是数据时代,谁掌握数据,谁就能创造价值。我暂且相信了这句话,数据时代需要什么技术人才呢?数据可靠存储、数据计算、数据挖掘等等,感觉大数据开发还是有未来的。

三、学习计划与过程

如何制定学习计划、准备简历和项目的视频讲述:

1、第一阶段:深入Java体系

(1)Java语法基础:跟着毕向东老师的视频敲了一遍,看了《Java核心技术卷I》和《Java编程思想》(Java书籍重点标注:《Java编程思想》_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili)这两本书,刚开始看编程思想是有点难度的,不懂的地方标记出来,后面学了一段时间,回过头再看,这样的话,Java的语法基础基本过关;

(2)数据库:看了《MySQL必知必会》,学会了sql语法,刷了几十到牛客上SQL题目(https://www.nowcoder.com/ta/sql ),最后看了《MySQL技术内幕:InnoDB 存储引擎》(https://www.bilibili.com/video/BV1CJ411t7Ku)中的索引部分(有点难),数据库基本过关;

(3)JVM和并发:开始学习《深入理解java虚拟机》(https://www.bilibili.com/video/BV1yE411R7co)、《Java高并发程序设计》(https://www.bilibili.com/video/BV1ZE411S79m)这两本书,刚开始看,真心不知道再讲什么,但当后面学了多了,看了一些源码后,再看就明白了,前期看不懂是正常的;

(4)计算机基础:毕竟非科班,需要看的挺多的,看了《现代操作系统》(【Java后端和大数据开发面试书籍】:《计算机网络:自顶向下方法》:HTTP/TCP/UDP/IP等重点讲解_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili)、《图解TCP/IP》,重点掌握了一些关于内存、IO、TCP/IP、HTTP等方面的知识;

(5)Linux部分:看了《鸟哥Linux私房菜:基础篇》,然后自己装个Linux,练习指令操作,多多总结常见指令。

(6)缓存:看了《Redis设计与实现》(https://www.bilibili.com/video/BV1WE411f7fo) 和《Redis深度历险》两本书,缓存基本过关;

(7)源码:推荐学习Java集合和并发包的部分源码,面试必问;

(8)架构:推荐看下《大型网站技术架构》,扩展自己的知识广度。

2、分水岭第二阶段:需要选择是Java后端还是大数据开发了

Java后端方向:要开始学习Spring框架那一套了,并做一个后端的项目,深入理解数据库、缓存、并发、spring底层等原理,在项目中体现这些基础,面试时可以表现出你学习的深度,不只是会用。

大数据开发方向:开始学习hadoop全家桶、spark、storm等流计算,下面第3点重点讲述。

3、第三阶段:深入大数据体系

(1)入门:个人感觉视频入门最快,我看了一个关于大数据组件的介绍、安装和使用的视频课程,了解了大数据中各个组件是干嘛的,视频需要的话,联系我。

(2)Hadoop原理:先后看了《Hadoop权威指南》(https://www.bilibili.com/video/BV1DE411r7Fn)、《Hadoop技术内幕:Yarn》(推荐看博客http://dongxicheng.org )、《HBase权威指南》,掌握了hadoop中的Mapreduce、YARN、HBASE、HDFS、Hive的基本原理;

(3)流计算:先后看了《Spark大数据处理技术》(https://www.bilibili.com/video/BV1pJ411W7P5)、《Storm分布式实时计算模式》和Flink官网介绍,分析了三者的优点和缺点,学了他们的计算调度原理、容错机制、语义等方面;

(4)分布式协议:主要学了《从paxos到zookeeper分布式一致性协议》(https://www.bilibili.com/video/BV1EJ411L7AU) 这本书,并根据网上博客学习Raft协议,将这些协议进行总结,并对zk进行深入学习;

(5)深入源码:我选择深入的是HDFS源码,结合《Hadoop 2.X HDFS源码剖析》书籍,看了大概3个月左右,中途看到怀疑人生,甚至想放弃大数据了,还好坚持了下来。也可以选择其他源码,只要是用Java写的就好。

(6)消息队列:这个对于Java后端的同学也是需要的,我主要学习时Kafka,根据网上总结一些常见面试题,看了官网的介绍,基本可以应付面试;

4、第四阶段:简历、算法与项目

【终于把项目讲明白了】如何封装简历上的项目?推荐必看

【终于把简历讲明白了】好简历就该这样写!如何写出有亮点的简历!

我自己大概花了2个月,完成了一个大数据项目,根据网上的视频学的,自己封装了一下,效果还可以的,这个项目已经开源了,大家可以去Star:

5、推荐我的知乎专栏

留言的话,我定期会回复一些的。