如果有一天我醒来时,发现自己的几年Java开发经验被抹掉,重新回到了一个小白的状态。我想要重新自学Java,然后找到一份自己满意的Java工作,我想大概需要7个月的时间,如果顺利的话,5个月可能就够了。如果我再想重新回到我高级Java工程师的职位上,或许3年的时间就足够了,当然这是让我带着记忆重新学。
我说上面这段话的意思其实只想表达一个重要的观点,那就是我的工作经验被抹掉,但是我带着记忆重新学,我就不会走弯路,我知道哪里是坑,怎么提高自己的学习效率,让自己学的内容更有用,能更加快速的就业。每个人都知道自学Java是很困难的,大部分人在没有好的师傅带的情况下,一定会走非常多的弯路,所以就造成了大部分人自学几个月便放弃,他会觉得自己越学越迷茫,看不到任何能学成就业的希望,他自然就没有信心学的下去。所以自学Java多久能找到一份工作,取决于你是否走了太多弯路,如果弯路走的太多,可能你很快就会有放弃的想法,就更别提能不能找到工作了。
根据我几年的Java工作经验来看,零基础的人学好Java的基础尤为重要,无论是以后做安卓开发还是服务器端开发或者大数据,都是基于Java平台。想要成为技术大佬,了解底层原理,必须把IO、多线程、线程池等底层原理深入了解,如Spring底层原理其实都是JavaSE里面的基础内容,技术研究的越深入就会发现基础学好越重要。既然想要进入这行,就从开始给自己搭建一个Java知识体系框架,让你对于整体的技术栈有明确的全局观,了解自己目前处于哪个阶段,不过对于小白来说,这可能有一点难,所以我首先给大家准备了一套完整的Java技术体系图以及相关的Java视频课程,想要获取的同学点击下面链接。

