有人說這只能是大企業(yè)或者互聯(lián)網(wǎng)企業(yè)工程師才能拿到。是的,小公司或者非互聯(lián)網(wǎng)企業(yè)三萬的不太可能是碼農(nóng)了。還有區(qū)域問題,這個不在我的考慮范圍內(nèi),因為除了北上廣深杭,其他地方也很難達。
還有人提到其實工資是跟面試表現(xiàn)有關(guān)的,也跟其他綜合水平有關(guān),比如你是985,TOP10,或者研究生學歷,也或者懂點節(jié)點,懂點大數(shù)據(jù)等等,或者表達能力強,擊中面試官痛點都會加分。有其他優(yōu)秀的表現(xiàn)還會在這個基礎(chǔ)上加分。但純JAVA方面待遇是比較吻合的。還有SSH真的不是我要黑,3W水平的面試幾乎很少問SSH的知識,要問也是問架構(gòu)層次的還有設計模式的。例如MyBatis的是如何管理會議和高速緩存的.spring里面有哪些你熟悉的設計模式,你怎么理解和應用的。
高薪在BAT實在太普遍了,一般是高級工程師和資深工程師的職位。在阿里是P6?P7左右,在百度是T5左右,騰訊是T2-3左右,京東是T3-1,美團是P6左右,其他的我不了解。這種級別是他們主要碼農(nóng)層級,加班多,能解決大部分問題,但對系統(tǒng)的整體架構(gòu)能力和深入分析瓶頸的能力還需要培養(yǎng)。
以阿里巴巴招聘標準舉例
分析
1.Java基礎(chǔ)扎實,理解IO,多線程,集合等基礎(chǔ)框架可以理解為熟悉J2SE,J2EE;對JVM原理有一定的了解,可以理解為對什么是JVM,JVM內(nèi)存模型以及JVM運行時數(shù)據(jù)區(qū)熟練掌握,為什么JVM要劃分為新生代,老年代,永久代等。
2.對你用過的開源框架,能了解它的原理和機制;對Spring,ibatis的開源框架熟悉可以理解為用過主流的SSM,網(wǎng)狀等框架,并且一定程度上看過它們的源碼,不能一直停留在寫業(yè)務代碼上,不然永遠突破不了你的技術(shù)瓶頸。
- 掌握多線程以及高性能的設計與編碼,這塊需要對并發(fā)編程有所認識,比如從JMM角度看并發(fā),知道同步狀語從句:volitile關(guān)鍵字的原理等。
- 性能調(diào)優(yōu)可以理解為對JVM,Tomcat,MySQL的優(yōu)化;
- 具有高并發(fā)應用開發(fā)經(jīng)驗,實際上是對分布式這塊的概括,比如你使用過zookeeper,dubbo,redis緩存,nginx負載均衡等。
- 最好再能有微服務經(jīng)驗,比如Spring Boot,Spring Cloud等。
4 . 對技術(shù)有濃厚興趣......這塊是對軟實力的一個要求,說明你積極向上,能吃苦耐勞,敢于拼搏。這種軟技能,實際上還有一方面要考察你的探索學習能力,比如你有沒有研究過netty源碼的底層實現(xiàn),有沒有經(jīng)常寫一些自己的博客,有沒有在github上經(jīng)常活動,更好地是做一些contribution。
- 有做過大型項目的技術(shù)PLA / PM者優(yōu)先。這句話是對你能力以及經(jīng)驗有一個加分項的考量。
總結(jié)概括你需要擁有全面的互聯(lián)網(wǎng)技術(shù)相關(guān)知識:
從底層說起,你起碼得深入了解的MySQL和Redis的的,的MongoDB的響應,Nginx等的Tomcat的,RPC,JMS等方面的知識。
當我們聊技術(shù)實力的時候,我們到底在聊什么?需要了解到什么程度?
首先對于MySQL的,你要知道常見的參數(shù)設置,存儲引擎怎么去選擇,還需要了解常見的索引引擎,知道怎么去選擇。知道怎么去設計表,怎么優(yōu)化SQL,怎么根據(jù)執(zhí)行計劃去調(diào)優(yōu)。高級的你需要去做分庫分表的設計和優(yōu)化,一般互聯(lián)網(wǎng)企業(yè)的數(shù)據(jù)庫都是讀寫分離,還會垂直與水平拆分,所以這個也有經(jīng)驗的成分在里面。然后redis的,mongodb的都是需要了解原理,需要會調(diào)整參數(shù)的,而nginx的和tomcat的幾乎都是JAVA互聯(lián)網(wǎng)方面必配,其實跟阿里的技術(shù)棧選擇有點關(guān)系。至于RPC相關(guān)的就多的去,必須各種網(wǎng)絡協(xié)議,序列化技術(shù),SOA等等,你要有一個深入的理解。現(xiàn)在應用比較廣的RPC框架,在國內(nèi)就是Dubbo了。一般情況下不是專門開發(fā)中間件系統(tǒng)和支撐系統(tǒng)的不需要了解太多細節(jié),國內(nèi)企業(yè)常用的主要是ActiveMQ的和kafka。總結(jié)一個非常全面的互聯(lián)網(wǎng)Java架構(gòu)技術(shù)學習路線總綱:
在互聯(lián)網(wǎng)公司面試中,架構(gòu)的底層一定是面試官會問到的問題,針對面試官一般會提到的問題,我錄制了一些底層原理的錄像視頻,加群619881427可以免費獲取這些錄像,里面有些分布式,微服務,性能優(yōu)化,Spring,MyBatis的等源碼知識點的錄像視頻。上圖的性能優(yōu)化只是其中的一小部分,這些視頻都是我找一些資深架構(gòu)師朋友一起錄制出來的,視頻希望能夠幫助到以下幾類程序員:
1.對現(xiàn)在的薪資不滿,想要跳槽,卻對自己的技術(shù)沒有信心,不知道如何面對面試官。
2.想從傳統(tǒng)行業(yè)轉(zhuǎn)行到互聯(lián)網(wǎng)行業(yè),但沒有接觸過互聯(lián)網(wǎng)技術(shù)。
3.工作1 - 5年需要提升自己的核心競爭力,但學習沒有系統(tǒng)化,不知道自己接下來要學什么才是正確的,踩坑后又不知道找誰,百度后依然不知所以然。
4.工作5 - 10年無法突破技術(shù)瓶頸(運用過很多技術(shù),在公司一直寫著業(yè)務代碼,卻依然不懂底層實現(xiàn)原理)
如果你現(xiàn)在正處于我上述所說的幾個階段可以加下我的群來學習。而且我也能夠提供一些面試指導,職業(yè)規(guī)劃等建議。