談談Java程序員進階的那些知識和方向

談談Java程序員進階的那些知識和方向git

記得前段時間看過一篇文章談到一種程序員叫野生程序員,戰鬥力極強,能夠搞定一切問題,可是一般看問題抓不到本質,或者說是google/baidu/stackoverflow/github的搬運工,其實我的以爲也沒什麼很差的,聞道有前後,術業有專攻,確實有工做崗位就須要這樣的職位。可是計算機行業的發展有其方向,工程師的職業發展也有其方向,隨着經驗的積累,可能這樣的人回頭再看看本身寫的代碼也會以爲不太好。那麼若是有一天這樣的人想換工做,或者應聘體質比較完整的公司,可能仍是須要潛心修煉的,下面筆者從兩個方面談談Java程序員進階的那些知識和方向,筆者不打算從基礎的東西講起,好比Java語言基礎,多線程,IO,若是有責方面的需求請參考領域內的那些神著,可是切記,最好看原版,遠離粗製濫造的翻譯版。程序員

1. Paradigmgithub

除了Java語言基礎,一般在每種語言中還有不少paradigm,這些paradigm每每是衡量老鳥和新手的地方,好比函數命名,異常處理,泛型等等,下面用異常處理的兩種類型來講明,筆者見過不少的Java程序員寫過不少年的代碼仍然分不清楚其中的區別。面試

Checked 和 unchecked exceptions數據庫

Unchecked exceptions
通常用於表示程序中的Bug, 好比函數調用中的非法參數異常,Java 創始人對Unchecked exceptions的解釋是Unchecked exceptions是一般不能夠恢復的運行時異常,換句話說,Unchecked exceptions 其實就是RuntimeException,經常使用的Unchecked exceptions有IllegalArgumentException, NullPointerException, 和 IllegalStateException,Unchecked exceptions一般不須要添加到函數簽名列表,而且在調用方不須要強制使用try..catch。網絡


Checked exceptions
一般用於表示函數執行過程當中的一些pre condition 沒有獲得知足,這些條件一般超出了函數的控制範圍,好比無效輸入,數據庫鏈接問題,網絡異常,文件丟失等問題,Checked exceptions的父類是Exception,Checked exceptions須要添加到函數簽名列表,而且在調用方須要強制使用try..catch來捕獲Checked exceptions。多線程

 

2. 效率和速度函數

記得有一次一個朋友的老闆和客戶談了一個項目,客戶想先看看效果真後作決定某些功能是否是他想要的,因而老闆問下面的一個工程師須要多久作出一個demo,這我的想了一天,說最快也要一個月,老闆以爲太慢,因而問另一個工程師,他給出的結論是demo只須要3天,結果3天的確實作完了,並且沒有加班。那麼爲何差這麼多呢,腳本語言,腳本語言能夠大幅的提高工做效率,特別是原型設計階段,下面以Groovy操做XML爲例加以說明。假設有不少這樣的XML數據須要處理,試想一下若是使用Java會是一番什麼樣的景象呢。google

 

<books>
  <book name="Effective C++">
    <author>Scott Meyers</author>
  </book>
  <book name="More Effective C++">
    <author>Scott Meyers</author>
  </book>
  <book name="C++ Primer">
    <author>Stanley B. Lippman</author>
  </book>
  <book name="Core Java">
    <author>Cay S. Horstmann</author>
  </book>
  <book name="Effective Java">
    <author>Joshua Bloch</author>
  </book>
</books>

 

下面演示一下如何經過Groovy Script駕馭上面那段XML, 輸出配對的書名和做者,而且過濾出全部Scott Meyers的著做,能夠看出,除了打印輸出,幾乎全部的需求只要一行代碼就能夠解決。spa

println"--solidmango design start--"  
languages = new XmlParser().parse(‘TestXML.xml')

println "Books and authors"

languages.each {
  println "<<${it.@name}>> authored by ${it.author[0].text()}"
}

def languagesByAuthor = { authorName ->
    languages.findAll { it.author[0].text() == authorName }.collect { 
      it.@name }.join(', ')
}

println"-------------------------"  
println "Languages by Scott Meyers:" + languagesByAuthor('Scott Meyers')

println"--solidmango design end--"  

輸出:

--solidmango design start--
Books and authors
<<Effective C++>> authored by Scott Meyers
<<More Effective C++>> authored by Scott Meyers
<<C++ Primer>> authored by Stanley B. Lippman
<<Core Java>> authored by Cay S. Horstmann
<<Effective Java>> authored by Joshua Bloch
-------------------------
Languages by Scott Meyers:Effective C++, More Effective C++
--solidmango design end--

 

小節

人老是要成長的,大公司在招聘的時候一般會考量一下面試者是否懂球,但願你們共同進步。

相關文章
相關標籤/搜索