知乎上看到一個問題《怎樣才是一個基本水平的java程序員》夭织,下面是贊同最多的答主的回答,感覺可能對于基本水平有點偏高吠撮,但是也應(yīng)該是個熟練掌握Java的程序員應(yīng)該達到的要求尊惰。轉(zhuǎn)載紀念,以后可以作為面試的標準泥兰。
- 熟悉常用的數(shù)據(jù)結(jié)構(gòu)弄屡,包括數(shù)組,鏈表逾条,樹琢岩,哈希表等。
- 熟悉結(jié)構(gòu)化編程和面向?qū)ο缶幊獭?/li>
- 能夠閱讀UML設(shè)計圖师脂,根據(jù)UML語義進行編碼
- 了解RDBMS和SQL的使用担孔,包括DDL和DML,理解數(shù)據(jù)庫事務(wù)(ACID)吃警,鎖和死鎖糕篇。
- 熟悉Java語法特性,正確理解多線程酌心,同步拌消,臨界區(qū),線程安全安券,異常墩崩,泛型等。
- 了解常用的Java庫侯勉,比如java.lang鹦筹,java.io,java.net址貌,java.util铐拐,java.sql徘键,javax.xml,
- 能夠看懂中英文javadoc遍蟋,快速上手新的類庫和框架吹害。
- 熟悉Java Web編程,如Servlet虚青,Spring它呀,以及ORM框架。
- 熟練使用Java IDE如eclipse棒厘,尤其是能夠調(diào)試錯誤钟些。
- 會使用構(gòu)建工具如Ant,Maven構(gòu)建項目绊谭。
- 會使用JUnit開發(fā)單元測試用例,能夠使用代碼覆蓋率工具如EMMA檢查測試的覆蓋率
- 如果能夠使用代碼調(diào)優(yōu)工具提升代碼性能更好
- 如果能夠使用靜態(tài)檢查工具如PMD檢查代碼中的問題會更好
- 如果能夠了解JVM的機制汪拥,如垃圾回收达传,類加載會更好
怎樣才是一個進階水平的Java程序員呢?
- 掌握面向?qū)ο蟮男枨蠓治龊驮O(shè)計
- 理解SOLID原則迫筑,理解常用設(shè)計模式宪赶,熟練掌握重構(gòu)
- 理解面向服務(wù)的架構(gòu)
- 理解Linux操作系統(tǒng)的一些概念,比如內(nèi)核空間脯燃,用戶空間搂妻,系統(tǒng)調(diào)用,命名管道辕棚,Unix Domain Socket欲主,
- 熟悉Linux下命令行工具。
- 深入理解進程逝嚎,線程扁瓢。
- 了解Java內(nèi)存模型
- 了解Java的并發(fā)包,如鎖补君,讀寫鎖引几,Barrier,Executer和Future
- 了解Java 8的Lambda表達式和Streaming API
- 理解TCP/IP協(xié)議族
- 理解HTTP協(xié)議和REST API
- 理解多路復(fù)用和非阻塞IO
- 熟悉Socket編程挽铁,能夠使用網(wǎng)絡(luò)框架如netty開發(fā)服務(wù)端程序
- 掌握RPC框架的使用伟桅,比如RMI,Thrift叽掘,Dubbo
- 掌握消息隊列的使用楣铁,如JMS,ActiveMQ等
- 掌握分布式緩存如memcache够掠,Redis的使用
- 了解代理和負載均衡如Nginx的使用
- 熟悉分布式KV存儲如zookeeper民褂,etcd等,理解選主和分布式鎖
- 會使用Mock框架進行單元測試
- 了解性能方面的知識,如吞吐量和時延赊堪。
- 能夠進行執(zhí)行性能測試面殖,收集性能數(shù)據(jù)并進行分析。
- 了解安全性相關(guān)的知識哭廉,比如私密性(加密和解密)脊僚,完整性(消息認證),不可否認性(簽名和驗簽)遵绰,身份認證辽幌,授權(quán),傳輸層安全(如SSL/TLS)椿访,數(shù)字證書和PKI體系
- 了解可用性相關(guān)的知識(乌企,如可用性指標,如MTBF成玫,MTTR加酵,和高可用的實現(xiàn),如主備哭当。雙活猪腕,負載均衡
- 了解容錯性,容災(zāi)和故障轉(zhuǎn)移
歡迎來我的個人博客逛逛: https://blog.52xtg.com