1. 程式人生 > >java畢業2年如何做到月薪2萬

java畢業2年如何做到月薪2萬

有人回答說這隻能是大企業或者網際網路企業的工程師才能拿到。也許是的,小公司或者非網際網路企業拿兩萬的不太可能是碼農了,應該是已經轉管理後才有可能。還有區域問題,這個不在我的考慮範圍內,因為除了北上廣深杭,其他地方也很難。

還有人提到這個水平不止2w,其實工資是跟面試表現有關的,也跟其他綜合水平有關,比如你是985,top10,或者研究生學歷,也或者懂點node,Android等等的,或者表達能力強,擊中面試官痛點肯定加分是吧。如果你達到我說的水準,我們談的起薪就是2w,有其他優秀的表現我們在這個基礎上加點。但純JAVA方面待遇是比較吻合的,畢竟這幾個企業我都待過或面試過。SSH真的不是我要黑,2w水平的面試幾乎很少問SSH的知識,要問也是問架構層次的還有設計模式的。例如mybatis是如何管理session和cache的。spring裡面有哪些你熟悉的設計模式,你怎麼理解和應用的。

兩天沒來看,居然有了這麼多贊,感激。更開心的是業界幾個超大牛也給我點讚了。同時也有很多質疑的聲音。其實網際網路相關的知識去網際網路公司後很容易接觸,並不是什麼難點。如果你是在一線業務部門,我說的幾個點幾乎時時伴隨著你,你完全不用擔心自己不會。我司很多剛來的大學生在半年內都能把一些中介軟體系統摸的很明白,並不是說有多難,只是接觸少,對未知的東西感到害怕疑惑而已。我在這裡可以給那些想學習這方面的同學提供幾本書,這幾本書對網際網路的知識能很快入門和了解全景。不是廣告。

• 大型網站技術架構-核心原理與案例分析。 @李智慧大牛的書
• 大型分散式網站架構-設計與實踐。作者:陳康賢
• 大型網站系統與java中介軟體實踐。作者: 曾憲傑(原淘寶技術,現在蘑菇街)
• 然後再推薦一個網站併發程式設計網 - ifeve.com。這個網站的知識絕對夠你面試一個阿里P7,京東T3-2,騰訊T3-1。
好吧,我也不知道為什麼都是推薦淘寶系的東西。巧合哦?!
這也是我最後一次更新答案,希望給那些需要這些資訊的人幫助。那些質疑我的人去面試一下就明白我說的對不對,不要隨便就質疑。如果有機會可以再開一題,來談談網際網路的JAVA面試題,我可以把90%的題目全部給你列出來。還有那個京東的工程師也說這個技能樹不止2W,可我想說的是京東的水平真的很一般,現在一直處於模仿抄襲階段。那個saf就封裝了一層dubbo,後面加了一個序列化協議就變成jsf了,用了別人的就用了,有這麼不好意思嗎?架構師的水平真的太差了,很多都是機器堆的,當然你們有錢。有的業務一半的機器就可以很好的滿足現有巔峰的場景,東哥是被11年的事故搞怕了嗎?我其實不懷疑我說的這些技能樹能拿到25K或者30K的可能,但現在網際網路這麼泡沫,給自己一條踏實的路就那麼難麼?

首先兩萬的月薪在BAT實在太普遍了,一般是高階工程師和資深工程師的職位。在阿里是p6~p7左右,在百度是t5左右,騰訊是t2-3左右,京東是t3-1,美團是p6左右,其他的我不瞭解。這種級別是他們主要碼農層級,加班多,能解決大部分問題,但對系統的整體架構能力和深入分析瓶頸的能力還需要培養。

其次掌握的技能樹主要有三個方面:
第一個是基礎。比如對集合類,併發包,IO/NIO,JVM,記憶體模型,泛型,異常,反射,等有深入瞭解,最好是看過原始碼瞭解底層的設計。比如一般面試都會問ConcurrentHashMap,CopyOnWrite,執行緒池,CAS,AQS,虛擬機器優化等知識點,因為這些對網際網路的企業是絕對重要的。而且一般人這關都過不了,還發鬧騷說這些沒什麼用,為什麼要面試。舉一例子,在使用執行緒池時,因為使用了無界佇列,在遠端服務異常情況下導致內層飆升,怎麼去解決?你要是連執行緒池都不清楚,你怎麼去玩?再舉一例,由於對ThreadLocal理解出錯,使用它做執行緒安全的控制,導致沒能實現真的執行緒安全,你怪我哦?所以作為一個拿兩萬的JAVA程式設計師這點基礎是必須的。

