Java程序員幾年能實現月薪2萬,需要具備哪些技能?
拋開工作經驗,項目經驗,學曆背景,單從技術點分析,哪些方麵可以判斷一個java程序員的技術紮實程度,怎樣才能知道他值多少月薪呢?本文將為你解答:
有人說這隻能是大企業或者互聯網企業的工程師才能拿到。也許是的,小公司或者非互聯網企業拿兩萬的不太可能是碼農了,應該是已經轉管理後才有可能。還有區域問題,這個不在我的考慮範圍內,因為除了北上廣深杭,其他地方也很難。
還有人提到這個水平不止2w,其實工資是跟麵試表現有關的,也跟其他綜合水平有關,比如你是985,top10,或者研究生學曆,也或者懂點node,Android等等的,或者表達能力強,擊中麵試官痛點肯定加分是吧。如果你達到我說的水準,我們談的起薪就是2w,有其他優秀的表現我們在這個基礎上加點。但純JAVA方麵待遇是比較吻合的,畢竟這幾個企業我都待過或麵試過。SSH真的不是我要黑,2w水平的麵試幾乎很少問SSH的知識,要問也是問架構層次的還有設計模式的。例如mybatis是如何管理session和cache的。spring裏麵有哪些你熟悉的設計模式,你怎麼理解和應用的。
首先兩萬的月薪在BAT實在太普遍了,一般是高級工程師和資深工程師的職位。在阿裏是p6~p7左右,在百度是t5左右,騰訊是t2-3左右,京東是t3-1,美團是p6左右,其他的我不了解。這種級別是他們主要碼農層級,加班多,能解決大部分問題,但對係統的整體架構能力和深入分析瓶頸的能力還需要培養。如果你想學習java可以來這個Q群,首先是220,中間是142,最後是906,裏麵可以學習和交流,也有資料可以下載。
個人覺得2萬月薪需要具有以下幾特點:
第一個是基礎,比如對集合類,並發包,IO/NIO,JVM,內存模型,泛型,異常,反射,等有深入了解,最好是看過源碼了解底層的設計。比如一般麵試都會問ConcurrentHashMap,CopyOnWrite,線程池,CAS,AQS,虛擬機優化等知識點,因為這些對互聯網的企業是絕對重要的。而且一般人這關都過不了,還發鬧騷說這些沒什麼用,為什麼要麵試。舉一例子,在使用線程池時,因為使用了無界隊列,在遠程服務異常情況下導致內層飆升,怎麼去解決?你要是連線程池都不清楚,你怎麼去玩?再舉一例,由於對ThreadLocal理解出錯,使用它做線程安全的控製,導致沒能實現真的線程安全,你怪我哦?所以作為一個拿兩萬的JAVA程序員這點基礎是必須的。
知識廣度:需要知道主流技術為什麼誕生,能解決什麼問題?如果同一種業務用不用的技術來實現,會有什麼哪些優缺點?比如:流行的ORM框架Mybatis 和 hibernate ,他們之間的優缺點是什麼?要有清晰的認識會能在技術造型時做出正確的決定。
抽象能力:對業務和技術進行抽象。業務抽象就是對需求進行分析後,能夠建立完美的實體類以及他們之間的聯係。技術抽象是對整體架構進行一個分層,各層之間的交互。這至關重要,如果技術抽象能力不足,這會導致整個係統的架構不靈活,難以維護和擴展。
知識的深度:至少是某個領域的專家,比如消息隊列,activeMQ熟悉其源碼,知道其實現。
優秀的學習能力:對新的技術和前沿性的技術進行學習,使用它來解決工作中的業務問題。
那麼你該如何去做呢?我覺得可以從以下幾個步驟開始:
1: 紮實的JAVA 基礎,Think in java上介紹的內容都能理解,做到這一步恭喜成為了程序員。
2:熟練使用主流框架,如:mybatis,spring 等。
3:研究過至少一種以web框架的源碼,如spring mvc ,struts 等。
4:架構過或者參與過高並發係統設計,知道如何應對突發情況。
5:對自己所處的業務能夠根據自己的知識維度,提出優化建議或者預測其風險點。
第三就是編程能力,編程思想,算法能力,架構能力的考量。首先2W程序員對算法的要求我覺得還是比較低,再高級也最多紅黑樹吧,但是排序和查詢的基本算法得會。編程思想是必須的,問你個AOP和IOC你起碼的清清楚楚,設計模式不說每種都用過,但是也能深入理解個十四五種。編程能力這個我覺得不好去評價,但是拿一個2000W用戶根據姓名年齡排序這種題目也能信手拈來。最後就是架構能力,這種不是說要你設計個多牛逼多高並發的係統,起碼讓你做一個秒殺係統,防重請求的設計能快速搞定而沒有坑吧。
以上就是我覺得2w水平的JAVA程序員。不要說什麼SSH,那最多值8K。
如果你想學習Java工程化、高性能及分布式、高性能、深入淺出。性能調優、Spring,MyBatis,Netty源碼分析和大數據等知識點可以來找我。
而現在我就有一個平台可以提供給你們學習,讓你在實踐中積累經驗掌握原理。主要方向是JAVA架構師。如果你想拿高薪,想突破瓶頸,想跟別人競爭能取得優勢的,想進BAT但是有擔心麵試不過的,可以加我的Java學習Q群:220142906
下麵我給大家介紹一份Java工作2-5年學習圖譜
一、分布式專題
二、高並發、高性能專題
三、工程化專題
四、性能優化專題
五、源碼分期專題
六、雙十一架構專題
掌握以上技術別說兩萬,就是三萬也不是什麼難事,如果年紀稍大的程序員,建議還是走管理層,個人努力和學習很重要,平台更為重要。在平台上,你將時時刻刻麵對不同的問題,解決不同的實際問題,問題解決能力便提升了,同事積累到經驗。時間一晃就過,很快你就會發現,自己已是一位職業老手了,可能在迷茫自己的方向,可能在抱怨公司不好、工資不高等。所以選擇自己的的職業線路,做好規劃,選好你真真正正要的東西。
最後更新:2017-11-09 10:03:42