1. 程式人生 > >Java開發月薪2W的知乎討論記錄擷取

Java開發月薪2W的知乎討論記錄擷取

Java開發月薪2W的知乎討論記錄擷取

1. 推薦看 
作者:匿名使用者 
連結:https://www.zhihu.com/question/39890405/answer/83676977 
來源:知乎 
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

—————————————————————我是分割線————————————————————有人回答說這隻能是大企業或者網際網路企業的工程師才能拿到。也許是的,小公司或者非網際網路企業拿兩萬的不太可能是碼農了,應該是已經轉管理後才有可能。還有區域問題,這個不在我的考慮範圍內,因為除了北上廣深杭,其他地方也很難。—————————————————————我是分割線————————————————————還有人提到這個水平不止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
RedisMongoDB,nginx,tomcat,rpc,jms等方面的知識。你要問需要了解到什麼程度,我可以給你說個大慨。首先對於mysql,你要知道常見的引數設定,儲存引擎怎麼去選擇,還需要了解常見的索引引擎,知道怎麼去選擇。知道怎麼去設計表,怎麼優化sql,怎麼根據執行計劃去調優。高階的你需要去做分庫分表的設計和優化,一般網際網路企業的資料庫都是讀寫分離,還會垂直與水平拆分,所以這個也有經驗的成分在裡面。然後redismongodb都是需要了解原理,需要會調整引數的,而nginx和tomcat幾乎都是JAVA網際網路方面必配,其實很阿里的技術棧選擇有點關係。至於rpc相關的就多的去,必須各種網路協議,序列化技術,SOA等等,你要有一個深入的理解。現在應用比較廣的rpc框架,在國內就是dubbo了,可以自行搜尋。至於jms相關的起碼得了解原理吧,一般情況下不是專門開發中間件系統和支撐系統的不需要了解太多細節,國內企業常用的主要是activeMQ和kafka。你能對我說的都研究的比較深入,阿里p6我覺得是沒問題的,當然這個還需要看你的架構能力方面的面試表現了。第三就是程式設計能力,程式設計思想,
演算法
能力,架構能力的考量。首先2W程式設計師對演算法的要求我覺得還是比較低,再高階也最多紅黑樹吧,但是排序和查詢的基本演算法得會。程式設計思想是必須的,問你個AOP和IOC你起碼的清清楚楚,設計模式不說每種都用過,但是也能深入理解個十四五種。程式設計能力這個我覺得不好去評價,但是拿一個2000W使用者根據姓名年齡排序這種題目也能信手拈來。最後就是架構能力,這種不是說要你設計個多牛逼多高併發的系統,起碼讓你做一個秒殺系統,防重請求的設計能快速搞定而沒有坑吧。以上就是我覺得2w水平的JAVA程式設計師。不要說什麼SSH,那最多值8K。

2. 也推薦 
作者:匿名使用者 
連結:https://www.zhihu.com/question/39890405/answer/83742932 
來源:知乎 
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

