有人回答說這只能是大企業(yè)或者互聯(lián)網(wǎng)企業(yè)的工程師才能拿到检吆。也許是的种玛,小公司或者非互聯(lián)網(wǎng)企業(yè)拿兩萬的不太可能是碼農(nóng)了,應(yīng)該是已經(jīng)轉(zhuǎn)管理后才有可能致燥。還有區(qū)域問題登疗,這個(gè)不在我的考慮范圍內(nèi),因?yàn)槌吮鄙蠌V深杭嫌蚤,其他地方也很難辐益。
首先兩萬的月薪在BAT實(shí)在太普遍了,一般是高級(jí)工程師和資深工程師的職位脱吱。在阿里是p6~p7左右智政,在百度是t5左右,騰訊是t2-3左右箱蝠,京東是t3-1续捂,美團(tuán)是p6左右垦垂,其他的我不了解。這種級(jí)別是他們主要碼農(nóng)層級(jí)疾忍,加班多乔外,能解決大部分問題,但對(duì)系統(tǒng)的整體架構(gòu)能力和深入分析瓶頸的能力還需要培養(yǎng)一罩。
其次掌握的技能樹主要有三個(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ì)我說的都研究的比較深入行瑞,阿里p6我覺得是沒問題的,當(dāng)然這個(gè)還需要看你的架構(gòu)能力方面的面試表現(xiàn)了餐禁。
第三就是編程能力血久,編程思想,算法能力帮非,架構(gòu)能力的考量氧吐。首先2W程序員對(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ì)能快速搞定而沒有坑吧。