1. 程式人生 > >個人總結的一箇中高階Java開發工程師或架構師需要掌握的一些技能

個人總結的一箇中高階Java開發工程師或架構師需要掌握的一些技能

近三年,其實都是在做一個專案,專案是一個大型的多節點部署的專案,做了好幾個版本,中間用到了很多技術和框架,

也用了一些管理工具和敏捷實踐。我這裡不是來說專案的,因為最近看了一些招聘資訊,結合專案中用到的一些知識和

管理措施,作為一個程式設計師,需要去實時評估下自己當前的能力是否能跟上時代的步伐,所以,總結了下作為一箇中高

級Java開發人員或架構師,到底需要掌握哪些技能。

當然,下述所列都是自己的看法,有興趣的參考下,沒興趣的,就當看笑話了吧。

Java基礎

1、List 和 Set 的區別

2、HashSet 是如何保證不重複的

3、HashMap 是執行緒安全的嗎,為什麼不是執行緒安全的(最好畫圖說明多執行緒環境下不安全)?

4、HashMap 的擴容過程

5、HashMap 1.7 與 1.8 的 區別,說明 1.8 做了哪些優化,如何優化的?

6、final finally finalize

7、強引用 、軟引用、 弱引用、虛引用

8、Java反射

9、Arrays.sort 實現原理和 Collection 實現原理

10、LinkedHashMap的應用

11、cloneable介面實現原理

12、異常分類以及處理機制

13、wait和sleep的區別

14、陣列在記憶體中如何分配

Java 併發

1、synchronized 的實現原理以及鎖優化?

2、volatile 的實現原理?

3、Java 的訊號燈?

4、synchronized 在靜態方法和普通方法的區別?

5、怎麼實現所有執行緒在等待某個事件的發生才會去執行?

6、CAS?CAS 有什麼缺陷,如何解決?

7、synchronized 和 lock 有什麼區別?

8、Hashtable 是怎麼加鎖的 ?

9、HashMap 的併發問題?

10、ConcurrenHashMap 介紹?1.8 中為什麼要用紅黑樹?

11、AQS

12、如何檢測死鎖?怎麼預防死鎖?

13、Java 記憶體模型?

14、如何保證多執行緒下 i++ 結果正確?

15、執行緒池的種類,區別和使用場景?

16、分析執行緒池的實現原理和執行緒的排程過程?

17、執行緒池如何調優,最大數目如何確認?

18、ThreadLocal原理,用的時候需要注意什麼?

19、CountDownLatch 和 CyclicBarrier 的用法,以及相互之間的差別?

20、LockSupport工具

21、Condition介面及其實現原理

22、Fork/Join框架的理解

23、分段鎖的原理,鎖力度減小的思考

24、八種阻塞佇列以及各個阻塞佇列的特性

Spring

1、BeanFactory 和 FactoryBean?

2、Spring IOC 的理解,其初始化過程?

3、BeanFactory 和 ApplicationContext?

4、Spring Bean 的生命週期,如何被管理的?

5、Spring Bean 的載入過程是怎樣的?

6、如果要你實現Spring AOP,請問怎麼實現?

7、如果要你實現Spring IOC,你會注意哪些問題?

8、Spring 是如何管理事務的,事務管理機制?

9、Spring 的不同事務傳播行為有哪些,幹什麼用的?

10、Spring 中用到了那些設計模式?

11、Spring MVC 的工作原理?

12、Spring 迴圈注入的原理?

13、Spring AOP的理解,各個術語,他們是怎麼相互工作的?

14、Spring 如何保證 Controller 併發的安全?

Netty

1、BIO、NIO和AIO

2、Netty 的各大元件

3、Netty的執行緒模型

4、TCP 粘包/拆包的原因及解決方法

5、瞭解哪幾種序列化協議?包括使用場景和如何去選擇

6、Netty的零拷貝實現

7、Netty的高效能表現在哪些方面

分散式相關

1、Dubbo的底層實現原理和機制

2、描述一個服務從釋出到被消費的詳細過程

3、分散式系統怎麼做服務治理

4、介面的冪等性的概念

5、訊息中介軟體如何解決訊息丟失問題

