熟練Java的程式設計師應該掌握的知識技能

weixin_33716557發表於2016-10-22

知乎上看到一個問題《怎樣才是一個基本水平的java程式設計師》,下面是贊同最多的答主的回答,感覺可能對於基本水平有點偏高,但是也應該是個熟練掌握Java的程式設計師應該達到的要求。轉載紀念,以後可以作為面試的標準。

  • 熟悉常用的資料結構,包括陣列,連結串列,樹,雜湊表等。
  • 熟悉結構化程式設計和麵向物件程式設計。
  • 能夠閱讀UML設計圖,根據UML語義進行編碼
  • 瞭解RDBMS和SQL的使用,包括DDL和DML,理解資料庫事務(ACID),鎖和死鎖。
  • 熟悉Java語法特性,正確理解多執行緒,同步,臨界區,執行緒安全,異常,泛型等。
  • 瞭解常用的Java庫,比如java.lang,java.io,java.net,java.util,java.sql,javax.xml,
  • 能夠看懂中英文javadoc,快速上手新的類庫和框架。
  • 熟悉Java Web程式設計,如Servlet,Spring,以及ORM框架。
  • 熟練使用Java IDE如eclipse,尤其是能夠除錯錯誤。
  • 會使用構建工具如Ant,Maven構建專案。
  • 會使用JUnit開發單元測試用例,能夠使用程式碼覆蓋率工具如EMMA檢查測試的覆蓋率
  • 如果能夠使用程式碼調優工具提升程式碼效能更好
  • 如果能夠使用靜態檢查工具如PMD檢查程式碼中的問題會更好
  • 如果能夠了解JVM的機制,如垃圾回收,類載入會更好

怎樣才是一個進階水平的Java程式設計師呢?

  • 掌握物件導向的需求分析和設計
  • 理解SOLID原則,理解常用設計模式,熟練掌握重構
  • 理解面向服務的架構
  • 理解Linux作業系統的一些概念,比如核心空間,使用者空間,系統呼叫,命名管道,Unix Domain Socket,
  • 熟悉Linux下命令列工具。
  • 深入理解程式,執行緒。
  • 瞭解Java記憶體模型
  • 瞭解Java的併發包,如鎖,讀寫鎖,Barrier,Executer和Future
  • 瞭解Java 8的Lambda表示式和Streaming API
  • 理解TCP/IP協議族
  • 理解HTTP協議和REST API
  • 理解多路複用和非阻塞IO
  • 熟悉Socket程式設計,能夠使用網路框架如netty開發服務端程式
  • 掌握RPC框架的使用,比如RMI,Thrift,Dubbo
  • 掌握訊息佇列的使用,如JMS,ActiveMQ等
  • 掌握分散式快取如memcache,Redis的使用
  • 瞭解代理和負載均衡如Nginx的使用
  • 熟悉分散式KV儲存如zookeeper,etcd等,理解選主和分散式鎖
  • 會使用Mock框架進行單元測試
  • 瞭解效能方面的知識,如吞吐量和時延。
  • 能夠進行執行效能測試,收集效能資料並進行分析。
  • 瞭解安全性相關的知識,比如私密性(加密和解密),完整性(訊息認證),不可否認性(簽名和驗籤),身份認證,授權,傳輸層安全(如SSL/TLS),數字證照和PKI體系
  • 瞭解可用性相關的知識(,如可用性指標,如MTBF,MTTR,和高可用的實現,如主備。雙活,負載均衡
  • 瞭解容錯性,容災和故障轉移

以上內容轉載自知乎


歡迎來我的個人部落格逛逛: https://blog.52xtg.com

相關文章