现在经常会在网上看到说Java饱和了,专科找不到工作,不是科班找不到工作之类的话。作为已经成功转行的我,现在明白了一个道理:
那些顺利转行成功的,不会去网上说自己转行有多么容易;
但是那些转行不成功的,就会到网上宣传行业饱和了,专科找不到工作。
现在学的人确实越来越多了,但是学的好,达到公司招聘标准的却没有几个。
这是一个技术行业,最终能不能找到工作,找到什么样的工作主要还是看技术学的怎么样,学历,专业对口只是一个人的加分项,如果不是进大公司,只是选择一些中小公司的话,公司主要看重的还是这个人的实际业务能力。
先给大家分享一下我转行的经历:
19年毕业,普通专科
当初是因为有一个校企合作,承诺学生毕业之后给学生安排就业,在学校里面混了三年之后,学校也是履行了当初安排就业的承诺,给我“发配”到了上海,在上海工作两年,每天的工作基本就是坐着地铁跑整个上海的机房,给发生故障的服务器换硬盘,完全没有技术性可言,在上海混了两年几乎什么都没有学到,用我朋友的话说这样的工作“栓条狗都可以”。
当时想的是如果一直这样下去这辈子就废掉了, 在网上了解之后,都说互联网行业有发展前景,加上自己对计算机这方面也是比较感兴趣的,于是决定转行学习编程做程序员。
选择了市场需求最高Java开始学习。
最开始的时候是在淘宝上面花了几块钱买了一套培训的教程,利用工作之余每天下班回家看,前面学习语法的时候感觉还挺简单的,可是学着学着就会遇到很多问题,自己根本就没办法解决,去百度查的答案自己还看不懂,
加上感觉学习没有方向,学的这些内容能做什么都不清楚,一度让我产生了放弃的想法。
后面的时候我就把我遇到的这些问题去知乎上面提问,想知道大家在学习Java的时候是不是也都这样,还是说我不太适合学习编程。结果发现大部分的人都遇到了和我一样的问题。
他们说应该多去加一些交流群,在群里跟大家一起交流学习,探讨一些问题,然后我就加了很多的Java交流群。
不过加了很多都是一些培训机构的推广群,那些客服就整天无脑的推销让我买课,但是有个群是非常活跃的,里面都是一些探讨学习的问题和交流找工作的经验的。
这个群每天都在讨论Java问题,好多已经工作的大佬,每天不忙的时候在群里解答问题。也有很多正在学习的人每天交流学习心得。气氛是非常好的,大家可以在群里一起监督学习。
我能坚持学完,成功转行都离不开这个群。自己摸索真的太难了,遇到问题有大佬指点,自己琢磨可能要琢磨几个小时,大佬几分钟就给我讲清楚了,也是让我少走了很多弯路。
而且群里不定时会内推工作,我的第一份工作就是群里给推荐的。
第一份工作工资不高,只有5.5k,我是比较满意的。
因为当时老家这边互联网行业发展不好,薪资本来就不高,第一份工作拿到这些也还是可以的。
而且作为一个刚自学完,对于找工作一脸懵逼的状态,能省去网上海投简历,直接进去公司面试我觉得已经非常好了。
这份工作大概做了两个月之后之后感觉还是应该趁着年轻去大城市发展一下,多学一些前沿的技术,挑战一些高薪,打算去北京发展一下。
来到北京之后发现北京做互联网的薪资和老家那边真是天翻地覆,北京这边的工作基本都是10k起步的。
在北京找到的第一份工作也是现在正在做的工作是做网页游戏的,小公司,开始的时候是13k
*13。
到现在做了一年,薪资给我涨到了18k*14。
经过一年的技术沉淀,也积累的一定的工作经验,外加在工作期间看了很多技术提升的书籍,打算换一家大点公司。都说程序员的高薪是跳出来的,我也要跳出去看看。
然后分享一下学习方法:
①切记不要开始就只看书,这样比较容易放弃。
书上的内容过于生硬,对于零基础的小白非常不友好,看书学习容易看到自闭。
②找一套完整系统的教程
学习的内容不能过于陈旧,有人学习还在看五年前十年前的视屏,学习SSH,GUI等技术,都是已经被企业淘汰的方法,无法满足企业招聘的标准,在面试中很难回答上面试官的问题,最终找不到工作。要找一套最新且系统的学习教程去学习。
③学习的过程中不要“钻牛角尖”
遇到问题不要死磕,浪费时间不说,还会让学习有挫败感,遇到这种情况可以适当休息,或者跳过学习下面的知识再回顾,或者找人请教一下,问题就可以解决了。
④沟通,交流,拒绝“闭门造车”
多看网上文章其他人的学习经历,学习经验,多加一些交流群互相分享学习心得,最终找到最适合自己的学习方法方式。遇到问题可以去问搜索引擎,或者跑技术交流群去提问,不要怕没人回答你,自己总结的过程中可能就会自己得到答案。
⑤学以致用,多练多敲
学编程就像是学数学一样,不是把书上的例题做一遍这个知识点就学会了,一个知识点可能有很多种题型,要把所有的题型都做会了,这个知识点才是真正的学会了,不然的话就会延伸到另一个比较火的问题上面“能看懂代码,自己写不出来”。
⑥保持高效的状态
短时间内看不到效果,会产生自我怀疑,然后就越来越没劲去学习了。无论是视频,还是书,要学会去调解自己,累了就休息会,千万不要学头悬梁锥刺股的那种学习方式。
⑦看书巩固学习
学过一段时间之后可以回头精读一些java经典书籍巩固知识点效果是非常好的。
⑧记笔记+常复习
“温故而知新”记笔记不是单纯的把重点记下来,对于这个知识点你一定要有自己的思考与理解,然后经过自己的思考和理解之后,把自己对于这个知识点的思考和理解用自己的话写出来。
⑨项目经验
可以去网上的开源平台找一些项目来说,类似“GitHub”“码云”这样的平台。边做项目边查资料。千万别照着源码抄,一定要自己独立去做,要去锻炼自己的实际开发能力,代码逻辑思维。
⑩有人带,高效学习,少走弯路。
如果只是靠自己摸索,效率很低,没有明确的学习方向,不知道学到的内容可以做什么。遇到问题也得不到及时解答,百度得到的答案不精准不及时,浪费时间。
而且通过自学看视频成功就业的难度还是比较大的,不是每个人都是天才可以无师自通,真正的技术是通过与大佬的日常沟通交流中学到的经验,而不是看视频或者看是学习那些死知识点。因为我们学习这门并不是为了应付考试,而是要用代码去创造一个个产品。
最后总结我的学习转行经历送给大家几句话:
1、趁着年轻一定要多学习,千万不要混日子,不然等你上了年纪想改变自己的时候就没有那个精力了。
2、转行学习编程最好要有人指导学习,自己闭门造车是行不通的,现在因为学习编程的人越来越多,多数都是一些半吊子,所以公司的招人标准越来越高,在经济允许的情况下,花钱找个专业的老师指导还是非常有必要的。
3、对于那些专科学历的同学,虽然专科学历可以找到工作,但是对于后面的职业晋升还是有一些影响的,就算可以找到工作,学历最好还是要提升一下。
4、进入互联网行业之后也是需要不断学习的,互联网行业技术更新快,你不能35岁的时候还做着25岁时同样的工作,这样的话公司不淘汰你淘汰谁呢?
学习路线:
(一)JAVA 核心面向对象设计与实现(SE CORE)
语言结构和逻辑
JAVA 开发环境安装配置:jdk 安装配置, HelloWorld 应用
类文件结构:类定义;main 方法;注释; 代码块
核心语法、逻辑、循环结构:变量;标识符;表达式; if; while;for
JAVA 核心面向对象
数组:数组结构特征;添加数组元素; 遍历数组元素
面向对象核心思想:核心面向对象分析设计实现功能业务
封装、类规范、对象、属性、方法:封装的意义;类的设计;构造器;对象管理;属性;方法规范;方法重载
面向对象继承特性及应用:继承意义规范使用场景;继承访问限制;上转型对象;方法重写;super 关键字
面向对象抽象设计核心理念:抽象设计的意义;抽象类规范;抽象方法;扩展抽象类限制;接口规范;接口继承与实现;接口回调;运行时对象多态;适配器
内部类、静态代码块:内部类定义规范使用场景;内部类对象创建;匿名类对象应用方法参数;静态代码块加载及使用规范a
JAVA核心组件库
核心基础库工具:Object类;基础类型保证类;Math、System类;
字符串类;日期及格式化类
核心集合库工具:List、Set集合接口;ArrayList、Vector、HashSet、TreeSet实现类;Map接口;HashMap、Hashtable、TreeMap 实现类;泛型应用
JAVA异常处理机制
异常基础库、异常处理:异常分类;编译型、运行时异常;异常声明、捕获和处理;1.7异常新特性;自定义异常
JAVA高级
输入输出(IO):File核心文件类;二进制输入输出流;字符输入输出流;缓冲文件流;文件复制;序列化读写
多线程应用:进程与线程;线程生命周期;线程阻塞;唤醒;线程同步;对象锁;对象监视器;线程等待与唤醒;死锁
网络套接字编程:网络协议;HTTP通信;UDP通信;ServerSocket;Socket
JAVA8新特性:接口的改进;函数式接口;Lambda表达式;方法引用;流;Date新API
高级扩展
XML文件操作:log4j 读写XML文档;jdom 读写XML文档
反射编程:反射编程API实现反射编程机制
代理实现:静态代理;动态代理实现
正则表达式:JAVA正则表达式实现字符序列校验
枚举类型:枚举类定义;遍历枚举
注解应用:开发自定义注解应用
(二)JAVA JDBC实现数据库开发
数据库开发
MySql、Oracle数据库:DDL语言;create database;create table;数据约束;表关联、主外键约束;DML语言;select语句;update语句;delect语句;insert语句;高级查询;聚合函数;单行函数;数据库编程,索引;视图;自定义函数;存储过程;事务处理;触发器;游标;数据库设计;三大范式
JAVA数据库应用开发
使用JDBC API操作数据库:Connection、Statement、ResultSet接口;DriverManager驱动类;PreparedStatement、CallableStatement接口;读取配置文件;遍历处理查询结果集;DAO逻辑层抽象设计与实现;批处理数据;存储过程调用;JDBC事务处理
(三)JAVA 面向对象企业级应用核心开发(EE CORE)
JAVA EE预科
JAVA EE 规范:JAVA EE包括哪些技术规范;HTTP、HTTPS协议;BS模式应用;WEB 服务器;MVC 构建模式
Tomcat 服务器:Tomcat服务器安装、配置、集成IDE、参数配置;部署JAVA WEB应用;管理Tomcat服务器
JAVA EE核心控制器
Servelt 组件开发应用:Servlet 核心控制器;Servlet处理请求原来过程;Servlet生命周期;核心服务方法解析;Servlet上下文;ServletRequest请求对象;ServletResponse响应对象;POST和GET请求区别;请求转发和重定向
会话跟踪:HttpSession会话对象;用户授权;URL重写;隐藏表单域;cookie应用;MD5加密;用户登录基本设计与实现
AOP实现
WEB请求拦截:AOP 模式详解;切面编程设计的意义;Filter接口;部署配置Filter;链条式过滤实现;过滤统一编码格式;重复登录拦截实现
JAVA EE动态WEB视图
JSP (Java Service Pages):JSP 动态实现原理剖析;JSP生命周期;JSP JAVA代码规范;指令详解;JSP隐式对象;JSP动作;JSP注释;
EL 表达式语言:EL实现原理;EL的开发优势;常用核心EL 使用详解
JSP 标准标签库:JSTL 详解;JSTL实现规范;JSTL 核心标签应用
用户自定义标签:用户自定义标签开发实现
客户端WEB视图处理
JavaScript客户端核心语言编程与实践:JavaScript 核心语法;逻辑处理;数组;函数;类定义;ES6规范;内部对象;宿主对象;自定义对象
jQuery 工具库应用:JQuery核心基础;核心选择器;属性操作;常用函数;事件处理;Ajax请求处理
(四)SpringFramework & MyBatis构建Java企业级项目
SpringFramework IOC 容器框架
Spring框架核心基础:依赖倒置设计原则;IOC特性及实现;依赖注入;Spring上下文;上下文核心配置文件解析;托管Bean;Spring引擎
Spring 注解应用:零配置优势;注解引擎配置;常用注解解析
软件系统日志应用:log4j日志系统解析;log4j配置日志规则
Spring管理JDBC:数据库配置文件加载;事务属性配置;AOP事务拦截配置;JDBC模板配置应用;配置数据源;模板应用数据开发实现
Spring MVC应用:MVC核心实现原理剖析;业务控制器Action实现与映射;视图解析器配置
Spring AOP 应用:AOP 实现过程;Spring AOP配置;AOP自定义实现;
MyBatis ORM数据库框架
MyBatis 核心基础:MyBatis 工作过程;框架核心引擎;搭建应用环境;Session工厂和Session会话对象;SQL映射配置
MyBatis 全局配置:全面解析MyBatis核心配置文档节点
MyBatis 映射配置:增删改查映射基本配置;缓存映射
高级映射:查询结果封装处理;复杂关联映射配置
动态SQL实现:动态SQL映射详解
Spring整合MyBatis:整合条件;Spring整合MyBatis配置实现;模板配置;数据操作实践
(五)Freemarker JAVA视图模板框架应用
JAVA WEB视图模板应用
准备使用Freemarker:Freemarker的作用;安装Eclipse Freemarker插件工具;
Freemarker 核心引擎:配置Freemarker核心引擎
Freemarker 插值:插值详解;插值应用
Freemarker 指令:if 指令;elseif指令;switch case指令;list值;include指令
Freemarker数据类型:字符串;日期时间;Map数据类型;变量的声明和应用
Freemarker高级:子程序;常用函数详解
(六)Spring Boot框架构建Java企业级应用
Maven项目构建管理工具
Maven 基础核心:Maven简介;安装与配置;POM核心;构建生命周期;Maven仓库
构建Maven Java项目:Maven项目组织结构;Maven构建Java项目实现;文档生成;
部署项目
Maven常用命令:Maven常用命令介绍
Spring Boot智能框架工具
Spring Boot环境搭建:Spring Boot介绍;CLI构建方式;Spring Boot IDE插件安装;基于Maven构建项目过程;Spring Boot构建WEB应用
Spring Boot搭建数据源:连接池配置;配置构建数据源Bean;事务管理配置;
Spring Boot 配置日志系统:配置log4j日志系统
Spring Boot整合MyBatis:整合概述;实现全注解方式配置;基于xml文件配置
Spring Boot整合MP:整合MP概述;配置依赖数据源;MP最初应用
MP 应用API:详解MP应用优化Mybatis简化数据库操作
SpringCloud
配置中心:Eureka服务端/Eureka客户端;Consul服务端/Consul客户端
客户端负载:Ribbon;Feign;RestTemplate分析
网关:Sleuth;RestTemplate分析
服务追踪:Sleuth;zipkin
消息总线:Bus
项目管理
GIT:安装配置;工作流程;创建仓库;基本操作;分支管理;查看历史;标签;GitHub
SVN:安装配置;生命周期;启动模式;创建版本库;解决冲突;提交操作;版本回退; 查看历史
书籍推荐:
- 入门书籍
- 基础书籍
- 多线程与并发
- 网络编程
- 数据结构
- 语言基础
- 进阶
- 性能优化
- 响应式编程
- JVM虚拟机
- 代码&设计优化
- 设计模式
- 框架与中间件
- 数据库
- 缓存与NoSQL
- 消息队列
- ORM框架
- Spring家族
- 高并发
- 分布式
- 搜索引擎
- 大数据
- 架构
- 分布式架构
- 微服务架构
- 架构方法论
- JVM周边语言
- 项目管理&领导力&流程
- 项目管理
- 团队管理
- 数学与算法
- 数学
- 算法
- 职业素养与个人成长
- 职业素养提升
- 个人软技能
- 大厂出品
- 阿里巴巴技术丛书
- 京东技术丛书
- 工具书
- 面试求职
- 格局与视野
- Java之外
- 网络知识
- 安全知识
- 工具
- 运维&DevOps
关于开发工具
eclipse:
链接:https://pan.baidu.com/s/12GtwnreQ8bZDgGjWWqk0hg
提取码:qfk8
IDEA:
链接:https://pan.baidu.com/s/1NjuiR30pnOAv-Wbc4v1jMw
提取码:dmfi
各版本JDK
链接:https://pan.baidu.com/s/1odMLZob4OmdOiq4jw--sVw
提取码:hb61
MYSQL
链接:https://pan.baidu.com/s/1sFsYAVdgDBxUzvI7T39Wzg
提取码:xi88
ORACLE
链接:https://pan.baidu.com/s/1Ytbl9J5FN78v-haJp4O3cA
提取码:v7gi
Java Web 服务器
链接:https://pan.baidu.com/s/1uOmNZ5j_GEulUJH9iLvrmg
提取码:au0u
项目构建管理工具
链接:https://pan.baidu.com/s/18jERswShZ7qn4QndBr_kaA
提取码:c7qk
刷题网站:
牛客网
力扣
学习Java的网站:
自学网
哔哩哔哩
慕课网
网易云课堂
技术论坛:
CSDN-专业开发者社区
掘金-代码不止,掘金不停
博客园-开发者的网上家园
OSCHINA-中文开源技术交流社区
GitHub-中文社区
好啦!本博主不定期分享个人经历或者朋友、网友的投稿经验分享噢,想必大家自学Java过程是很不容易的,这里建立了氛围良好的java学习技术交流群:716743415,或者备注“996”添加VX咨询专业老师为你解答Java学习上的疑惑。