Java后端开发学习路线
面试三要素:八股,项目经验,算法
如果三项表现优秀,基本会拿到of,面试前首先要知道需要学习哪些技术栈,这些技术栈是要写进简历里的
技术栈(学习顺序从上到下)
- Java基础:https://www.bilibili.com/video/BV17F411T7Ao/ (上部) https://www.bilibili.com/video/BV1yW4y1Y7Ms (下部) 其中集合框架底层源码要重点学习,其中GUI(swing,awt包下),如果没时间可以不学。视频中的代码集合框架那一部分多敲几遍,算法中那些集合api很常用,其他代码时间充足,也可以跟着视频敲一下,但没有必要默写硬敲
- MySQL:https://www.bilibili.com/video/BV1Kr4y1i7ru/ 其中的主从,读写分离,分库分表代码也是有时间尽量跟着视频敲一遍,知道个大概思路,理解原理是最重要的,切忌死记硬背,默写硬敲(因为面试时根本不会让你默写这些配置,工作中很多都是现成的改点东西就完了,实在不行gpt直接生成,或者网上查查),如果着急写项目,原理篇可以直接过,回来再学
- JavaWeb :https://www.bilibili.com/video/BV1Y7411K7zz 学习JavaWeb之前,尽量先了解一下计网那些协议,请求,响应,可以更加容易的理解视频中的内容。还是那句话:理解原理是最重要的,切忌死记硬背,默写硬敲。其中的项目可以不做(如果有的话),没有必要,等听完springboot时再做。还有个JSP也是比较老的,了解一下即可。
- SSM:https://www.bilibili.com/video/BV1Ya411S7aT (Spring,SpringMVC,MyBatis)属于JavaWeb的进阶。掌握Spring,SpringMVC,MyBatis的原理才是最重要的,尤其是前两个。SSM配置文件跟着视频敲一遍就行,理解每部分是干什么的就可以。不需要默写配置文件。还是那句话:理解原理是最重要的,切忌死记硬背,默写硬敲,如果着急写项目,原理篇可以直接过,回来再学
- SpringBoot:https://www.bilibili.com/video/BV19K4y1L7MT (这个是2版本,听3的也行) 属于SSM框架的进阶,这部分Thymeleaf了解一下即可(因为不是前后端分离,现阶段企业的项目都是前后端分离)。掌握SpringBoot原理十分重要(自动装配,Bean,依赖注入)这些,如果想要快速做项目找实习,这些可以回来再听。视频里的单元测试代码可以敲敲,项目(如果有的话)还是建议不要敲(因为有Thymeleaf,不是前后端分离)。如果着急写项目,原理篇可以直接过,回来再学。
- Redis: https://www.bilibili.com/video 学习方式与mysql差不多。 其中的主从,读写分离,分片集群代码也是有时间尽量跟着视频敲一遍,知道个大概思路,理解原理是最重要的,切忌死记硬背,默写硬敲(因为面试时根本不会让你默写这些配置,工作中很多都是现成的改点东西就完了,实在不行gpt直接生成,或者网上查查),如果着急写项目,原理篇可以直接过,回来再学
- 项目(苍穹外卖):https://www.bilibili.com/video/找不到好的项目可以写这个项目到简历上(很基础),不过推荐还是找星球项目写到简历上,这个可以练手。我的毕设也是这个,哈哈哈哈哈哈哈哈哈哈。这个项目推荐敲一遍,理解CRUD。
学习到这里可以简单写一个CRUD的项目,但是凭借这些找实习还不够
- JVM:https://www.bilibili.com/video/BV1r94y1b7eS,这里开始基本没有什么代码,最多有些命令。这部分原理很重要,所以学习这部分就是为了掌握原理
- JUC:https://www.bilibili.com/video/BV16J411h7Rd/ ,这部分原理很重要,所以学习这部分就是为了掌握原理,学JUC前感觉掌握一下操作系统第一章进程线程还是很重要的,知道什么是锁,CPU上下文切换是什么。这样方便学习JUC
学到这里就可以找实习了,常见的八股就是JVM,JUC,集合,MySQL,Redis,Spring原理。做一个稍微好点的项目,准备准备算法。海投,中小厂实习还是能找到的。八股掌握扎实,项目别太简单,算法也掌握一些常见的。找到大厂实习也不是梦。
如果直接想要冲击大厂,但时间不太够。例如我25年毕业,学完上述已经到24年2月份了,实习很难保证有时间再继续听课。所以可以再学学下面的微服务和MQ,算法多刷刷,项目准备的更充分,八股再熟悉熟悉。大概4月份就可以冲击大厂。
- SpringCloud:https://www.bilibili.com/video/BV1LQ4y127n4/ 里面包含很多(Redis,RabbitMQ,docker,SpringCloud),如果有学过的,可以跳过,至于差不多会用就行
- RabbitMQ: https://www.bilibili.com/video/BV1mN4y1Z7t9/ 掌握消息队列原理很重要(面试被问过)
- kafka: https://www.bilibili.com/video/BV1Gp421m7UN/ 掌握消息队列原理很重要(面试被问过)
- RocketMQ: https://www.bilibili.com/video/BV1cf4y157sz/ 掌握消息队列原理很重要(面试被问过)
RabbitMQ,Kafka,RoceketMQ上面三个至少会一个,最好全会
- MongoDB:https://www.bilibili.com/video/BV1bJ411x7mq/ 知道与MySQL的区别,了解一下就好,有余力仔细学学
- Elasticsearch: https://www.bilibili.com/video/BV1b8411Z7w5 知道用途,了解倒排索引就好,有余力仔细学学
- Linux:https://www.bilibili.com/video/BV1n84y1i7td/ 掌握常用的命令就好
- docker:在springcloud视频中会出现,如果没出现,B站随便找找会用就行
- maven:在JavaWeb,SSM,SpringBoot视频中肯定会有一个出现,如果没出现,B站随便找找会用就行
- git:B站随便找找会用就行
总结:学习Java技术栈之前,最好还是了解一些计算机网络和操作系统的知识,理解起来更容易一些
操作系统:线程进程管理,锁机制这些都是第一章的内容,学学第一章感觉就好
计算机网络:主要是应用层(HTTP),传输层(TCP,UDP),网络层(ip),了解七层结构,每层协议有哪些,三次握手,四次挥手这些
计算机网络和操作系统看看小林coding上的面试题感觉就可以。
八股
- JavaGuide: https://javaguide.cn/ 结合自己听的课做的笔记,掌握原理,最好都看
- 小林coding : https://www.xiaolincoding.com/interview/ 这里面主要学操作系统,计算机网络。里面主要看图解Mysql,图解Redis,Java面试题这三个都要看
图解网络与图解系统感觉太深了,感觉有点像考研408的感觉了,面试从没问这么深过。我看了感觉都记不住。如果能理解时间充足,还是掌握一下(计多不压身)。
八股也要多刷牛客,会有很多实习和校招面试题
算法
平台:********,牛客网,acwing
算法可以在学完Java基础时就可以刷了,边听课学技术栈,边刷算法
主要就是********,********上的算法最好有一些基础,起码知道什么是链表,数组,树,图这些数据结构,科班的看一下老师上课讲的ppt就好,非科班上B站找数据结构与算法课挑着听,例如手撕B+树感觉就没必要听了,懂原理就行或者把王道考研数据结构与算法听一遍就行,讲的很基础,主要是数据结构,算法就有个八大排序算法。
刷********算法最好按照模块刷,例如数组,链表,树,图这样的;也可以按照算法来刷:贪心,动态规划,双指针,二分查找,BFS,DFS这些,切忌从头刷,起码我遇到的没有这么干的,效果不好,接着就可以刷hot100,面试经典150这些。如果时间不够的话,可以直接上hot100和面试150
最后********刷题数量:我刷了快400道题,我建议时间充足尽量刷到450左右,就可以不用再刷新题了。如果没时间,刷hot100,面试150就行了
********刷题感觉至少需要250道题目(想要冲击大厂)
********题目,面试会出现原题,所以尽量要多刷,来回刷,要不然容易忘
牛客网上也可以刷算法,********主要是核心代码模式,牛客网上有的是ACM模式,起码要把牛客网上的输入输出模型做一遍
我之前牛客网笔试算法题,题目用户输入一个数组,使用scanner,********题目做多了,main方法scanner输入不会了。
剩下的acwing模板题也可以做做
项目经验
最好找知识星球上的项目,复杂点的,最好不要选苍穹外卖,无论是实习还是校招。如果找不到其他项目,做苍穹外卖属于保底行为
另外就是多实习,尽量一直实习,不要停止(3-6个月,尽量不要停下来,尽量找大厂)
个人感觉大厂sp,ssp都是在项目经验上十分厉害(自我感觉)
简历
- 个人信息:姓名,年龄,电话,邮箱这些是最重要的,是预备党员和党员的话写上
- 校园经历:学校(本还是硕,92特殊标记,哪年毕业),专业,打过哪些竞赛(ACM,蓝桥杯国奖很加分),其他非算法竞赛可以凑字,绩点,成绩排名高就写,感觉没人会看这个
- 实习经历:主要就是介绍在公司干了什么,具体内容分点列举,实习时间也要写上,负责什么也要写上(前端还是后端),实习收获(别写那种套话,要写就写点有用的,除非是凑字,要不然不要写)
- 技术栈:就是上面列举到的,熟悉掌握,熟悉了解,分点列举。某些可以写的详细一些(Redis熟悉了解主从,读写分离,分片集群这些)
- 项目经历:跟实习经历差不多。时间可写可不写
- 个人总结:网上随便找找就好
有博客的,gitee,github开源项目也可以加上,有的也很加分
面试官有些东西你简历上没写也会问:例如操作系统,计算机网络,数据结构与算法。 git,maven虽然不常问,但也是默认会的
总结
面试三要素:八股,项目经验,算法。
- 八股:多看,熟练掌握
- 算法:多总结,面试算法题做不出来直接挂
- 项目经验:拿sp,ssp项目经验得十分强,白菜也需要项目经验,但没sp,ssp高(自我感觉)。因为八股,算法到公司有些用不上,是为了筛选你,考察你的能力,但项目经验就是企业的刚需,可以给公司带来更高的价值。
最后:Java后端开发准备就业是个漫长的过程,都是以年为单位计算的(半年,一年,一年半,两年),我感觉至少需要学习一年时间
所以希望如果有就业意向,确定Java后端开发。要尽早的开始准备。
鼠鼠末211本非科班学习Java一年参加秋招,现在有一些后悔没有早点准备。如果大二开始准备,现在估计能拿好几个大厂of了。
现在就业对学历要求很高,很多公司卡92。
所以
- 本科非92的最好保研保92学校或考研考92学校。
- 本科92的想就业就可以参考我下面的规划。
当然双一流也可以看作92(个人感觉),例如深圳大学,杭州电子科技大学,非常好的普通本科
如果想要Java后端开发就业,本科大学四年规划:
- 大一:尽可量多学习几门语言,C,C++,Java,Python。另外还要掌握数据结构与算法,操作系统,计算机网络。大一主要是能多学点尽量多学一些。多打打算法竞赛(蓝桥杯,ACM),打竞赛结果不重要,过程很重要。顺利通过四六级。剩余时间可以参与一些社团工作。(当然错过影响也不大)
- 大二:要开始准备好方向。如果是Java后端的话,按照我的学习路线学习,在大二下学期开学时,差不多能找到大厂实习,接着就是实习快结束一个月内找下一家实习,如果第一段是大厂,后续最好也是大厂
- 大三:继续找实习,大三下2-3月份就可以投暑期实习,然后拿一个转正的of
- 大四:转正of下来的估计8月份,如果转正of不满意,正好赶上秋招多拿几个of
如果大一或大二的牛友看到这篇文章,按照这个做的话,相信秋招会有一个40k的of(个人感觉),虽然我认识的没有40k的of,但未来2-3年,厉害的能拿到of。
最后祝福牛友25年春招能拿到自己满意的of。欢迎各位牛友在评论区评论。如果有不对的地方,欢迎指正