Java开发工程师知识体系
Java开发全栈工程师,是指掌握多种技能,并能利用多种技能独立完成产品的人,也叫全端工程师(同时具备前端和后台能力),英文Full Stack developer。
那么想要成为一名合格的Java开发全栈工程师需要掌握哪些知识呢?
我个人总结觉得有以下这么几项:
java 基础
这就不用多说了吧,不用说精通,至少是常用的要熟练,不会说连jdk里面提供的类都没认全的(我确实有小部分不常用的没记住的T.T)
各种工具的使用
eclipse,SVN ,数据库管理工具等等
j2ee 框架
只要你使用java来做WEB应用,*少不了使用j2ee框架,目前流行的有
1)struts 2)spring 3) hibernate 4)ibatis 5)spirngMvc 等等的其他一些相似的框架,还有项目架构中经常会用到的缓存框架例如memcached ,ehcache,oscache等Java缓存框架
你需要掌握基本使用,部署,性能调优,配置
数据库基础
数据库一直是程序员需要重点掌握的一部分,当下主流的还是关系型数据库,产品有oracle mysql sqlserver db2,当然nosql型数据库也是未来方向,很多公司也已经在使用,如redis mongodb membase 等等
你需要掌握基本使用,和根据业务逻辑设计表,索引,视图,存储过程,函数等
应用服务器
凡是web应用首先都要部署到应用服务器上,常用的产品有tomcat,jboss, apache,resin 等等,还有用来提升性能的反向代理服务器如nginx等
你需要掌握如何部署项目,基本调试,调优
Linux系统
我们平常的编码通常在windows环境下,可是生产环境却通常是在Linux下,因为微软的东西,你懂得
所以我们需要掌握的是shell脚本,vi ,各种软件的安装,部署,其中shell脚本是*重要的(我个人觉得哈)
前端开发基础 html css js
如果你不是专攻服务器编程的话,你一定会接触前端开发,这其中html你需要掌握各种标签的使用,css首先你得看得懂是吧,js 目前来看属于一门独立的程序设计语言,也是前端中非常重要的一块,需要掌握其语法和一些常用框架如jquery,extjs等的使用(我之前的公司前端只负责切html和css,js啥的都是我们自己来)
设计模式
面试官*喜欢问的问题之一,这个被很多人吹得很神的东西我个人认为既不用奉为圭臬,也不用弃如敝履,这是一个思想的东西,也许写一辈子程序那23个设计模式也不一定全用的上,但是知道并且能够在适当的时候用他来解决问题就够了
数据结构 算法
记得国外哪位大神说过,编程=数据结构 + 算法 。虽然感觉平常的工作中用到的不多,但还是觉得这是一个内功的东西,不会这两样也许你也可以完成很多开发工作,但是如果你精通这两样,你的思想境界和思考问题的高度就不是一般人能比的了,如果想要在程序员这条路上继续走下去,不管以后是成为技术*还是技术性管理人才,都是必须要烂熟于心的。
上面几点是我觉得应该掌握的具体的技术,再讲些其他层面的吧
项目管理
这里的项目管理我指的是对项目架构的理解和软件开发标准化流程的一些东西,因为一个团队除了技术老大之外其他成员也还是需要深刻的达成一个这方面的共识,不然没法共事对吧
项目架构设计
这个就是需要大量实践和多看书来培养的了,如果你想成为架构师这是必须的,目前web方面的项目架构都是朝着高性能,高可用,大数据的方向,你需要掌握的不仅是上面提到的所有技能还有技术之外的产品,业务等更深更广的东西
上面仅仅是我工作中遇到和我认为应该掌握的,也是仅针对Java的web开发方向,如果你是android开发的话,还需要掌握android sdk中的方方面面。
如果将上述方面的技术都掌握到熟练的程度,胜任一个3年经验的开发岗位应该是没有问题了(我就没有全部掌握...T.T),当然 如果你希望你的技术水平不只是熟练的话,个人认为则需要把上述其中几项往深度方面修炼,然后有所成再往广度发展,
先在一个领域有足够的深度,再往广度发展会容易很多,职业道路也会好走很多。