Java開(kāi)發(fā)工程師知識體系
Java開(kāi)發(fā)全棧工程師,是指掌握多種技能,并能利用多種技能獨立完成產(chǎn)品的人,也叫全端工程師(同時(shí)具備前端和后臺能力),英文Full Stack developer。
那么想要成為一名合格的Java開(kāi)發(fā)全棧工程師需要掌握哪些知識呢?
我個(gè)人總結覺(jué)得有以下這么幾項:
java 基礎
這就不用多說(shuō)了吧,不用說(shuō)精通,至少是常用的要熟練,不會(huì )說(shuō)連jdk里面提供的類(lèi)都沒(méi)認全的(我確實(shí)有小部分不常用的沒(méi)記住的T.T)
各種工具的使用
eclipse,SVN ,數據庫管理工具等等
j2ee 框架
只要你使用java來(lái)做WEB應用,*少不了使用j2ee框架,目前流行的有
1)struts 2)spring 3) hibernate 4)ibatis 5)spirngMvc 等等的其他一些相似的框架,還有項目架構中經(jīng)常會(huì )用到的緩存框架例如memcached ,ehcache,oscache等Java緩存框架
你需要掌握基本使用,部署,性能調優(yōu),配置
數據庫基礎
數據庫一直是程序員需要重點(diǎn)掌握的一部分,當下主流的還是關(guān)系型數據庫,產(chǎn)品有oracle mysql sqlserver db2,當然nosql型數據庫也是未來(lái)方向,很多公司也已經(jīng)在使用,如redis mongodb membase 等等
你需要掌握基本使用,和根據業(yè)務(wù)邏輯設計表,索引,視圖,存儲過(guò)程,函數等
應用服務(wù)器
凡是web應用首先都要部署到應用服務(wù)器上,常用的產(chǎn)品有tomcat,jboss, apache,resin 等等,還有用來(lái)提升性能的反向代理服務(wù)器如nginx等
你需要掌握如何部署項目,基本調試,調優(yōu)
Linux系統
我們平常的編碼通常在windows環(huán)境下,可是生產(chǎn)環(huán)境卻通常是在Linux下,因為微軟的東西,你懂得
所以我們需要掌握的是shell腳本,vi ,各種軟件的安裝,部署,其中shell腳本是*重要的(我個(gè)人覺(jué)得哈)
前端開(kāi)發(fā)基礎 html css js
如果你不是專(zhuān)攻服務(wù)器編程的話(huà),你一定會(huì )接觸前端開(kāi)發(fā),這其中html你需要掌握各種標簽的使用,css首先你得看得懂是吧,js 目前來(lái)看屬于一門(mén)獨立的程序設計語(yǔ)言,也是前端中非常重要的一塊,需要掌握其語(yǔ)法和一些常用框架如jquery,extjs等的使用(我之前的公司前端只負責切html和css,js啥的都是我們自己來(lái))
設計模式
面試官*喜歡問(wèn)的問(wèn)題之一,這個(gè)被很多人吹得很神的東西我個(gè)人認為既不用奉為圭臬,也不用棄如敝履,這是一個(gè)思想的東西,也許寫(xiě)一輩子程序那23個(gè)設計模式也不一定全用的上,但是知道并且能夠在適當的時(shí)候用他來(lái)解決問(wèn)題就夠了
數據結構 算法
記得國外哪位大神說(shuō)過(guò),編程=數據結構 + 算法 。雖然感覺(jué)平常的工作中用到的不多,但還是覺(jué)得這是一個(gè)內功的東西,不會(huì )這兩樣也許你也可以完成很多開(kāi)發(fā)工作,但是如果你精通這兩樣,你的思想境界和思考問(wèn)題的高度就不是一般人能比的了,如果想要在程序員這條路上繼續走下去,不管以后是成為技術(shù)*還是技術(shù)性管理人才,都是必須要爛熟于心的。
上面幾點(diǎn)是我覺(jué)得應該掌握的具體的技術(shù),再講些其他層面的吧
項目管理
這里的項目管理我指的是對項目架構的理解和軟件開(kāi)發(fā)標準化流程的一些東西,因為一個(gè)團隊除了技術(shù)老大之外其他成員也還是需要深刻的達成一個(gè)這方面的共識,不然沒(méi)法共事對吧
項目架構設計
這個(gè)就是需要大量實(shí)踐和多看書(shū)來(lái)培養的了,如果你想成為架構師這是必須的,目前web方面的項目架構都是朝著(zhù)高性能,高可用,大數據的方向,你需要掌握的不僅是上面提到的所有技能還有技術(shù)之外的產(chǎn)品,業(yè)務(wù)等更深更廣的東西
上面僅僅是我工作中遇到和我認為應該掌握的,也是僅針對Java的web開(kāi)發(fā)方向,如果你是android開(kāi)發(fā)的話(huà),還需要掌握android sdk中的方方面面。
如果將上述方面的技術(shù)都掌握到熟練的程度,勝任一個(gè)3年經(jīng)驗的開(kāi)發(fā)崗位應該是沒(méi)有問(wèn)題了(我就沒(méi)有全部掌握...T.T),當然 如果你希望你的技術(shù)水平不只是熟練的話(huà),個(gè)人認為則需要把上述其中幾項往深度方面修煉,然后有所成再往廣度發(fā)展,
先在一個(gè)領(lǐng)域有足夠的深度,再往廣度發(fā)展會(huì )容易很多,職業(yè)道路也會(huì )好走很多。