第二你需要有全面的網際網路技術相關知識。從底層說起,你起碼得深入瞭解mysql,redis,mongodb,nginx,tomcat,rpc,jms等方面的知識。你要問需要了解到什麼程度,我可以給你說個大慨。首先對於MySQL,你要知道常見的引數設定,儲存引擎怎麼去選擇,還需要了解常見的索引引擎,知道怎麼去選擇。知道怎麼去設計表,怎麼優化sql,怎麼根據執行計劃去調優。高階的你需要去做分庫分表的設計和優化,一般網際網路企業的資料庫都是讀寫分離,還會垂直與水平拆分,所以這個也有經驗的成分在裡面。然後redis,mongodb都是需要了解原理,需要會調整引數的,而nginx和tomcat幾乎都是JAVA網際網路方面必配,其實很阿里的技術棧選擇有點關係。至於rpc相關的就多的去,必須各種網路協議,序列化技術,SOA等等,你要有一個深入的理解。現在應用比較廣的rpc框架,在國內就是dubbo了,可以自行搜尋。至於jms相關的起碼得了解原理吧,一般情況下不是專門開發中間件系統和支撐系統的不需要了解太多細節,國內企業常用的主要是activeMQ和kafka。你能對我說的都研究的比較深入,阿里p6我覺得是沒問題的,當然這個還需要看你的架構能力方面的面試表現了。

第三就是程式設計能力,程式設計思想,演算法能力,架構能力的考量。首先2W程式設計師對演算法的要求我覺得還是比較低,再高階也最多紅黑樹吧,但是排序和查詢的基本演算法得會。程式設計思想是必須的,問你個AOP和IOC你起碼的清清楚楚,設計模式不說每種都用過,但是也能深入理解個十四五種。程式設計能力這個我覺得不好去評價,但是拿一個2000W使用者根據姓名年齡排序這種題目也能信手拈來。最後就是架構能力,這種不是說要你設計個多牛逼多高併發的系統,起碼讓你做一個秒殺系統,防重請求的設計能快速搞定而沒有坑吧。

座標北京剛剛面試了幾家公司,要求都是17k左右,拿到兩個offer,談談體會,建議學習的時候又一個精簡的筆記,是概括的過程,複習的過程,心得的過程
1)thinking in java 4 看完90%,仔細看了其中85%的程式碼例子,手動運行了30%的程式碼。 複習的話一週到兩週。有些部分如講回字的四種寫法的可以不看,當然這部分小於10%,多執行緒,內部類,io,集合框架,反射是重點
2)effective java 這本書很好,看了這本書才能理解為啥需要設計模式,這本書不厚,大約需要1周左右看完90%
3)java與模式,這本書需要反覆體會,一般達到面試的要求1周左右就可以,類與類的關係;設計模式總的原則;建立,結構,行為,每種會5-7個模式即可
4)sql 基礎,深入淺出mysql, 這部分一週吧,要了解資料庫的三個設計正規化,四種隔離級別,jdbc的主要操作,mysql的索引。
5)ssh 部分,spring 結合那個隨著安裝包的reference看最好,因為版本變動的原因,有些書籍講的可能落伍了,當然不用全看,因為短時間內也看不完,ioc,bean的作用域,完整的生命週期,beanpostprocessor, aop, spring mvc,web service,jax-ws,spring mvc的各種註解,DispatchServlet,HandlerMapping,ViewResovler,Interceptor,事務
6) linux 基礎命令 1到兩天,最好自己安裝個虛擬機器,敲一下
7)redis 這個一到兩天吧,就string,map,set, list,sorted set 5種,一般問和memecache 有啥區別,問問記憶體申請,分配啥的,java一般用jedis.
8) hibernate,mybatis 各兩到三天吧,結合spring mvc 用或者不用maven自己配一下,自己用mysql 做一個小的demo,如果你能知道效能,快取,那就nb了,反正我現在還不怎麼懂,現在一般用mybatis,mybatis3學起來快,我看了3天吧每天3個小時,我學得慢
9)深入java虛擬機器,建議大概看看,一週吧,瞭解一下方法區和堆,class檔案載入的機制,記憶體溢位和洩露的情況,快的話兩個小時,當然想成為大牛必須深入瞭解。我是不怎麼了解的。
10)大一點的公司一般用soa,主流是阿里公司的dubbo協議,這個原理可能有點複雜,我也不是很清楚,用起來似乎挺簡單的。
11) mq,或者active mq 大概看個兩三天,略微瞭解一下。
12)js ,jquery,json,http協議,這方面瞭解一些即可,一般面試不問,入職後能參與專案就行。一般是json和java物件的互相轉換,用fastjson或者jackson,能用jquery操作dom,js的表單提交校驗等。
13)會使用eclispe ,idea,maven,我覺得各一天就行