6、Dubbo的服務請求失敗怎麼處理

7、重連機制會不會造成錯誤

8、對分散式事務的理解

9、如何實現負載均衡,有哪些演算法可以實現?

10、Zookeeper的用途,選舉的原理是什麼?

11、資料的垂直拆分水平拆分。

12、zookeeper原理和適用場景

13、zookeeper watch機制

14、redis/zk節點宕機如何處理

15、分散式叢集下如何做到唯一序列號

16、如何做一個分散式鎖

17、用過哪些MQ,怎麼用的,和其他mq比較有什麼優缺點,MQ的連線是執行緒安全的嗎

18、MQ系統的資料如何保證不丟失

19、列舉出你能想到的資料庫分庫分表策略;分庫分表後,如何解決全表查詢的問題

20、zookeeper的選舉策略

21、全域性ID

資料庫

1、mysql分頁有什麼優化

2、悲觀鎖、樂觀鎖

3、組合索引,最左原則

4、mysql 的表鎖、行鎖

5、mysql 效能優化

6、mysql的索引分類:B+,hash;什麼情況用什麼索引

7、事務的特性和隔離級別

快取

1、Redis用過哪些資料資料,以及Redis底層怎麼實現

2、Redis快取穿透,快取雪崩

3、如何使用Redis來實現分散式鎖

4、Redis的併發競爭問題如何解決

5、Redis持久化的幾種方式,優缺點是什麼,怎麼實現的

6、Redis的快取失效策略

7、Redis叢集,高可用,原理

8、Redis快取分片

9、Redis的資料淘汰策略

JVM

1、詳細jvm記憶體模型

2、講講什麼情況下回出現記憶體溢位,記憶體洩漏?

3、說說Java執行緒棧

4、JVM 年輕代到年老代的晉升過程的判斷條件是什麼呢?

5、JVM 出現 fullGC 很頻繁,怎麼去線上排查問題?

6、類載入為什麼要使用雙親委派模式,有沒有什麼場景是打破了這個模式?

7、類的例項化順序

8、JVM垃圾回收機制,何時觸發MinorGC等操作

9、JVM 中一次完整的 GC 流程(從 ygc 到 fgc)是怎樣的

10、各種回收器,各自優缺點,重點CMS、G1

11、各種回收演算法

12、OOM錯誤,stackoverflow錯誤,permgen space錯誤

1、具有1-5工作經驗的,面對目前流行的技術不知從何下手,

需要突破技術瓶頸的。2、在公司待久了,過得很安逸,

但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的。

3、如果沒有工作經驗,但基礎非常紮實,對java工作機制,

常用設計思想,常用java開發框架掌握熟練的。

4、覺得自己很牛B,一般需求都能搞定。

但是所學的知識點沒有系統化,很難在技術領域繼續突破的。

5. 群號:860113481高階架構群備註好資訊!

程式設計師的核心競爭力是什麼?

是學習能力。我們這個行業實在變化太快,“一招鮮,吃遍天”這種事情是不存在的,我們總會遇到從未接觸過的新挑戰,怎麼辦?學習。就如同一個優秀的企業,它最有價值的地方在於它有無限的發展前景。那麼一個優秀的程式設計師,最有價值的地方就在於擁有無限的潛力。要知道,公司僱傭一個人,並不是因為他現在水平深淺,而是他能不能和公司一起成長,只看眼前的公司不會長久,只看眼前的員工沒有未來。

程式設計師到底何去何從?

其實囉嗦了那麼多,歸根結底就是持續提升自己,就這麼簡單。把焦慮、嫉妒、迷茫的時間拿來充實自己,到了35歲你會發現,這真的是職業生涯的分岔路口,只不過我們的路通向美好。

合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!

給你分析一下這些技術,給大家羅列一些技術,看你有沒有學到這些技術。

效能調優

應用框架原始碼解讀

分散式架構

微服務專題

團隊協作開發

B2C商城專案實戰

免費獲取架構視訊


歡迎工作一到五年的Java工程師朋友們加入Java填坑之路:860113481
群內提供免費的Java架構學習資料(裡面有高可用、高併發、高效能及分散式、Jvm效能調優、Spring原始碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!