Java程序員月薪30K,須要技術能力達到什麼程度?

最近跟朋友在一塊兒聚會的時候提了一個問題,說Java程序員月薪如何達到30K,技術水平須要達到什麼程度?mysql

有人回答說這隻能是大企業或者互聯網企業工程師才能拿到。也許是的,小公司或者非互聯網企業拿到30K的不太多是碼農了,應該已經轉管理。還有區域問題,這個是不在個人考慮範圍內的,由於除了北上廣深杭,其餘地方也很可貴到。nginx

30K對應的層級分別是什麼?程序員

30K的月薪在BAT等一線大廠實在太廣泛了,通常是高級工程師和資深工程師的職位,在阿里是p6~p7左右,在百度是t5左右,騰訊是t2-3左右,在京東是t3-1,美團是p6左右,其餘的我不瞭解。面試

掌握的技能樹主要包含哪幾個方面redis

第一個是基礎。算法

好比對集合類,併發包,IO/NIO,JVM,內存模型,泛型,異常,反射,等有深刻了解,最好是看過源碼瞭解底層的設計。好比通常面試都會問ConcurrentHashMap,CopyOnWrite,線程池,CAS,AQS,虛擬機優化等知識點,由於這些對互聯網的企業是絕對重要的。sql

並且通常人這關都過不了,還發鬧騷說這些沒什麼用,爲何要面試。舉一例子,在使用線程池時候,由於使用了***隊列,在遠程服務異常狀況下致使內層飆升,怎麼去解決?你要是連線程池都不清楚,你怎麼去玩?再舉一例,因爲對ThreadLocal理解出錯,使用它作線程安全的控制,致使沒能實現真的線程安全。因此做爲一個拿三萬的JAVA程序員這點基礎是要有的。mongodb

第二你須要有全面的互聯網主流技術相關知識。數據庫

從底層提及,你起碼得深刻了解mysql,redis,mongodb,nginx,tomcat,rpc,jms等方面的知識。你要問須要瞭解到什麼程度,我能夠給你說個大慨。首先對於MySQL,你要知道常見的參數設置,存儲引擎怎麼去選擇,還須要瞭解常見的索引引擎,知道怎麼去選擇。知道怎麼去設計表,怎麼優化sql,怎麼根據執行計劃去調優。編程

高級的你須要去作分庫分表的設計和優化,通常互聯網企業的數據庫都是讀寫分離,還會垂直與水平拆分,因此這個也有經驗的成分在裏面。而後redis,mongodb都是須要了解原理,須要會調整參數的,而nginx和tomcat幾乎都是Java互聯網方面必配,其實很阿里的技術棧選擇有點關係。至於rpc相關的就多的去,必須各類網絡協議,序列化技術,SOA等等你要有一個深刻的理解。

如今應用比較廣的rpc框架,在國內就是dubbo了,能夠自行搜索。至於jms相關的起碼得了解原理吧,通常狀況下不是專門開發中間件系統和支撐系統的不須要了解太多細節,國內企業經常使用的主要是activeMQ和kafka。你能對我說的都研究的比較深刻,阿里p7都不是太大問題的,固然這個還須要看你的架構能力方面的面試表現了。

第三就是編程能力,編程思想,算法能力,架構能力。

首先30K程序員對算法的要求我以爲仍是比較低,再高級也最多紅黑樹吧,可是排序和查詢的基本算法得會。編程思想是必須的,問你個AOP和IOC你起碼的清清楚楚,設計模式不說每種都用過,但也能瞭解個幾種吧。

編程能力這個我以爲很差去評價,可是拿一個2000W用戶根據姓名年齡排序這種題目也能信手拈來。最後就是架構能力,這種不是說要你設計個多牛逼多高併發的系統,起碼讓你作一個秒殺系統,防重請求的設計能快速搞定而沒有坑吧。

再往上基本就是架構師了,若是你想要作到架構師這個級別,那麼這樣的一份Java架構進階路線圖譜確定是必不可少的,裏面的內容基本概況了目前互聯網的主流技術,有用的話能夠長按圖片保存。

Java進階路線圖

18b3ccc5-90e3-4149-9fd5-3c7b8c0299da


db0dac7b-7643-46ad-997c-8398d7bbe7c8


60a55703-bc07-489c-be0a-3b7c23611ffe


dec39147-3df1-43fa-8331-e2b3e6eaa946

技術的突破須要依賴業務場景的需求和自身刻意的規劃學習,兩者缺一不可。但前者是機會,每每不是本身能徹底把控的,若是在工做中沒有實踐場景,最好的辦法就是系統的學習與梳理,待機會來臨時才能一展身手。

相關資料獲取方式:https://shimo.im/docs/TC9Jq63Tp6HvTXdg/ 

相關文章
相關標籤/搜索