今天沒事幹,更新一下阿里的。倒序插入,放在最前面了。另外,我把JD截圖了,防止有人說我亂講。-----------------來來來,我們上招聘網站實際找幾個月薪超過2w的JD來看下。阿里巴巴<img src=”https://pic2.zhimg.com/015365b7fac84da2cb1139600c71c749_b.png” data-rawwidth=”1264” data-rawheight=”1016” class=”origin_image zh-lightbox-thumb” width=”1264” data-original=”https://pic2.zhimg.com/015365b7fac84da2cb1139600c71c749_r.png”>分析:1. “NIO”->老老實實研究一下netty的原始碼和原理,保證他問不倒你;“類載入原理”->老生常談了,記得一個delegate,一個classloader如何造成記憶體洩漏就行;“動態代理、CGLIB”->肯定是問你如何生成proxy類,兩者有啥異同。找幾篇部落格來看看就行。另外,我估計很大程度是需要你結合spring來回答,因此還是看看spring的aop吧;“GC的原理”->這個就厲害了,GC有好多種,到底是哪種的原理啊?但是以我身為一名老年程式猿來告訴你,好好看一下CMS GC和G1 GC就行。CMS答好了肯定是OK的,G1純粹是錦上添花,給面試官留個追求技術的印象吧;“JVM記憶體模型”->JVM怎麼還有記憶體模型?是Java語言的記憶體模型吧?沒什麼好說的,看Java語言規範吧;“效能優化手段”->胡侃吧,朝著怎麼改進鎖,怎麼非同步,怎麼利用快取,怎麼選擇合適的GC演算法,怎麼調整Hotspot VM的各generation比例,blabla(此處應有嘔吐的表情,這種問題最煩了,你要是底氣足,頂一句“具體問題具體分析”,我敬你是一條漢子)2. “瞭解併發基礎變成最優”->看不懂,感覺是廢話,不管。併發這種東西,好好看一下java.util.concurrent包裡的類。3. “具備開發實戰技能,可以熟練使用Eclipse、Idea、熟悉常見的除錯方法及技巧、ant/svn/maven,有疑難雜症的排查經驗”->工作一段時間都會吧?ant和svn完全不夠酷,看得出來要麼阿里的人比較守舊(或者懶),要麼阿里的技術很老土。4. blabla總結一下,阿里的要求總體比美團低,但是給的工資比美團高(僅限這兩個JD的比較!特地加粗)。那麼問題來了,到底是美團裝逼,高要求招人,低要求做事;還是阿里sb,低要求招人,高標準給工資?當然還有一個可能,就是貼這個JD的hr是sb。總的來說,能拿到美團的offer,肯定能拿到阿里的offer。因此優質騷年應該以美團的標準來要求自己(認真臉)。美團<img src=”https://pic3.zhimg.com/790cea726ab7e1ca046c2a40da47922a_b.png” data-rawwidth=”661” data-rawheight=”679” class=”origin_image zh-lightbox-thumb” width=”661” data-original=”https://pic3.zhimg.com/790cea726ab7e1ca046c2a40da47922a_r.png”>分析:1. 計算機專業基本功和寫程式碼能力是廢話,太主觀。我們先放著,一會再回來review。2. “熟練掌握 Java 及面向物件設計開發”=>工作一年以上;“對部分 Java 技術有深入研究”=>熟練IO的各種姿勢,或者研究過Java記憶體模型,有此二者在手,面試官絕對對你刮目相看;“研究過優秀開源軟體的原始碼並有心得”=>去Github找找幾個star多的專案來看吧,推薦netty,不要多,一個就好。3. “瞭解 SOA 架構理念、實現技術;熟悉常見設計模式”=>維基百科歡迎你,看看就行了;“熟練掌握 Spring、myBatis 等框架”=>過一遍原始碼吧4. “熟練掌握 MySQL 應用開發、資料庫原理和常用效能優化和擴充套件技術”=>買本mysql的書來看(認真臉);“NoSQL,Queue 的原理、使用場景以及限制”=>好好看看redis就行5. “http 協議 搜尋引擎”=>維基百科;“快取”=>Google Guava cache,memcached,redis;“jvm 調優”=>掌握jvm引數(認真臉);“序列化”=>Google protocol buffer;“nio”=>netty;“RPC 呼叫框架”=>dubbo(垃圾)6. “xxx優先”=>有最好,沒有就算了7. 美團應該不會2b到考邏輯題或者腦經急轉彎,所以這裡肯定是結合你做過的專案來說。一般都會問,1⃣️專案架構,問什麼選擇這個不選擇那個;2⃣️碰到的最有挑戰/最複雜/最blabla的問題是什麼,怎麼解決的8. “高度的創業心和投入度”=>不一定要天天加班,但是碰到問題或者專案緊急的時候要加班,面試的時候要表現出這個態度,哈哈;“技術,業務,blabla”=>不能死關注技術,一定要結合業務來回答面試問題好了,再回到第一條,“計算機專業基本功和寫程式碼能力”,我們可以綜合一下(根據分析2~8),美團要求的可以是一個:(注意“可以”,你這麼做了“可以”獲得美團面試官的肯定,假如面試官真的是根據這份JD來要求你的話)1. 對Java語言本身,我們掌握一下記憶體模型,看一點併發相關的東西(java.util.concurrent包裡的類都看一遍),找幾篇部落格看下weak/soft/phantom reference是什麼意思就行啦;2. 對於JVM,看看書,理解一下Hotspot的常見結構啊名詞啊啥的,記幾個重要的引數,足以應付面試官了;3. 熟讀netty原始碼;4. 略讀Spring原始碼,重點理解關鍵概念(AOP面試官很愛問的哦);5. 在維基百科上過一過JD裡提到的一些名詞;6. 買本mysql的書看看,高效能mysql那本書就很好;7. redis或memcached哪個用的多就多看看相關部落格。都沒用過?建議你看redis8. 好好包裝一下你做過的最nb的專案,準備幾個技術難點和解決方法,記住一定要結合業務哦。(什麼?沒有?沒有不會編嗎?怎麼編?往分散式和高併發方向編會嗎?不會?那你不適合網際網路。)9. 多工作幾年!你看,也不是很難嘛。如果上面的幾點你都做到了,還拿不到2w的美團高階JAVA開發工程師的offer,那美團肯定是凍結了headcount。我認識的好多遠遠達不到上面需求的人都在美團呢。PS:面試官問你演算法的話,一定要裝作特別自信的說:“啊(第二聲),演算法?一般工作當中不需要自己手寫演算法吧?一方面是常用的演算法,比如排序,查詢,都有現成的程式碼來用;另一方面真需要手寫演算法的問題一般都是面向特定需求的問題,或者要求效率特別高的地方。這些地方可以結合真正的需求來做。”當然常見的演算法的虛擬碼還是要會寫的哦。如果面試官問你紅黑樹,哈哈,那趕緊跑路。不是谷歌臉書也不是面試演算法程式猿的公司問你紅黑樹,這公司一定是在裝逼(認真臉)。

