更新時(shí)間:2019-08-16 14:20:40 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽4168次
近三年,其實(shí)都是在做一個(gè)項(xiàng)目,項(xiàng)目是一個(gè)大型的多節(jié)點(diǎn)部署的項(xiàng)目,做了好幾個(gè)版本,中間用到了很多技術(shù)和框架,也用了一些管理工具和敏捷實(shí)踐。我這里不是來(lái)說(shuō)項(xiàng)目的,因?yàn)樽罱戳艘恍┱衅感畔?,結(jié)合項(xiàng)目中用到的一些知識(shí)和管理措施,作為一個(gè)程序員,需要去實(shí)時(shí)評(píng)估下自己當(dāng)前的能力是否能跟上時(shí)代的步伐,所以,總結(jié)了下作為一個(gè)中高級(jí)Java開(kāi)發(fā)人員或架構(gòu)師,到底需要掌握哪些技能。
當(dāng)然,下述所列都是自己的看法,有興趣的參考下,沒(méi)興趣的,就當(dāng)看笑話了吧。

Java基礎(chǔ)
1、List和Set的區(qū)別
2、HashSet是如何保證不重復(fù)的
3、HashMap是線程安全的嗎,為什么不是線程安全的(最好畫(huà)圖說(shuō)明多線程環(huán)境下不安全)?
4、HashMap的擴(kuò)容過(guò)程
5、HashMap1.7與1.8的區(qū)別,說(shuō)明1.8做了哪些優(yōu)化,如何優(yōu)化的?
6、finalfinallyfinalize
7、強(qiáng)引用、軟引用、弱引用、虛引用
8、Java反射
9、Arrays.sort實(shí)現(xiàn)原理和Collection實(shí)現(xiàn)原理
10、LinkedHashMap的應(yīng)用
11、cloneable接口實(shí)現(xiàn)原理
12、異常分類(lèi)以及處理機(jī)制
13、wait和sleep的區(qū)別
14、數(shù)組在內(nèi)存中如何分配
Java并發(fā)
1、synchronized的實(shí)現(xiàn)原理以及鎖優(yōu)化?
2、volatile的實(shí)現(xiàn)原理?
3、Java的信號(hào)燈?
4、synchronized在靜態(tài)方法和普通方法的區(qū)別?
5、怎么實(shí)現(xiàn)所有線程在等待某個(gè)事件的發(fā)生才會(huì)去執(zhí)行?
6、CAS?CAS有什么缺陷,如何解決?
7、synchronized和lock有什么區(qū)別?
8、Hashtable是怎么加鎖的?
9、HashMap的并發(fā)問(wèn)題?
10、ConcurrenHashMap介紹?1.8中為什么要用紅黑樹(shù)?
11、AQS
12、如何檢測(cè)死鎖?怎么預(yù)防死鎖?
13、Java內(nèi)存模型?
14、如何保證多線程下i++結(jié)果正確?
15、線程池的種類(lèi),區(qū)別和使用場(chǎng)景?
16、分析線程池的實(shí)現(xiàn)原理和線程的調(diào)度過(guò)程?
17、線程池如何調(diào)優(yōu),最大數(shù)目如何確認(rèn)?
18、ThreadLocal原理,用的時(shí)候需要注意什么?
19、CountDownLatch和CyclicBarrier的用法,以及相互之間的差別?
20、LockSupport工具
21、Condition接口及其實(shí)現(xiàn)原理
22、Fork/Join框架的理解
23、分段鎖的原理,鎖力度減小的思考
24、八種阻塞隊(duì)列以及各個(gè)阻塞隊(duì)列的特性
1、BeanFactory和FactoryBean?
2、SpringIOC的理解,其初始化過(guò)程?
3、BeanFactory和ApplicationContext?
4、SpringBean的生命周期,如何被管理的?
5、SpringBean的加載過(guò)程是怎樣的?
6、如果要你實(shí)現(xiàn)SpringAOP,請(qǐng)問(wèn)怎么實(shí)現(xiàn)?
7、如果要你實(shí)現(xiàn)SpringIOC,你會(huì)注意哪些問(wèn)題?
8、Spring是如何管理事務(wù)的,事務(wù)管理機(jī)制?
9、Spring的不同事務(wù)傳播行為有哪些,干什么用的?
10、Spring中用到了那些設(shè)計(jì)模式?
11、SpringMVC的工作原理?
12、Spring循環(huán)注入的原理?
13、SpringAOP的理解,各個(gè)術(shù)語(yǔ),他們是怎么相互工作的?
14、Spring如何保證Controller并發(fā)的安全?
Netty
1、BIO、NIO和AIO
2、Netty的各大組件
3、Netty的線程模型
4、TCP粘包/拆包的原因及解決方法
5、了解哪幾種序列化協(xié)議?包括使用場(chǎng)景和如何去選擇
6、Netty的零拷貝實(shí)現(xiàn)
7、Netty的高性能表現(xiàn)在哪些方面
分布式相關(guān)
1、Dubbo的底層實(shí)現(xiàn)原理和機(jī)制
2、描述一個(gè)服務(wù)從發(fā)布到被消費(fèi)的詳細(xì)過(guò)程
3、分布式系統(tǒng)怎么做服務(wù)治理
4、接口的冪等性的概念
5、消息中間件如何解決消息丟失問(wèn)題
6、Dubbo的服務(wù)請(qǐng)求失敗怎么處理
7、重連機(jī)制會(huì)不會(huì)造成錯(cuò)誤
8、對(duì)分布式事務(wù)的理解
9、如何實(shí)現(xiàn)負(fù)載均衡,有哪些算法可以實(shí)現(xiàn)?
10、Zookeeper的用途,選舉的原理是什么?
11、數(shù)據(jù)的垂直拆分水平拆分。
12、zookeeper原理和適用場(chǎng)景
13、zookeeperwatch機(jī)制
14、redis/zk節(jié)點(diǎn)宕機(jī)如何處理
15、分布式集群下如何做到唯一序列號(hào)
16、如何做一個(gè)分布式鎖
17、用過(guò)哪些MQ,怎么用的,和其他mq比較有什么優(yōu)缺點(diǎn),MQ的連接是線程安全的嗎
18、MQ系統(tǒng)的數(shù)據(jù)如何保證不丟失
19、列舉出你能想到的數(shù)據(jù)庫(kù)分庫(kù)分表策略;分庫(kù)分表后,如何解決全表查詢(xún)的問(wèn)題
20、zookeeper的選舉策略
21、全局ID
數(shù)據(jù)庫(kù)
1、mysql分頁(yè)有什么優(yōu)化
2、悲觀鎖、樂(lè)觀鎖
3、組合索引,最左原則
4、mysql的表鎖、行鎖
5、mysql性能優(yōu)化
6、mysql的索引分類(lèi):B+,hash;什么情況用什么索引
7、事務(wù)的特性和隔離級(jí)別
緩存
1、Redis用過(guò)哪些數(shù)據(jù)數(shù)據(jù),以及Redis底層怎么實(shí)現(xiàn)
2、Redis緩存穿透,緩存雪崩
3、如何使用Redis來(lái)實(shí)現(xiàn)分布式鎖
4、Redis的并發(fā)競(jìng)爭(zhēng)問(wèn)題如何解決
5、Redis持久化的幾種方式,優(yōu)缺點(diǎn)是什么,怎么實(shí)現(xiàn)的
6、Redis的緩存失效策略
7、Redis集群,高可用,原理
8、Redis緩存分片
9、Redis的數(shù)據(jù)淘汰策略
JVM
1、詳細(xì)jvm內(nèi)存模型
2、講講什么情況下回出現(xiàn)內(nèi)存溢出,內(nèi)存泄漏?
3、說(shuō)說(shuō)Java線程棧
4、JVM年輕代到年老代的晉升過(guò)程的判斷條件是什么呢?
5、JVM出現(xiàn)fullGC很頻繁,怎么去線上排查問(wèn)題?
6、類(lèi)加載為什么要使用雙親委派模式,有沒(méi)有什么場(chǎng)景是打破了這個(gè)模式?
7、類(lèi)的實(shí)例化順序
8、JVM垃圾回收機(jī)制,何時(shí)觸發(fā)MinorGC等操作
9、JVM中一次完整的GC流程(從ygc到fgc)是怎樣的
10、各種回收器,各自?xún)?yōu)缺點(diǎn),重點(diǎn)CMS、G1
11、各種回收算法
12、OOM錯(cuò)誤,stackoverflow錯(cuò)誤,permgenspace錯(cuò)誤
1、具有1-5工作經(jīng)驗(yàn)的,面對(duì)目前流行的技術(shù)不知從何下手,需要突破技術(shù)瓶頸的。
2、在公司待久了,過(guò)得很安逸,但跳槽時(shí)面試碰壁。需要在短時(shí)間內(nèi)進(jìn)修、跳槽拿高薪的。
3、如果沒(méi)有工作經(jīng)驗(yàn),但基礎(chǔ)非常扎實(shí),對(duì)java工作機(jī)制,常用設(shè)計(jì)思想,常用java開(kāi)發(fā)框架掌握熟練的。
4、覺(jué)得自己很牛B,一般需求都能搞定,但是所學(xué)的知識(shí)點(diǎn)沒(méi)有系統(tǒng)化,很難在技術(shù)領(lǐng)域繼續(xù)突破的。
程序員的核心競(jìng)爭(zhēng)力是什么?
是學(xué)習(xí)能力。我們這個(gè)行業(yè)實(shí)在變化太快,“一招鮮,吃遍天”這種事情是不存在的,我們總會(huì)遇到從未接觸過(guò)的新挑戰(zhàn),怎么辦?學(xué)習(xí)。就如同一個(gè)優(yōu)秀的企業(yè),它最有價(jià)值的地方在于它有無(wú)限的發(fā)展前景。那么一個(gè)優(yōu)秀的程序員,最有價(jià)值的地方就在于擁有無(wú)限的潛力。要知道,公司雇傭一個(gè)人,并不是因?yàn)樗F(xiàn)在水平深淺,而是他能不能和公司一起成長(zhǎng),只看眼前的公司不會(huì)長(zhǎng)久,只看眼前的員工沒(méi)有未來(lái)。
程序員到底何去何從?
其實(shí)啰嗦了那么多,歸根結(jié)底就是持續(xù)提升自己,就這么簡(jiǎn)單。把焦慮、嫉妒、迷茫的時(shí)間拿來(lái)充實(shí)自己,到了35歲你會(huì)發(fā)現(xiàn),這真的是職業(yè)生涯的分岔路口,只不過(guò)我們的路通向美好。
合理利用自己每一分每一秒的時(shí)間來(lái)學(xué)習(xí)提升自己,不要再用"沒(méi)有時(shí)間“來(lái)掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來(lái)的自己一個(gè)交代!
給你分析一下這些技術(shù),給大家羅列一些技術(shù),看你有沒(méi)有學(xué)到這些技術(shù)。





相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)