金三銀四面試已經(jīng)結(jié)束了,最近跟朋友在一起聚會(huì)的時(shí)候提了一個(gè)問題谆棺,說Java程序員月薪如何達(dá)到30K栽燕,技術(shù)水平需要達(dá)到什么程度罕袋?
有人回答說這只能是大企業(yè)或者互聯(lián)網(wǎng)企業(yè)工程師才能拿到。也許是的碍岔,小公司或者非互聯(lián)網(wǎng)企業(yè)拿到30K的不太可能是碼農(nóng)了浴讯,應(yīng)該已經(jīng)轉(zhuǎn)管理。還有區(qū)域問題蔼啦,這個(gè)是不在我的考慮范圍內(nèi)的榆纽,因?yàn)槌吮鄙蠌V深杭,其他地方也很難得到捏肢。
首先:30K對(duì)應(yīng)的層級(jí)分別是什么奈籽?
30K的月薪在BAT等一線大廠實(shí)在太普遍了,一般是高級(jí)工程師和資深工程師的職位鸵赫,在阿里是p6~p7左右衣屏,在百度是t5左右,騰訊是t2-3左右辩棒,在京東是t3-1狼忱,美團(tuán)是p6左右,其他的我不了解一睁。
其次:掌握的技能樹主要包含哪幾個(gè)方面:
第一個(gè)是基礎(chǔ)钻弄。比如對(duì)集合類,并發(fā)包卖局,IO/NIO斧蜕,JVM,內(nèi)存模型砚偶,泛型,異常洒闸,反射染坯,等有深入了解,最好是看過源碼了解底層的設(shè)計(jì)丘逸。比如一般面試都會(huì)問ConcurrentHashMap单鹿,CopyOnWrite,線程池深纲,CAS仲锄,AQS,虛擬機(jī)優(yōu)化等知識(shí)點(diǎn)湃鹊,因?yàn)檫@些對(duì)互聯(lián)網(wǎng)的企業(yè)是絕對(duì)重要的儒喊。而且一般人這關(guān)都過不了,還發(fā)鬧騷說這些沒什么用币呵,為什么要面試怀愧。舉一例子,在使用線程池時(shí)候,因?yàn)槭褂昧藷o界隊(duì)列芯义,在遠(yuǎn)程服務(wù)異常情況下導(dǎo)致內(nèi)層飆升哈垢,怎么去解決?你要是連線程池都不清楚扛拨,你怎么去玩耘分?再舉一例,由于對(duì)ThreadLocal理解出錯(cuò)绑警,使用它做線程安全的控制陶贼,導(dǎo)致沒能實(shí)現(xiàn)真的線程安全。所以作為一個(gè)拿三萬的JAVA程序員這點(diǎn)基礎(chǔ)是要有的待秃。
第二你需要有全面的互聯(lián)網(wǎng)主流技術(shù)相關(guān)知識(shí)拜秧。從底層說起,你起碼得深入了解mysql章郁,redis枉氮,mongodb,nginx暖庄,tomcat聊替,rpc,jms等方面的知識(shí)培廓。你要問需要了解到什么程度惹悄,我可以給你說個(gè)大慨。首先對(duì)于MySQL肩钠,你要知道常見的參數(shù)設(shè)置泣港,存儲(chǔ)引擎怎么去選擇,還需要了解常見的索引引擎价匠,知道怎么去選擇当纱。知道怎么去設(shè)計(jì)表,怎么優(yōu)化sql踩窖,怎么根據(jù)執(zhí)行計(jì)劃去調(diào)優(yōu)坡氯。
高級(jí)的你需要去做分庫分表的設(shè)計(jì)和優(yōu)化,一般互聯(lián)網(wǎng)企業(yè)的數(shù)據(jù)庫都是讀寫分離洋腮,還會(huì)垂直與水平拆分箫柳,所以這個(gè)也有經(jīng)驗(yàn)的成分在里面。然后redis啥供,mongodb都是需要了解原理悯恍,需要會(huì)調(diào)整參數(shù)的,而nginx和tomcat幾乎都是Java互聯(lián)網(wǎng)方面必配滤灯,其實(shí)很阿里的技術(shù)棧選擇有點(diǎn)關(guān)系坪稽。至于rpc相關(guān)的就多的去曼玩,必須各種網(wǎng)絡(luò)協(xié)議,序列化技術(shù)窒百,SOA等等你要有一個(gè)深入的理解黍判。
現(xiàn)在應(yīng)用比較廣的rpc框架,在國內(nèi)就是dubbo了篙梢,可以自行搜索顷帖。至于jms相關(guān)的起碼得了解原理吧,一般情況下不是專門開發(fā)中間件系統(tǒng)和支撐系統(tǒng)的不需要了解太多細(xì)節(jié)渤滞,國內(nèi)企業(yè)常用的主要是activeMQ和kafka贬墩。你能對(duì)我說的都研究的比較深入,阿里p7都不是太大問題的妄呕,當(dāng)然這個(gè)還需要看你的架構(gòu)能力方面的面試表現(xiàn)了陶舞。
第三就是編程能力,編程思想绪励,算法能力肿孵,架構(gòu)能力。首先30K程序員對(duì)算法的要求我覺得還是比較低疏魏,再高級(jí)也最多紅黑樹吧停做,但是排序和查詢的基本算法得會(huì)。編程思想是必須的大莫,問你個(gè)AOP和IOC你起碼的清清楚楚蛉腌,設(shè)計(jì)模式不說每種都用過,但也能了解個(gè)幾種吧只厘。編程能力這個(gè)我覺得不好去評(píng)價(jià)烙丛,但是拿一個(gè)2000W用戶根據(jù)姓名年齡排序這種題目也能信手拈來。最后就是架構(gòu)能力懈凹,這種不是說要你設(shè)計(jì)個(gè)多牛逼多高并發(fā)的系統(tǒng)蜀变,起碼讓你做一個(gè)秒殺系統(tǒng),防重請(qǐng)求的設(shè)計(jì)能快速搞定而沒有坑吧介评。
再往上基本就是架構(gòu)師了,如果你想要做到架構(gòu)師這個(gè)級(jí)別爬舰,那么這樣的一份Java架構(gòu)進(jìn)階路線圖譜肯定是必不可少的们陆,里面的內(nèi)容基本概況了目前互聯(lián)網(wǎng)的主流技術(shù),有用的話可以長按圖片保存情屹。
Java進(jìn)階路線圖:
以上是自己收集總結(jié)的Java架構(gòu)技術(shù)圖譜坪仇,自己因?yàn)楸容^喜歡技術(shù),所以收集了一些Java高并發(fā)垃你、分布式椅文、JVM喂很、spring、源碼分析和kafka等架構(gòu)技術(shù)資料整理成了一個(gè)文檔皆刺,如果你也對(duì)技術(shù)感興趣可以來我的java高級(jí)架構(gòu)進(jìn)階:736-351-661免費(fèi)獲壬倮薄!