如果有一天我醒来时,发现自己的几年Java开发经验被抹掉,重新回到了一个小白的状态。我想要重新自学Java,然后找到一份自己满意的Java工作,我想大概只需要6个月的时间就够了,如果顺利的话,4个月也差不多。如果我再想重新回到高级Java工程师的水平上,我只需要3年的时间就可以,当然这是让我带着记忆重新去学习。
上面这段话只想表达一个观点,那就是我的工作经验被抹掉,但是我带着记忆重新学,我就不会走弯路,会避免很多坑,知道怎么样的学习效率才会高,知道自己所学的内容是工作中常用的,达到就业的水平自然会很快。我们都知道自学Java很困难,在没有大佬带的情况下,就会走很多的弯路,弯路一旦走的太多,就会越来越迷茫,看不到自己进步以及就业的希望,最后导致信心逐渐丧失而放弃学习。
所以我写的这篇文章,就是要为大家的学习进行合理的规划,避免走太多弯路,高效率的快速达到就业的水平。
以下学习规划路线的安排,完全是根据我个人真实学习经历写的,是从初级到困难进行学习,目标薪资从初步10K到40K的技术水平进行循序渐进的学习,大家可以根据自己的能力进行选择性学习,如果觉得自己学习能力弱,就学最简单的部分,如果觉得自己学习能力强,并且有更多的时间,就可以学习后面更难的技术,为冲击大厂做准备。
学习前小提示:
- 选择最新的视频学习,两年以前的视频都不要去看。
- 想要学好编程要靠动手写代码,而不是刷视频,不是背代码。
- 学习编程的各种工具都提前准备好,开发工具,笔记本软件等。
Java基础
- 基础语法、数组、面向对象、抽象类、接口、枚举、常用类、集合、泛型、注解、异常处理、多线程、IO 流、网络编程、反射。
学习目标:打下扎实的语言基础,深刻理解面向对象的抽象概念,具备初步编码能力,培养对于编程的兴趣,拥有良好的理论与实操的水平。
学习建议:推荐书籍《Java核心技术》,把书上的代码都跟着敲一遍,你的基础理解水平会比大多数人都要好,过了这个阶段后,你就具备了基本编码的能力。
MySQL数据库
- 概念、SQL 搭建、语句编写、约束、索引、事务、表设计、性能调优。
学习目标:掌握基本的增删改查SQL语句编写,可以独立设计数据库表。
学习建议:大量的SQL语句练习必须跟上,根据具体的需求场景来锻炼设计表的能力,其实学习数据库没什么难的,真的是熟能生巧的过程。
常用框架
- JavaWeb
- 网页应用开发基础、前端基础、XML、JSON、Servle、Filter、Listener、Cookie、Session。
- Spring
- IOC、AOP、事务。
- SpringMVC
- 请求与响应、Restful API、拦截器、配置、执行过程。
- MyBatis
- 增删改查、全局配置、动态 SQL、缓存、和其他框架的整合、逆向工程。
- MyBatis Plus
- 引入、通用 CRUD、条件构造器、代码生成器、插件扩展、自定义全局操作。
- SpringBoot
- 常用注解、资源整合、高级特性、本地热部署。
- Redis
- 数据类型、常用操作、Java 操作 Redis、主从模型搭建、哨兵集群搭建、日志持久化、应用场景。
学习目标:掌握现代企业常用的主流框架的应用,可以应付日常项目的开发工作。
学习建议:Java语言衍生出的生态特别庞大,技术是永远学不完的。所以对于普通人来讲,只需要掌握企业普遍使用的框架就好,根据个人能力的大小,进行自我学习提升。以上我列出的知识点,基本是现代企业必用的技术,一定要按照我写的顺序进行学习。框架主要在于实际应用,所以千万不要懒,光看是没有用的,一定要自己去实际应用,先把代码敲出来再说,很多抽象的概念暂时理解不了没关系,以后会慢慢懂的。
其他
- Maven、Git
- 项目开发中常用的管理工具,掌握其基本操作即可。
- Linux
- 做开发必备的Linux服务器,很多项目都是运行在Linux上,需熟悉Linux的基本操作和脚本编写。
- Docker
- 开发中最常用的容器,提高开发和维护的效率,很容易学习。
以上内容全部学完,大概可以找一份工资10K-12K月薪左右的工作,就是初级程序员的水平。这些知识点是最保守的学习内容,一个知识点都不可以落下,都是目前企业对于Java程序员最基本的要求。到此为止,想要找到一份初级开发工作的内容学习就结束了,下面就是面试前的一些准备,以及还想学习更多内容的后续......
需要以上学习内容的最新视频教程、文档、工具、资料包的可以加我的Java交流群进行下载获取。
面试前的准备
只是学习Java体系里面的基本内容,在目前的行业发展趋势来看,那是远远不够的,或者是不具备一定竞争能力的。目前企业招聘对于数据结构、算法、计算机组成原理、计算机网络、操作系统等,都有一定的考察,尤其是数据结构与算法,基本是企业笔试中必考的一项,所以在面试之前,我们还要学习一些面试需要的内容。
- 数据结构与算法
- 数据结构是算法的根本,而算法可以说是优秀程序员的灵魂,学好算法有助于我们更好的理解代码,开拓思路从而写出更加简洁健壮的代码。而根据目前招聘来看,很多公司必考算法题。所以我建议大家在学完Java基础后,要坚持每天去LeetCode刷两道算法题,算法这关过了才有可能拿到好公司的offer。
- 推荐书籍《大话数据结构》《算法导论》《剑指offer》。
- 开发规范
- 想要成为一个优秀的程序员,或者想要进入更好的公司,那么开发规范就是必须遵守的,这会提高项目开发效率、降低维护成本。而大多数学习者对这方面根本不在意,所以我们能看到就是大多数人永远只是“码农”,最后逃脱不了被淘汰的命运。
- 推荐阅读:阿里巴巴 Java 开发手册:Alibaba Java 技术图谱-阿里云开发者社区
- 面经/面试题
- 大量的去刷面经,刷面试题,这相当于高考前2个月的冲刺,一定会大大提高你获得更多offer的概率。
自学Java会很坎坷,遇到问题自己解决不了,找工作碰壁,不知道如何练习项目,这是大多数人自学Java都会遇到的难题,也是我曾经自学过程中体验过的痛苦。如果你有上述的问题,可以跟我们一起交流,一起进步,我建立了五年的Java交流群,如果你也想找一个组织一起学习,欢迎你的加入~
如果这些你都准备好了,你可以放心的去找工作啦!!!
如果你不满足于这些,请继续阅读下面进阶部分!!!
计算机基础
如果你有很好的校招资源,想要进入到大型互联网公司,那么计算机基础三剑客就是必须要学的,好公司必考的计算机组成原理、计算机网络以及操作系统。或者你想进入好的公司,想要成为更优秀的程序员,你也可以利用空闲的时间补习计算机基础理论。
- 计算机组成原理
- CPU
- 内存
- 主板
- 输入/输出设备
- 硬盘
- 显卡
- 计算机网络
- HTTP / HTTPS 协议
- 网络模型
- UDP / TCP 协议
- 网络安全
- 域名解析
- 操作系统
- 进程、线程
- 进程 / 线程间通讯方式
- 进程调度算法
- 进程 / 线程状态
- 死锁
- 内存管理
学习建议:这部分内容偏理论知识,主要是拓展知识面,一般都是大厂对于应届生知识面宽窄的考察,学起来可能会枯燥一些,所以自己尽量要对计算机建立起一些兴趣。推荐的书籍有《图解HTTP》、《深入理解计算机系统》、《自下向上的计算机网络》。
设计模式
如果我们可以学好设计模式,那么对于我们提升薪资会有很大的帮助。设计模式是项目开发中解决某一类问题的通用解决方案,类似于算法一样,算法其实就是一系列问题解决的方案。我们工作中常用的框架,里面就有很多设计模式的体现,在后面如果要学习框架源码时,如果你不会设计模式,是没法进行源码学习的。
- 23种设计模式
- 单例模式、工厂方法模式、抽象工厂、建造者模式、原型模式、适配器模式、组合模式、装饰器模式、代理模式、享元模式、外观模式、桥接模式、迭代器模式、模板方法模式、策略模式、命令模式、状态模式、责任链模式、备忘录模式、观察者模式、访问者模式、中介者模式、解释器模式。
学习建议:设计模式的学习在于逐个击破,先理解好每一种模式的基本概念,以及每一种设计模式适用于哪种应用场景,然后在把每一种设计模式应用到实际项目的开发中,也是熟能生巧的过程。推荐推荐经典的一部书籍《图解设计模式》,吃透这本书,足可以让你掌握好这23种设计模式应该如何应用。
消息中间件
不同的公司会使用不同的消息中间件,作用一般都是解决具体项目遇到的问题,提高项目运行效率、维持项目的稳定性。不过常用的消息中间件主要就是以下4个,如果在面试的过程中被问到,可以成为自己很好的加分项。
- RabbitMQ
- ActiveMQ、
- Kafka、
- Nginx
学习消息中间件并不难,跟着视频操作一下很快就能学会,了解它们各自的应用场景,然后在项目中进行使用,上手很容易。
微服务
如果你想拿到20K以上的薪资,那么微服务框架Sping Cloud是你必须要掌握的技术,Spring Cloud是微服务系统架构的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶。
- Spring Cloud
- 注册中心
- 配置中心
- 网关路由
- 熔断保护
- 负载均衡
- CAP事务
- 幂等原则
- 微服务架构
这部分内容有一些难度,而且涉及的内容体量较大,同时也需要良好的基础,以及对于之前Spring系列框架良好的理解才能上手学习。如果觉得自己之前掌握的不错,并且有较好的学习能力,可以着手于微服务的学习。
以上拓展内容就是大多数普通人可以达到的极限了!
如果你想收获30K以上的offer,请继续为自己的技术栈进行下面的拓展!
高并发
如果你有机会进入到大厂,那么并发一定是大厂考察的重中之重,大厂开发的各种项目中,存在着各种并发的情况出现,所以在大厂的Java后端程序员是必须要懂得并发编程的。但是学习并发编程需要一定的开发经验,需要有一定的学习能力,所以这部分的内容要上一个台阶。
- Java并发编程
- Java NIO
- Reactor模式
- 分布式锁
- 分布式ID
- 分布式缓存
- 高并发架构
- 多线程
- 线程池
- 内置锁
- JMM
- CAS
- JUC
- 高并发设计模式
虚拟机
成为一个优秀的Java高级程序员必经之路,真正了解Java语言底层构造原理,掌握虚拟机性能调优的方法,写出占用内存最小且性能最高的程序代码,到这里你已经战胜了90%以上的技术人。
- JVM
- JVM生命周期
- JVM体系结构
- JVM内存区域
- 类加载机制
- 垃圾回收
- 垃圾收集器
- 性能调优
学习建议:学习Java虚拟机看这本最经典的《深入理解 Java 虚拟机》就够了。
源码
如果你对技术非常痴迷,如果你想要做系统架构师,你可以到这步开始阅读框架源码了。都说程序员到了35岁就会被淘汰,但是任何一个行业最后被淘汰的人,一定是那些早早就停下了学习脚步的人,作为可以轻松阅读源码的技术人,你只会成为这个行业中稀缺的技术人才,因为你已经具备了自己核心竞争力和不可替代性。
框架源码
- Spring
- SpringMVC
- MyBatis
- SpringBoot
- SpringCloud
学习建议:能达到这步的人很少,如果你已经达到了这步,说明你具备了非常优秀的自学能力,搜集资料的能力,解决问题的能力,持之以恒的意志,剩下的就都靠自己去摸索了,技术论坛是你每天必逛的,技术性书籍是你每天必看的。
Java程序员三个发展方向:
1. 技术
资深技术工程师,对于技术比较痴迷,有这方面的钻劲。以后可以去做技术顾问,可能一周只去公司两天,但是拿的工资是非常高的。
- 初级程序员(薪资6k-15k)
刚刚进入IT行业,做一些简单的项目,写一些简单的代码。写代码的时候还是会依靠复制粘贴的方式完成代码的编写,他们不考虑程序的质量,代码也写的很乱,也没有注释,他们只要求程序能够运行就好。
- 中级程序员(薪资16K~30K)
到了这个阶段,已经掌握了较好的技术,可以靠自己去做一些项目了,不在需要靠复制粘贴别人的代码了,开始关注代码的质量,代码的规范,把该注释的地方,注释好,开始做很多实用的项目。并且在团队中担任重要的技术人员职位。
- 高级程序员(薪资30K~50K)
到了这个阶段,技术已经非常厉害了,很技术人员开始走设计路线,比如系统设计等等。公司会有很多的技术难题需要靠你去解决,这个时候是属于大神级别了。在公司会有非常重要的位置,受到领导的重视。
- 系统架构师(薪资50K~100K)
系统架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。 系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。
2. 管理(年薪20万-100万)
有长时间的工作经验,在公司可以带别人去成长,目前常见的三个管理职业,项目经理、产品经理,技术总监。做管理需要高情商,维护人事关系,有自己的大局观,承受压力的能力要强,就是心比较累,承受的东西比较多。
3. 创业(收入无上限,但风险很大)
走创业这条路,风险大,付出的精力非常多,要有启动资金,平时需要积累人脉资源。性格需要是那种不认输的性格,为人比较乐观开朗。有良好的团队运作能力。
创业必须有很好的点子,抓住时代的机会,比如现在的碎片化时间,很多人在玩一个消消乐的游戏,这就是抓住了现代人生活方式的一个点子。