有人說月入2萬這只能是大企業(yè)或者互聯(lián)網(wǎng)企業(yè)工程師才能拿到。也許是的,小公司或者非互聯(lián)網(wǎng)企業(yè)拿2萬的不太可能是碼農(nóng)了,應(yīng)該已經(jīng)轉(zhuǎn)管理。
還有人有程序員薪資不止2w,其實工資是跟面試表現(xiàn)有關(guān)的,也跟其他綜合水平有關(guān),比如你是985,Top10,或者研究生學(xué)歷,也或者懂點node,懂點大數(shù)據(jù)等等,或者表達能力強,擊中面試官痛點都會加分。如果你達到我說的水準,起薪就是2w,有其他的表現(xiàn)還會在這個基礎(chǔ)上加分。
但純Java方面待遇是比較吻合的。還有SSH真的不是我要黑,2w水平的面試幾乎很少問SSH的用法,要問也是問架構(gòu)和設(shè)計原理等。
例如Mybatis是如何管理Session和cache的。Spring里面有哪些你熟悉的設(shè)計模式,你怎么理解和應(yīng)用的,如何在應(yīng)用中透傳參數(shù)等。
想要拿到2萬的月薪,主要的是做好以下三方面。
1、個是基礎(chǔ)。
比如對集合類,并發(fā)包,IO/NIO,JVM,內(nèi)存模型,泛型,異常,反射,等有深入了解,是看過源碼了解底層的設(shè)計。比如一般面試都會問ConcurrentHashMap,CopyOnWrite,線程池,CAS,AQS,虛擬機優(yōu)化等知識點,因為這些對互聯(lián)網(wǎng)的企業(yè)是重要的。
而且一般人這關(guān)都過不了,還發(fā)鬧騷說這些沒什么用,為什么要面試。舉一例子,在使用線程池時,因為使用了無界隊列,在遠程服務(wù)異常情況下導(dǎo)致內(nèi)層飆升,怎么去解決?你要是連線程池都不清楚,你怎么去玩?
再舉一例,由于對ThreadLocal理解出錯,使用它做線程安全的控制,導(dǎo)致沒能實現(xiàn)真的線程安全。還有遇到內(nèi)存泄露怎么排插問題,怎么優(yōu)化系統(tǒng)性能。所以作為一個拿兩萬的JAVA程序員這點基礎(chǔ)是要有的。
2、第二你需要有全面的互聯(lián)網(wǎng)技術(shù)相關(guān)知識。
從底層說起,你起碼得深入了解MySQL,Redis,Nginx,Tomcat,Rpc,JMS等方面的知識。
首先對于MySQL,你要知道常見的參數(shù)設(shè)置,存儲引擎怎么去選擇,還需要了解常見的索引引擎,知道怎么去選擇。知道怎么去設(shè)計表,怎么優(yōu)化SQL,怎么根據(jù)執(zhí)行計劃去調(diào)優(yōu)。
的你需要去做分庫分表的設(shè)計和優(yōu)化,一般互聯(lián)網(wǎng)企業(yè)的數(shù)據(jù)庫都是讀寫分離,還會垂直與水平拆分,所以這個也有經(jīng)驗的成分在里面。然后Redis幾乎是必須的技能,而Nginx和Tomcat幾乎都是Java互聯(lián)網(wǎng)方面必配。
至于Rpc相關(guān)的就多的去,必須各種網(wǎng)絡(luò)協(xié)議,序列化技術(shù),SOA等等,你要有一個深入的理解。現(xiàn)在應(yīng)用比較廣的rpc框架,在國內(nèi)就是dubbo了,開源的還有spring cloud相關(guān)技術(shù)棧,可以自行搜索。
至于JMS相關(guān)的起碼得了解原理吧,一般情況下不是專門開發(fā)中間件系統(tǒng)和支撐系統(tǒng)的不需要了解太多細節(jié),國內(nèi)企業(yè)常用的主要是ActiveMQ和Kafka。你能對我說的都有研究,阿里P7都不是太大問題的。
3、第三就是編程能力,編程思想,算法能力,架構(gòu)能力。
首先2W程序員對算法的要求還是比較低,再也多紅黑樹吧,但是排序和查詢的基本算法得會。編程思想是必須的,問你個AOP和IOC你起碼的清清楚楚,設(shè)計模式不說每種都用過,但也能了解個幾種。
編程能力這個我覺得不好去評價,但是拿一個2000W用戶根據(jù)姓名年齡排序這種題目也能信手拈來。就是架構(gòu)能力,這種不是說要你設(shè)計個多牛逼多高并發(fā)的系統(tǒng),起碼讓你做一個系統(tǒng),得有一個明確的思路和方向。
這以上就是我說得2w水準,如果你運氣好,面試表現(xiàn)好,3w+也有可能哦。
說來說去,重要的是技術(shù)能力的問題,國內(nèi)互聯(lián)網(wǎng)企業(yè)并不是吝嗇給高薪,而是你的技術(shù)值不值得給高薪。來粵嵌IT培訓(xùn)班,讓我們幫你實現(xiàn)月薪2萬。