就java得市场而言,不管自学还是科班找到工作都不是很难。当然,自学的话,首先要解决的是自制力的问题,如果没有自制力,也就没有了恒心,学不了东西,自然也找不到工作。
其次,java发展非常成熟,知识点非常多,自学比较难以形成体系,可能左看一点右看一点,最后什么也不会,或者会一点点,掌握得也很肤浅,自然也不会有什么工作找到你。
不过你如果做好下面几点,有个基础,或者说找一份初级的java程序员的工作,是够够的了。
1.java基础篇:既然是一门语言,那么语言最基本的东西总该学会吧?标记,变量,常量,语句,判定,循环体、方法体什么的,总要学会使用吧?简单的数据结构,以及数据结构的一些特性,你该知道并熟练掌握吧。那么map,set,list的区别概念,你自然得很熟悉了。java自身的特性,封装继承多态总要搞明白吧?要不万一有个继承什么的,代码怎么执行你都不清楚了。接口?这个你要重点理解噢,连接万物的方法和工具,世界因为它而精彩了。然后些公共的工具java.util下面的一些小玩意儿——至少时间怎么处理还是要搞一下的吧?计算机程序嘛,免不了独写文件,那么简单的IO操作你应该要会了吧?读取远程的东西又那么一个叫socket的东西,你还是要了解一些吧?想要看起来同一时间,多干一些事情,多线程的事情你得知道了吧?不要求你玩儿很溜,简单的玩耍形式,还是要知道的。操作数据库,基本的sql怎么玩耍,JDBC怎么使用,还是该会了噢?以上,给你三周的时间,每天三个小时,差不多了。
2.似乎到目前为止,和最后的结果HTML没什么关系,但是简单的HTML、css、javascript你还是该练练手,自己做个简单的静态页面,不要求你搞得有多么好,简单的布局,简单的动作会一点点,哪怕页面丑一点也没关系——要想真的玩儿得溜溜的,那是另一个专业领域的话题,那需要你很长的时间,你耗不起。这个有个一周,每天两个小时,重点了解下表单的几种提交形式,如果要提交文件需要什么样的特殊处理?差不多了。
3.既然是搞web开发,那么一些web方面的基本的东西,你还是应该接触和了解了,http协议、https协议,dns解析过程,get/post,session/cookie是怎么一回事请,重定向和转发又是怎么一回事情,是时候应该搞明白了,自己找个网站,浏览器的开着F12去冲冲浪(chrome\firefox都可以,现在比以前好多了,不需要装插件了),观察下,每个请求,相应,都有什么不同,消息头,消息体,响应都大概又什么内容,你登录了,没登陆,又什么不一样?cookie长什么样子,有什么特性?有个3-5天左右,结合一些概念,了解了解,差不多了。
4.既然是java处理web请求和响应,那么是时候学习下java在服务端是怎么玩耍的,推荐你用下tomcat,学习下servlet,重点了解生命周期,get,post的处理区别,作用域范围,filter,Listener有什么区别,servlet提供了哪些方法,JSP是什么?能干什么?和servlet有什么区别?JSP既然是动态模板技术,那么网页在渲染的过程中,往往都需要模板来处理,重点理解模板的概念,然后用JSP和servlet做一点简单的页面看看,再结合数据库使用一下。在网上找点JSP/SERVLET实现的小项目,自己动手搞一搞,比如xxx图书管理系统(简单点的,登录/注册,列表页,新增,修改,删除就可以了)。这个阶段给你半个月到1个月吧,每个人情况不同,直到你自己脱手,把找来的小项目自己写出来就差不多了,还可以加点功能,上传个图片什么的。
5.其实前面4步走完,你已经初步掌握了web开发的一些技巧了,后续的内容,是为了你能够胜任专业的工作而需要继续去努力的方向了。走完4步,那么web开发你是知道一些了,只是你的基础还是比较薄弱,有些东西,是你必须要去掌握的了,SpringMVC、Spring、Mybatis,也就是传说中的SSM,你该去玩耍了。不过为了你玩耍得轻松一些,你先得知道反射是怎么一回事儿,动态代理又是什么鬼东西?动态代理的姿势又有哪些?为什么要动态代理。这点小概念,3-5天吧,足够了,没这个你理解框架会比较困难的。
6.正式的去玩耍SpringMVC、Spring、Mybatis,不过在java的学习道路中,你得学会一些方法论。不管遇到什么技术名词,你在上手之前,都去思考几个问题——它是什么?能解决哪个方面的问题?它是如何工作的?再去说怎么用。否则,不管是工作还是面试,你永远吃亏,还是吃大亏。既然提到了三个框架,那么作为web层面的SpringMVC的执行流程是什么?有哪些核心组件,每个组件干了什么?Spring啊,IOC是什么?为什么需要?如何玩耍?有哪些注入形式?bean的作用域又有哪些?事务是什么?(非科班的小白,萌萌新的家伙赶紧补课),ACID什么鬼?隔离层级有是什么?不同的隔离层级导致并发下事务会有哪些问题?到底是谁给了你这些保障?再说spring对事务提供了哪些方式,传播属性是个什么鬼?有哪些?为了做到这些Spring采取了什么手段,AOP又是什么鬼,怎么做到AOP的?那么在数据层面Mybatis又解决了什么问题?怎么使用?SQL注入又是怎么一回事情,如何避免?这些概念理论,别觉得枯燥无趣。比如搞懂,要不以后找不到工作可不要怪别人叻。至少花半个月到1个月时间,弄一弄,顺便做点小练习,把三个框架整合到一起,写个小demo,知道你半生不熟的,但是谁又是第一天就精通加熟练呢?
7.前面6步走完,是时候找点稍微有分量的项目练练手了。不用找太新鲜的,老点的也没关系,关键字ssm+velocity/freemarker…找点开源的xxx系统或者小商城系统,练练手,自己码一次,把原本半生不熟的东西搞起来,至少搞到要熟不熟吧。这个时候你还可能接触一些工具性质的东西,比如apache-commons组件,一些xxxUtils怎么用?怎么处理字符串,怎么判断字符串,怎么做数据,还有重点去想,你写的程序,每个页面都具备哪些功能?有哪些功能是一个页面最基本的?为什么这些功能放在一起,组成了你的xxx管理系统?你的xxx管理系统,把哪些东西做成了自动化,流程化的东西?然后数据库的表结构为什么是那样子设计的?这些表结构,和你的页面有什么联系?这个过程比较漫长,看个人天赋和你找的系统的复杂程度了,不过既然是系统,没个几十张表的,还是不要去搞了,没啥业务含量,太多的你一时半会儿也理解不了。时间还搭进去了。不过不能因为复杂,想不同,你就停下来去专牛角尖。先搞懂技术的使用,简单的业务,有时间了再去想深层次的东西吧。搞一个月吧,半生不熟到要熟不熟的过程,需要的。这个过程下来,你绝对不会去说什么看视频教程和代码能看懂,自己写就写不出来这种傻x话了。
其实前面7步完成,你要从事一点java的初级工作的能力,已经具备了,但是吧,工作离你还是有一些距离的,因为你还是个嫩得出水的小萌新,那种一眼就看得出来的新——别不服气,老鸟看菜鸟不超过30秒的。准备一些新的东西吧,至少为了找个工作。简单点的,谈谈你对javaEE的理解。虚拟机的那些事情,是不是该了解一下了?JVM的内存模型是不是因该知道一下了?JVM的参数调优,可以了解一手?缓存时什么鬼?有哪些形式,从前端到后端,浏览器缓存,本地缓存,分布式缓存都有哪些东西?web服务器有一个叫nginx的东西可以做哪些事情?怎么玩耍的?搞搞搞,搞一下撒。当然,还有数据结构这玩意儿,java版本的就可以了,好歹看得了,跟着做一做联系,因为写程序这个事情,你还是比较熟了,那么一些经典问题的经典解决办法和思路,你必须去学会了。是比较枯燥,甚至脑壳痛,但是不痛过,你哪里会感受到酸爽的滋味?还是有数据库,你以为你会写简单的,或者复杂的SQL就可以了哇——对不起,找工作面试呢还差得远,数据库引擎的区别,索引的种类,优缺点,差异,实现原理,你还是要了解一点的,简单的SQL优化还是要会一些的。这堆东西,网上抓一抓一大把,前面7步做得比较踏实的朋友,1个月时间突击下,真的就够了。但是如果要找工作——你还要练习?怎么练习?把这些性质的东西演讲出来,条理清晰,不急不躁,别去背,用自己的话理解性质的讲出来,背的一听就听出来了,把你打入xxx行业出来的人,被鄙视了不管哈。
当然,如果你还有熟人,搞javaEE的,搞玩7步就可以找他了,带带你,有这个基础足够了。第8步有他的帮助,你能更加容易一些,不过好多人还是没有熟人的,在这里我也准备了一些东西,希望可以帮助到你。
顺便在这里说一下,我目前是在职Java开发,如果在入门学习Java的过程当中有遇见任何关于学习方法,学习路线,学习效率等方面的问题,你都可以申请加入我的Java新手学习交流群:798844620,这里面聚集了很多正在学习Java技术的初学者,缺乏基础入门的视频教程也可以直接来找我,我这里有最新的Java基础精讲视频教程,群文件里面还有我做Java技术这段时间整理的一些学习手册,面试题,开发工具,PDF文档书籍教程。
网友评论