怎樣才是一個基本水平的java程式設計師?
阿新 • • 發佈:2019-02-17
轉載:http://www.zhihu.com/question/51569919
作者:用心閣連結:http://www.zhihu.com/question/51569919/answer/126715265
來源:知乎
著作權歸作者所有,轉載請聯絡作者獲得授權。
- 熟悉常用的資料結構,包括陣列,連結串列,樹,雜湊表等。
- 熟悉結構化程式設計和麵向物件程式設計。
- 能夠閱讀UML設計圖,根據UML語義進行編碼
- 瞭解RDBMS和SQL的使用,包括DDL和DML,理解資料庫事務(ACID),鎖和死鎖。
- 熟悉Java語法特性,正確理解多執行緒,同步,臨界區,執行緒安全,異常,泛型等。
- 瞭解常用的Java庫,比如java.lang,
- 能夠看懂中英文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,和高可用的實現,如主備。雙活,負載均衡
- 瞭解容錯性,容災和故障轉移