互联网时代下,由于信息技术的更新速度惊人,程序员的职业生涯是一个不断学习的过程。同时技术就相当于薪资,你的技术越高,薪资也就越高。
有的人奋斗10年晋升为高级工程师,而有的人5年,甚至3年,就成为高级工程师、架构师,拿30万+、50万+的年薪。
明确优秀Java工程师需要掌握的技能要求,可以助你在升职加薪的道路上少走弯路。下面播妞将从宏观和微观两方面,为大家详细剖析优秀Java工程师的技能要求。
呕心沥血整理
记得收藏转发哦
宏观方面
1. Java(高级)
或许一般的程序员只需知道一些基础语法结构就可以应付了,但要成为高级Java工程师,要对JDBC、IO包、Util包、Text包、JMS、EJB、RMI、线程,有所研究。
如果可以,最好将Java的所有包都浏览一下,知道大概的API,这样你就会发现,其实很多功能通过Java的API都可以实现,有些时候不必自己费太多的脑筋。
2. 设计模式
其实写代码并不是一件难事,但如何写得好就比较难了。这个“好”字包括代码可重用性,可维护性,可扩展性等。写出好的代码往往要借助一些设计模式。
当然,通过个人长期的经验积累,可以形成自己代码风格。但既然前人已经给我们总结出了经验,我们何不踩着前人的肩膀前进?
3. XML
现在的系统中不使用XML几乎是不可能的。XML的功能非常强大,它可以做数据转换、做系统的配置、甚至可保存你的系统业务数据。
因此必须了解XML,包括它的语法,结构,熟练的使用解析XML的一些API,比如JDOM,SAX等。因为在我们一般的项目中,XML往往担当系统配置信息的作用,需要用这些API解析这些配置信息,开发完美的项目。
4. 精通使用一种或两种框架
像在《如何成为java初级程序员》中提到的那样,“框架都会有许多可重用的代码,良好的层次关系和业务控制逻辑,基于框架的开发使你可以省出很多的开发成本”。
但在这里希望你能精通,更多的是通过框架的使用了解框架的思想。这样自己在开发一个项目时思路会开阔一些。
5. 熟悉主流数据库
真正比较大的项目都是有人专门做数据库的,但往往很多项目要求高级工程师,也参与数据库的设计以及SQL的编写。
所以为了更好的为国家做贡献,可以多了解一些主流数据库,比如SQLSERVER,ORACLE,多连接SQL和存储过程以及触发器。如果不是“科班”出身,还需要补充一些数据库原理方面的知识。
6. 精通一种或两种WEBServer
作为JAVA工程师,不可避免地要部署你的项目到WebServer上,只有当你精通一种WebServer时,才可能最大限度地使用它的资源,这往往可以节省很多时间和精力。
7. UML
在比较正规的开发团队中,UML是讨论项目的交流工具,你要想做一个软件工程师,你至少要能看懂。如果你想做高级工程师,那你要能通过它来描述你对项目的理解,尽管这不是必须,但却很重要。
8. 站在更高角度分析问题
首先这不是一个知识点,也不是通过书本就能学得到的。在工作中多向身边的系统分析员、需求分析员、系统设计员学习,多站在他们角度去看待自己在开发的项目。
9. 工具
在这个阶段可能会接触到不同的工具,尽管你还需要使用JB或者IDEA,但要对ROSE,Together多了解一些,因为要画UML了。
不要再对Dreamweaver等HTML编辑器情有独钟了,那些JSP页面让初级程序员去写吧!
微观方面
向上滑动阅览
1.CoreJava部分
这是最基础的,对于一个java高级开发/设计人员,你需要对这一部分达到精通的水平,重点内容如下:
a.面向对象编程思想(封装继承多态接口);b.字符串处理;c.java.lang包,java.util包等常用包;d.java异常处理。
2.Java高级部分
a.JavaI/O流;b.Java多线程技术;c.Java网络编程;d.JavaSwing。后两项可以了解即可,如果项目需要可以深入研究。
3.前端基本技能
a.HTML+CSS网页开发;b.JavaScript;c.Jquery;d.浏览器兼容性CSShack(了解)。
4.熟练使用JSP+Servlet进行开发。
5.MVC设计模式,原理,以及相关框架,如Struts。
6.SSH框架。
7.缓存技术session&cookie。
8.熟练使用一种以上Java开发工具。(Eclipse/MyEclipse/Jbuilder/Jcreator/IntelliJIEDA/NetBeans)
9.熟练使用XML。
10.Java设计模式。
11.Java反射机制。
12.了解或熟悉C,C++,NET。
13.熟悉JDK的配置,环境变量。
14.数据库oracle必学,其他最好了解一种以上(mysql,sqlserver,access)
oracle:视图,索引,存储过程,触发器,游标,常用函数。
15.数据库原理
事务的原理,锁机制,表连接,复杂查询语句(工作经验),性能调优,锁表以及解决方案。
16.JDBC,连接池。
17.Ajax,反向Ajax。
18.HTTP协议,request和response的原理,HTTPstatus(了解常用的),Https原理。
19.熟悉Linux基本命令,使用过Linux/Unix系统,可以编写shell脚本,可以在Linux上部署项目。
20.了解windows系统批处理脚本bat。
21.了解HTML5,最好学习过。
22.熟悉一种JS框架,如Prototype。
23.J2EE原理熟悉一种以上web容器
如Tomcat,JBoss,websphere,weblogic。
24.熟悉ant或maven。
25.熟悉一门脚本语言,如python,ruby。
26.了解php/asp。
27.了解ftp协议及原理。
28.熟练使用Junit测试,熟悉Mockito等测试工具。
29.熟悉javac,javadoc,native,native2ascii等常用命令。
30.熟悉常用的排序算法,如冒泡排序,快速排序等,最好自己研究过一些的算法。
31.了解Flex。
32.了解敏捷开发模式。
33.工作流workflow至少用过一种,如OSworkflow,了解原理。
34.使用过VPN了解其原理。
35.熟悉jstl表达式和el表达式。
36.熟悉webservice,WSDL,SOAP。
37.图片处理,如图片上传,预览,限制大小等。
38.版本控制工具,CVSVSSSVN。
39.JSON技术,JSON+AJAX。
40.分页技术,最好自己实现过不仅仅是用过要知道原理。
41.JavaMail。
42.Java读写txt,excel,JXL技术。
43.JVM原理,JVM内存管理,GC,Java堆栈池。
44.熟练使用下面的工具:
office办公软件,word,excel,ppt等
plsql,sqldevelop数据库开发工具
outlook大公司都用
ue编辑器
浏览器控制台,调试
SHH/PUTTY远程
45.UML建模工具RationalRose等。
46.使用log4j。
47.使用过开放Api如百度,腾讯街景,新浪微博等。
48.页面静态化技术(伪静态页面)。
49.报表技术,使用过报表制作工具,如水晶易表。
50.定时任务,如Springbatch,学会自定义batch任务(不适用第三方工具)。
51.了解uuid。
52.b/s和c/s架构。
53.正则表达式。
54.了解jndijms。
55.ERP。
56.UNICODE编码,乱码解决。
57.开源网络编辑器,如ckEditor。
58.二进制原理。
59.使用过,了解过开源论坛框架,如discuzz。
60.GWT,Closure框架。
61.了解大数据,云计算。
62.搜索引擎搜索技术。
63.软件工程,项目管理。