如果剛畢業就有人告訴我這些該多好,我畢業好多年了,走了好多彎路,在不重視技術的行業軟體公司浪費了好幾年,又做了好幾年測試,
現在準備了一段時間只會這些,不過還好,有offer
回憶幾個面試過程中印象深的問題吧。
a)二叉樹的深度周遊和廣度周遊,當時深度周遊還好,廣度周遊就是想不起來。後來回來一看,不就佇列嗎!
b)linux 上有個文字檔案,一列是姓名,另一列分數,假設有很多行,如何排序,當時我也不會啊,回來一查不就是 sort –t -k -n -r 嘛,這有啥啊
c)看我簡歷上寫了熟悉tcp ip協議,就問我tcp為什麼比udp可靠,我說長連結,三次握手,再問三次握手的過程,我說不知道,到寫本文時也不知道
d)java記憶體模型,虛擬機器優化問過幾次,答主真是不怎麼知道啊。
e)在某大型網站的主頁上掛個投票功能,怎麼設計? 我還是不知道,隨便說了說,當然就沒戲了
f)還有人問我n+1什麼時候小於n, 我說不可能啊,他說再想想,我一想,不就是整型溢位的時候嘛,補碼錶示,這問題真是
g)還是上邊那個問題的面試官,問我如果java的List 中存放了好多不同的整數,假如有幾百個元素吧,我想把其中是某個值的比如7的都刪除,怎麼做?我說 ,直接呼叫remove 方法啊,有個remove(Object) 的方法的,他說沒有的,刪不了。 我當時說肯定可以。回來一查jdk文件。 我很無語當然,如果list很長,7如果出現次數過多,這麼刪是有個效能問題,但這面試官總不能胡說八道吧,當時這是家很小很小的公司,後來一聽名字小的公司,再不去面試了。

關於問題g ,有好多人回覆,我親自上機試了一下。 用for或while迴圈可以不產生那個ConcurrentModificationException異常的,多執行緒才可能會產生這個異常, 至於CopyOnWriteArrayList 這個也是多執行緒的情況下用的, 不適用於這個情況, 這個CopyOnWriteArrayList 生成的iterator 是不變的。
關於這麼個問題,就有這麼多說法,看來產生大牛很難啊,稍微有點複雜的概念,理解起來就產生了偏差。

以上就是我覺得2w水平的JAVA程式設計師。不要說什麼SSH,那最多值8K。

3。親身實踐來說兩句。
第一。純論技術水平的話。最高票那個答案。在天津。能給到3w+。(作為一個自己創業開軟體公司的人,我覺得能給到的薪資)
但是有一個前提。不是空口白話。無論說的那些會不會。一個成套的政府系統商城需要自己能去當主程。包括前端後臺邏輯資料庫運維。其實就算只會ssh,但是深入理解。配置快。業務熟練。2w也不是太大問題。因為只有ssh是基礎。其他的你可以現學現賣。比如ecache。比如單例模式工廠模式。那些都是面試的時候才回去問你的技巧性問題。真寫起來程式碼。。誰在乎你懂得多不多寫出來是正道。
第二。不是純搞技術就能掙到錢的。技術再好寫不出來成品一樣白瞎。我見過好多人都是技術水平…至少說起來槓槓的。設計模式。包管理方式。並行大規模計算等等。或者更多的奇技淫巧。說起來頭頭是道。但是!
真寫起來之後開一個並行thread都他媽的不死鎖資料庫。
寫一個手機端的api都不知道加上token驗證和錯誤回傳
配置完了redis然後嚷嚷著資料庫出問題了吧為什麼mysql庫沒有資料存入
這些人。通常討論高深技術。很high。真寫起來。狗屁不通。
綜上。能用技術掙到2w有這幾個標準
1 至少你需要特別熟練SSH。不給你doc和百度google你可以自己手動配置完成資料庫和整個框架
2 在1的基礎上你需要有一個自己拿的出手的比別人好的長處。如果你nginx配置大規模叢集和java對於分散式有很好的解決方案。那就是亮點
3 不能有短板。不能說一個姿勢不會。比如io問題無法解決。可以說懂得少。但是之前聽說過或者遇到過才可以。