当初常常会在网上看到说 Java 饱和了,专科找不到工作,不是科班找不到工作之类的话。作为曾经胜利转行的我,当初明确了一个情理:
那些顺利转行胜利的,不会去网上说本人转行有如许容易;
然而那些转行不胜利的,就会到网上宣传行业饱和了,专科找不到工作。
当初学的人的确越来越多了,然而学的好,达到公司招聘规范的却没有几个。
这是一个技术行业,最终能不能找到工作,找到什么样的工作次要还是看技术学的怎么样,学历,专业对口只是一个人的加分项,如果不是进大公司,只是抉择一些中小公司的话,公司次要看重的还是这个人的理论业务能力。
文末干货,创作不易,读完感觉对你有帮忙点赞反对一下。
先给大家分享一下我转行的经验:
17 年毕业,一般专科,通信业余。
当初抉择这个业余是因为有一个校企单干,承诺学生毕业之后给学生安顿待业,在学校外面混了三年之后,学校也是履行了当初安顿待业的承诺,给我“发配”到了上海,在上海工作两年,每天的工作根本就是坐着地铁跑整个上海的机房,给产生故障的服务器换硬盘,齐全没有技术性可言,在上海混了两年简直什么都没有学到,用我敌人的话说这样的工作“栓条狗都能够”。
过后想的是如果始终这样上来这辈子就废掉了,在网上理解之后,都说互联网行业有发展前景,加上本人对计算机这方面也是比拟感兴趣的,于是决定转行学习编程做程序员。
抉择了市场需求最高 Java 开始学习。
最开始的时候是在淘宝下面花了几块钱买了一套培训的教程,利用工作之余每天上班回家看,后面学习语法的时候感觉还挺简略的,可是学着学着就会遇到很多问题,本人基本就没方法解决,去百度查的答案本人还看不懂,
加上感觉学习没有方向,学的这些内容能做什么都不分明,一度让我产生了放弃的想法。
前面的时候我就把我遇到的这些问题去知乎下面发问,想晓得大家在学习 Java 的时候是不是也都这样,还是说我不太适宜学习编程。后果发现大部分的人都遇到了和我一样的问题。
他们说应该多去加一些交换裙,在裙里跟大家一起交流学习,探讨一些问题,而后我就加了很多的 Java 交换裙。
不过加了很多都是一些培训机构的推广裙,那些客服就终日无脑的采购让我买课,然而有个裙是十分沉闷的,外面都是一些探讨学习的问题和交换找工作的教训的。
这个裙每天都在探讨 Java 问题,好多曾经工作的大佬,每天不忙的时候在外面解答问题。也有很多正在学习的人每天交换学习心得。氛围是十分好的,大家能够在裙里一起监督学习。
我能保持学完,胜利转行都离不开这个群。本人摸索真的太难了,遇到问题有大佬指导,本人推敲可能要推敲几个小时,大佬几分钟就给我讲清楚了,也是让我少走了很多弯路。
群里还有好多面试题,PDF 书籍,简历模板,开发工具等等。感兴趣能够退出,裙号码是,后面三位 796,两头三位 866,前面三位 257。
而且群里不定时会内推工作,我的第一份工作就是群里给举荐的。
第一份工作是在我的老家吉林,工资不高,只有 5.5k,我是比较满意的。
因为西南这边互联网行业倒退不好,薪资原本就不高,第一份工作拿到这些也还是能够的。
而且作为一个刚自学完,对于找工作一脸懵逼的状态,能省去网上海投简历,间接进去公司面试我感觉曾经十分好了。
这份工作大略做了两个月之后之后感觉还是应该趁着年老去大城市倒退一下,多学一些前沿的技术,挑战一些高薪,打算去北京倒退一下,离家也不算很远。
来到北京之后发现北京做互联网的薪资和老家那边真是翻天覆地,北京这边的工作根本都是 10k 起步的。
在北京找到的第一份工作也是当初正在做的工作是做网页游戏的,小公司,开始的时候是 13k *13。
到当初做了一年,薪资给我涨到了 18k*14。
通过一年的技术积淀,也积攒的肯定的工作教训,外加在工作期间看了很多技术晋升的书籍,打算换一家大点公司。都说程序员的高薪是跳进去的,我也要跳出去看看。
而后分享一下学习办法:
①切记不要开始就只看书,这样比拟容易放弃。
书上的内容过于僵硬,对于零根底的小白十分不敌对,看书学习容易看到自闭。
②找一套残缺零碎的教程
学习的内容不能过于古老,有人学习还在看五年前十年前的视频,学习 SSH,GUI 等技术,都是曾经被企业淘汰的办法,无奈满足企业招聘的规范,在面试中很难答复上面试官的问题,最终找不到工作。要找一套最新且零碎的学习教程去学习。
如果找不到最新零碎残缺的教程能够退出这个 Java 学习裙,后面三位是 796,两头三位是 866,前面三位是 257.
看我分享的这些 Java 教程,相对要比你在网上找的那些好很多倍:
③学习的过程中不要“钻牛角尖”
遇到问题不要死磕,浪费时间不说,还会让学习有挫败感,遇到这种状况能够适当劳动,或者跳过学习上面的常识再回顾,或者找人求教一下,问题就能够解决了。
④沟通,交换,回绝“闭门造车”
多看网上文章其他人的学习经验,学习教训,多加一些交换群相互分享学习心得,最终找到最适宜本人的学习办法形式。遇到问题能够去问搜索引擎,或者跑技术交换群去发问,不要怕没人答复你,本人总结的过程中可能就会本人失去答案。
⑤学以致用,多练多敲
学编程就像是学数学一样,不是把书上的例题做一遍这个知识点就学会了,一个知识点可能有很多种题型,要把所有的题型都做会了,这个知识点才是真正的学会了,不然的话就会延长到另一个比拟火的问题下面“能看懂代码,本人写不进去”。
⑥放弃高效的状态
短时间内看不到成果,会产生自我狐疑,而后就越来越没劲去学习了。无论是视频,还是书,要学会去调解本人,累了就劳动会,千万不要学头悬梁锥刺股的那种学习形式。
⑦看书坚固学习
学过一段时间之后能够回头精读一些 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:装置配置;生命周期;启动模式;创立版本库;解决抵触;提交操作;版本回退;查看历史