以下内容是为大家列出的应该学习的技术,这些内容全部掌握后,在一线城市找工作的薪资不会低于15K,二线城市不会低于10K,我下面列的这些内容算是比较多的,对于初学者来说是一个比较大的考验,所以任重而道远。能不能坚持学的下去,就看每个人想要拿高薪的决心有多大了。
第一步:夯实Java基础语法
1. Java语言的发展史
2. JDK的下载和安装
3. DOS命令的介绍和使用
4. Path环境变量的配置
5. 第一个代码HelloWorld案例
6. NotePad++软件的安装和使用
7. Java中的数据类型
8. 常量的使用
9. 变量的定义与使用
10. Java中代码的书写规范
11. 数据类型之间的转换
12. Java中的各种运算符操作
13. if分支语句的灵活使用
14. switch分支语句
15. for循环结构
16. while循环结构
17. do..while循环结构
18. 各种循环语句的区别和应用场景
19. 循环跳转控制语句
20. 嵌套循环的应用
21. 使用循环嵌套打印直角三角形
22. IDEA开发软件
23. 数组的动态初始化
24. 数组的访问格式
25. 数组的静态初始化
26. Java的内存划分和作用
27. 分析数组在内存中的存储
28. 方法的定义和调用
29. 方法的参数和返回值问题
30. 方法的重载(Overload)
31. 参数是基本类型和引用类型的区别
32. Debug断点调试的使用
第二步:接触面向对象基础
1. 类和对象的概述
2. 分析对象在内存中的存储
3. 成员变量和局部变量的区别
4. private关键字的应用
5. this关键字的应用
6. this关键字的内存原理
7. 面向对象特性之封装
8. 构造方法(Constructor)
9. 构造方法的注意事项
10. 标准类的定义规范
第三步:初识API基础
1. API的使用方式
2. String类的特点
3. String类的常用构造方法
4. 字符串的比较规则
5. 用户登录的案例
6. 遍历字符串的方式
7. 字符串的拼接
8. 字符串的反转操作
9. StringBuilder类的作用
10. StringBuilder类的构造方法
11. StringBuilder类的常用方法
12. 用StringBuilder完成字符串拼接和反转
第四步:初识集合基础
1. ArrayList集合的特点
2. ArrayList的构造方法
3. ArrayList的常用操作
4. 集合存储自定义类型并遍历
5. 学生管理系统的业务介绍
6. 学生管理系统的创建
第五步:掌握Git的使用
1. Git概述和特点
2. Git的下载安装
3. Git基本概念
4. Git操作入门
5. Git历史版本控制
6. Git分支版本控制
7. Git远程仓库的操作
8. Git远程托管平台应用(GitHub,码云)
9. Git解决冲突
10.IDEA中集成Git应用
11.Git常用操作命令
第六步:深入理解面向对象原理
1. 面向对象特性之继承
2. 继承的好处和弊端
3. super关键字的作用
4. 继承时子父类的访问特点
5. 方法的重写(Override)
6. package关键字的作用
7. import关键字的作用
8. final关键字的作用
9. static关键字的作用
10. static关键字内存分析
11. 面向对象特性之多态
12. 多态的好处和弊端
13. 多态中成员访问的特点
14. 多态中的数据类型转型
15. instanceof关键字的使用
16. 抽象类的特点
17. 抽象类的成员特点
18. 模板设计模式
19. 接口的概述
20. 接口的特点和注意事项
21. 类、抽象类、接口之间的关系
22. 内部类的概述
23. 成员内部类的使用
24. 局部内部类的使用
25. 匿名内部类的使用
26. 匿名内部类在开发中的应用
第七步:了解Web服务器
1.JavaEE规范概述
2.网络资源分析之静态资源和动态资源
3.系统结构分析之C/S和B/S
4.Tomcat概述
5.Tomcat下载与安装
6.Tomcat各版本所需支持
7.Tomcat启动及启动问题分析及解决
8.Tomcat目录结构详解|9.IDEA集成Tomcat
9.JavaEE工程概述
10.IDEA创建JavaEE工程
第八步:掌握异常
1. 异常的概述
2. JVM默认处理异常的方式
3. 异常处理方式之try..catch
4. 异常处理方式之throws
5. Throwable的常用方法
6. 异常的分类和区别
7. 异常的注意事项
8. 自定义异常的使用
第九步:掌握集合
1. 集合体系结构
2. 单列集合体系的详细讲解
3. 迭代器的使用
4. 增强for循环的使用
5. forEach方法遍历
6. 并发修改异常的产生原因和解决办法
7. 数据结构之栈和队列
8. 数据结构之数组和链表
9. ArrayList集合源码分析
10. LinkedList集合源码分析
11. 双列集合体系的详细讲解
12. Map集合的遍历方式
13. TreeSet的自然排序和比较器排序
14. 数据结构之树
15. 数据结构之二叉树
16. 数据结构之二叉平衡树
17. 数据结构之红黑树
18. TreeSet(TreeMap)底层源码分析
19. 数据结构之哈希表
第十步:掌握IO流
1. File类对文件的操作
2. IO流的概述和分类
3. 字节流写数据的方式
4. FileOutputStream和BufferedOutputStream源码分析
5. 字节流读数据的方式
6. FileInputStream和BufferedInputStream源码分析
7. 字节流完成视频文件的复制
8. 编码表
9. 字符流写数据的方法
10. 字符串读数据的方法
11. 字符缓冲流的使用
12. 字符缓冲流的特有方法
13. 标准输入输出流
14. 打印流的使用
15. 对象序列化流
16. serialVersionUID&transient
17. Properties的用法
18. 内存操作流的使用
19. RandomAccessFile使用
20. SequenceInputStream的使用
21. 压缩流/解压缩流
第十一步:深入理解多线程
1. 进程和线程的区别
2. Java实现多线程的三种方式
3. 线程API之线程名称
4. 线程API之线程休眠
5. 线程API之线程礼让
6. 线程API之线程优先级
7. 线程API之线程中断
8. 线程API之后天线程
9. 线程的安全问题
10. 同步代码块
11. 同步方法
12. Lock锁
13. 死锁概述以及现象演示
14. 死锁诊断(jstack工具的使用)
15. 线程通讯之生产者消费者问题
16. 线程通讯代码实现之同步代码块
17. 线程通讯代码实现之Condition实现通信|
18. 线程通讯代码实现之阻塞队列(BlockingQueue)实现
19. 线程的状态
20. 线程池概述
21. 自定义线程池
22. Executors创建线程池
23. ThreadPoolExecutor创建线程池
24. ThreadPoolExecutor原理介绍以及任务拒绝策略介绍
25. volatile关键字
26. JMM内存模型
27. 原子性概述
28. 原子类AtomicInteger类的使用
29. CAS算法
30. 并发容器ConcurrentHashMap原理讲解
31. 并发工具类(CountDownLatch,Semaphore,CyclicBarrier,Exchanger)的使用
第十二步:学习网络编程
1. 网络编程的概述
2. 网络编程的三要素之ip地址(ipv4,ipv6)
3. InetAddress类的操作
4. 网络编程的三要素之端口和协议的详细解释
5. 网络参考模型
6. UDP协议发送与接收数据
7. 聊天小程序案例
8. UDP协议中广播与组播
9. TCP协议发送与接收数据
10. 多线程下文件的上传
11. NIO概述
12. NIO之Buffer的使用
13. NIO之Channel的使用
14. NIO之Selector的使用
15. 自定义非阻塞式的HTTP静态服务器
第十三步:了解反射
1. 虚拟机类加载机制(概述,类加载过程,类的初始化时机)
2. 类加载器(概述,分类,双亲委派机制,ClassLoader类,自定义类加载)
3. 反射机制的概述
4. 获取Class类的对象
5. 反射获取构造方法并使用
6. 反射获取成员方法并使用
7. 反射获取成员变量并使用
8. 自定义非阻塞式的HTTP动态服务器
以上内容是Java语言基础部分,所有人必须要夯实掌握,以后能达到什么高度,完全取决于基础掌握到什么水平,很多自学的人不信邪,对于JavaSE基础不重视,相信我,你以后绝对走不远。学完这部分内容后,我建议大家做一个ATM取款器的项目作为阶段性检测。
以上内容可以观看下面的视频进行学习
18.Jdbc操作模板的封装-自定义JdbcTemplate
13.Servlet的上下文对象ServletContext
16.Spring高级分析之-组件扫描器TypeFilter
17.Spring高级分析之-Import注解和自定义导入器
18.Spring高级分析之-BeanFactoryPostProcessor
19.Spring高级分析之-BeanPostProcessor
20.Spring高级分析之-InitializingBean
29.Spring中AOP的高级分析之-EnableAspectjAutoProxy注解的解析分析
34.Spring事务高级分析之-TransactionTemplate源码分析
35.Spring事务高级分析之-DataSourceUtils源码分析
36.Spring事务高级分析之-TransactionSynchronizationManager源码分析
37.Spring事务高级分析之-TransactionEventListener注解的加载过程分析
39.JdbcTemplate和NamedParameterJdbcTemplate的使用
40.RedisTemplate的使用|41.Spring事务设计的设计模式分析
3.SpringMVC基于Servlet3.0规范的纯注解环境搭建
6.SpringMVC的 @RequestMapping注解详解
9.SpringMVC中和ServletAPI相关的注解使用详解
16.SpringMVC中的请求参数封装源码分析和运用的设计模式介绍
20.SpringMVC中的文件上传|21.Spring SpringMVC Mybatis的整合
15.新增@SelectProvider@UpdateProvide
16.新增@InsertProvider@DeleteProvide
11、ZooKeeper机制讲解(ZooKeeper选举、ZooKeeper脑裂效应等)
以上技术栈的对应教程可以点击下面进行获取,相关进阶技术内容我会不断的进行更新,希望大家多点赞收藏关注。
1、注重Java基础的学习,Java技术水平以后可以达到什么高度,完全取决于Java基础的理解程度,所以我建议大家买《Java核心技术》这门书好好研究一下,这里面详细讲解了JavaSE所有内容的原理,如果你能把这本书研究透,以后会有很高的技术造诣。
2、利用好搜索引擎,百度和Goodle是伴随着我们职业生涯的两大利器,Java语言的生态圈非常完整,我们遇到的很多问题都可以通过百度或者Goodle查阅到,如果你能利用好搜索引擎,是可以不断锻炼自己独立解决问题的能力,这样你的学习效率就会越来越高。
3、养成浏览GitHub和CSDN的习惯,GitHub是最大的开发项目平台,里面有很多博主都非常不错,而CSDN则是国内最大的IT论坛,我们IT人必须要常去逛,可以获取到很多最新的行业信息以及学习编程的方法。
4、初学者要学会多查API文档,Java的类、方法有很多,任何一个人都不可能全部记住,由于初学者会觉得学着学着就忘,这都是很正常的事情,忘了某种方法就去查API文档,多查多写自然就记住了,每一个学习Java的人都是这样过来的,包括我也不例外。
5、学习编程重在于实践,只看视频或者只看书是不行的,一定要把视频或者书中的代码用键盘敲出来,然后自己默写一遍,跟着视频或者书中的思路去完成,这样来锻炼自己初级的编码能力和编程思维。
6、多跟已经做过很多年开发的人交流,这些经历他曾经都经历过,哪里是坑哪里是弯路他都知道,如果有技术大佬指点一下,你会少走很多弯路,你研究一天的时间或许不及别人指导你10分钟,所以懂得“借势”是人生的智慧。
1. 技术
资深技术工程师,对于技术比较痴迷,有这方面的钻劲。以后可以去做技术顾问,可能一周只去公司两天,但是拿的工资是非常高的。
初级程序员(薪资6k-15k)
刚刚进入IT行业,做一些简单的项目,写一些简单的代码。写代码的时候还是会依靠复制粘贴的方式完成代码的编写,他们不考虑程序的质量,代码也写的很乱,也没有注释,他们只要求程序能够运行就好。
中级程序员(薪资16K~30K)
到了这个阶段,已经掌握了较好的技术,可以靠自己去做一些项目了,不在需要靠复制粘贴别人的代码了,开始关注代码的质量,代码的规范,把该注释的地方,注释好,开始做很多实用的项目。并且在团队中担任重要的技术人员职位。
高级程序员(薪资30K~50K)
到了这个阶段,技术已经非常厉害了,很技术人员开始走设计路线,比如系统设计等等。公司会有很多的技术难题需要靠你去解决,这个时候是属于大神级别了。在公司会有非常重要的位置,受到领导的重视。
系统架构师(薪资50K~100K)
系统架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。 系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。
2. 管理(年薪20万-100万)
有长时间的工作经验,在公司可以带别人去成长,目前常见的三个管理职业,项目经理、产品经理,技术总监。做管理需要高情商,维护人事关系,有自己的大局观,承受压力的能力要强,就是心比较累,承受的东西比较多。
3. 创业(收入无上限,但风险很大)
走创业这条路,风险大,付出的精力非常多,要有启动资金,平时需要积累人脉资源。性格需要是那种不认输的性格,为人比较乐观开朗。有良好的团队运作能力。
创业必须有很好的点子,抓住时代的机会,比如现在的碎片化时间,很多人在玩一个消消乐的游戏,这就是抓住了现代人生活方式的一个点子。
自投简历
大部分人会选择自己投简历找,推荐招聘网站boss直聘、拉勾网、实习僧、智联招聘等。找工作时简历尤为重要,一份好的简历可以获得很多面试的机会,相关的简历编写指导可以百度自行搜索。
内推工作
最好是有人内推,内推要更加方便,只要满足技术的要求基本都可以入职,所以平时自己多结实一些HR以及行业内大厂的大佬们,以后在这个行业找工作基本都是靠关系内推,有关系好办事自古以来都是这样的。
注册有任何问题请添加 微信:MVIP619 拉你进入群

打开微信扫一扫
添加客服
进入交流群
发表评论