3. 最後一個推薦了 
作者:匿名使用者 
連結:https://www.zhihu.com/question/39890405/answer/83742932 
來源:知乎 
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

今天沒事幹,更新一下阿里的。倒序插入,放在最前面了。另外,我把JD截圖了,防止有人說我亂講。-----------------來來來,我們上招聘網站實際找幾個月薪超過2w的JD來看下。阿里巴巴<img src=”https://pic2.zhimg.com/015365b7fac84da2cb1139600c71c749_b.png” data-rawwidth=”1264” data-rawheight=”1016” class=”origin_image zh-lightbox-thumb” width=”1264” data-original=”https://pic2.zhimg.com/015365b7fac84da2cb1139600c71c749_r.png”>分析:1. “NIO”->老老實實研究一下netty的原始碼和原理,保證他問不倒你;“類載入原理”->老生常談了,記得一個delegate,一個classloader如何造成記憶體洩漏就行;“動態代理、CGLIB”->肯定是問你如何生成proxy類,兩者有啥異同。找幾篇部落格來看看就行。另外,我估計很大程度是需要你結合spring來回答,因此還是看看spring的aop吧;“GC的原理”->這個就厲害了,GC有好多種,到底是哪種的原理啊?但是以我身為一名老年程式猿來告訴你,好好看一下CMS GC和G1 GC就行。CMS答好了肯定是OK的,G1純粹是錦上添花,給面試官留個追求技術的印象吧;“JVM記憶體模型”->JVM怎麼還有記憶體模型?是Java語言的記憶體模型吧?沒什麼好說的,看Java語言規範吧;“效能優化手段”->胡侃吧,朝著怎麼改進鎖,怎麼非同步,怎麼利用快取,怎麼選擇合適的GC演算法,怎麼調整Hotspot VM的各generation比例,blabla(此處應有嘔吐的表情,這種問題最煩了,你要是底氣足,頂一句“具體問題具體分析”,我敬你是一條漢子)2. “瞭解併發基礎變成最優”->看不懂,感覺是廢話,不管。併發這種東西,好好看一下java.util.concurrent包裡的類。3. “具備開發實戰技能,可以熟練使用Eclipse、Idea、熟悉常見的除錯方法及技巧、ant/svn/maven,有疑難雜症的排查經驗”->工作一段時間都會吧?ant和svn完全不夠酷,看得出來要麼阿里的人比較守舊(或者懶),要麼阿里的技術很老土。4. blabla總結一下,阿里的要求總體比美團低,但是給的工資比美團高(僅限這兩個JD的比較!特地加粗)。那麼問題來了,到底是美團裝逼,高要求招人,低要求做事;還是阿里sb,低要求招人,高標準給工資?當然還有一個可能,就是貼這個JD的hr是sb。總的來說,能拿到美團的offer,肯定能拿到阿里的offer。因此優質騷年應該以美團的標準來要求自己(認真臉)。美團<img src=”https://pic3.zhimg.com/790cea726ab7e1ca046c2a40da47922a_b.png” data-rawwidth=”661” data-rawheight=”679” class=”origin_image zh-lightbox-thumb” width=”661” data-original=”https://pic3.zhimg.com/790cea726ab7e1ca046c2a40da47922a_r.png”>分析:1. 計算機專業基本功和寫程式碼能力是廢話,太主觀。我們先放著,一會再回來review。2. “熟練掌握 Java 及面向物件設計開發”=>工作一年以上;“對部分 Java 技術有深入研究”=>熟練IO的各種姿勢,或者研究過Java記憶體模型,有此二者在手,面試官絕對對你刮目相看;“研究過優秀開源軟體的原始碼並有心得”=>去Github找找幾個star多的專案來看吧,推薦netty,不要多,一個就好。3. “瞭解 SOA 架構理念、實現技術;熟悉常見設計模式”=>維基百科歡迎你,看看就行了;“熟練掌握 Spring、myBatis 等框架”=>過一遍原始碼吧4. “熟練掌握 MySQL 應用開發、資料庫原理和常用效能優化和擴充套件技術”=>買本mysql的書來看(認真臉);“NoSQL,Queue 的原理、使用場景以及限制”=>好好看看redis就行5. “http 協議 搜尋引擎”=>維基百科;“快取”=>Google Guava cache,memcached,redis;“jvm 調優”=>掌握jvm引數(認真臉);“序列化”=>Google protocol buffer;“nio”=>netty;“RPC 呼叫框架”=>dubbo(垃圾)6. “xxx優先”=>有最好,沒有就算了7. 美團應該不會2b到考邏輯題或者腦經急轉彎,所以這裡肯定是結合你做過的專案來說。一般都會問,1⃣️專案架構,問什麼選擇這個不選擇那個;2⃣️碰到的最有挑戰/最複雜/最blabla的問題是什麼,怎麼解決的8. “高度的創業心和投入度”=>不一定要天天加班,但是碰到問題或者專案緊急的時候要加班,面試的時候要表現出這個態度,哈哈;“技術,業務,blabla”=>不能死關注技術,一定要結合業務來回答面試問題好了,再回到第一條,“計算機專業基本功和寫程式碼能力”,我們可以綜合一下(根據分析2~8),美團要求的可以是一個:(注意“可以”,你這麼做了“可以”獲得美團面試官的肯定,假如面試官真的是根據這份JD來要求你的話)1. 對Java語言本身,我們掌握一下記憶體模型,看一點併發相關的東西(java.util.concurrent包裡的類都看一遍),找幾篇部落格看下weak/soft/phantom reference是什麼意思就行啦;2. 對於JVM,看看書,理解一下Hotspot的常見結構啊名詞啊啥的,記幾個重要的引數,足以應付面試官了;3. 熟讀netty原始碼;4. 略讀Spring原始碼,重點理解關鍵概念(AOP面試官很愛問的哦);5. 在維基百科上過一過JD裡提到的一些名詞;6. 買本mysql的書看看,高效能mysql那本書就很好;7. redis或memcached哪個用的多就多看看相關部落格。都沒用過?建議你看redis8. 好好包裝一下你做過的最nb的專案,準備幾個技術難點和解決方法,記住一定要結合業務哦。(什麼?沒有?沒有不會編嗎?怎麼編?往分散式和高併發方向編會嗎?不會?那你不適合網際網路。)9. 多工作幾年!你看,也不是很難嘛。如果上面的幾點你都做到了,還拿不到2w的美團高階JAVA開發工程師的offer,那美團肯定是凍結了headcount。我認識的好多遠遠達不到上面需求的人都在美團呢。PS:面試官問你演算法的話,一定要裝作特別自信的說:“啊(第二聲),演算法?一般工作當中不需要自己手寫演算法吧?一方面是常用的演算法,比如排序,查詢,都有現成的程式碼來用;另一方面真需要手寫演算法的問題一般都是面向特定需求的問題,或者要求效率特別高的地方。這些地方可以結合真正的需求來做。”當然常見的演算法的虛擬碼還是要會寫的哦。如果面試官問你紅黑樹,哈哈,那趕緊跑路。不是谷歌臉書也不是面試演算法程式猿的公司問你紅黑樹,這公司一定是在裝逼(認真臉)。