天天看點

想在一線城市Java開發月薪2兩萬往上,該如何做,需要會寫什麼?

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

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

首先在BAT來說,這個月薪算是很普遍的了,一般是進階工程師和資深工程師的職位都是有的。在阿裡是p6~p7左右,在百度是t5左右,騰訊的話是t2-3左右,京東是t3-1,美團是p6左右,其他的我不了解。但這種是BAT主要的碼農層級,加班會比較多,能解決大部分問題,但對系統的整體架構能力和深入分析瓶頸的能力還需要培養。

其次掌握的技能樹主要有三個方面:

第一個是基礎。比如對集合類,并發包,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。如果你能拍着胸脯說這些你都研究的比較深入,那你去面試阿裡p7可能問題都不大,當然這個總的來講還是需要看你的架構能力方面的面試表現了。

第三就是程式設計能力,程式設計思想,算法能力,架構能力。首先2W的程式員其實對算法的要求還不算很高,可能進階一點也最多就是紅黑樹吧,但是基本的排序和查詢算法至少得會。程式設計思想是必須的,問你個AOP和IOC你起碼的清清楚楚,設計模式不要求你每種都用過,但至少也要也能了解其中幾種吧。程式設計能力這個其實我覺得不好去評價,但是拿一個2000W使用者根據姓名年齡排序這種題目也能信手拈來。最後就是架構能力,這種不是說要你設計個多牛逼多高并發的系統,起碼讓你做一個秒殺系統,防重請求的設計能快速搞定而沒有坑吧。

以上就是我所說的2w應該達到的水準,如果你運氣好,面試表現好,3w+也不是沒有可能吧~

接下來,我們上招聘網站實際找幾個月薪超過2w的JD來看下。

阿裡巴巴

想在一線城市Java開發月薪2兩萬往上,該如何做,需要會寫什麼?

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

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

首先在BAT來說,這個月薪算是很普遍的了,一般是進階工程師和資深工程師的職位都是有的。在阿裡是p6~p7左右,在百度是t5左右,騰訊的話是t2-3左右,京東是t3-1,美團是p6左右,其他的我不了解。但這種是BAT主要的碼農層級,加班會比較多,能解決大部分問題,但對系統的整體架構能力和深入分析瓶頸的能力還需要培養。

其次掌握的技能樹主要有三個方面:

第一個是基礎。比如對集合類,并發包,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。如果你能拍着胸脯說這些你都研究的比較深入,那你去面試阿裡p7可能問題都不大,當然這個總的來講還是需要看你的架構能力方面的面試表現了。

第三就是程式設計能力,程式設計思想,算法能力,架構能力。首先2W的程式員其實對算法的要求還不算很高,可能進階一點也最多就是紅黑樹吧,但是基本的排序和查詢算法至少得會。程式設計思想是必須的,問你個AOP和IOC你起碼的清清楚楚,設計模式不要求你每種都用過,但至少也要也能了解其中幾種吧。程式設計能力這個其實我覺得不好去評價,但是拿一個2000W使用者根據姓名年齡排序這種題目也能信手拈來。最後就是架構能力,這種不是說要你設計個多牛逼多高并發的系統,起碼讓你做一個秒殺系統,防重請求的設計能快速搞定而沒有坑吧。

以上就是我所說的2w應該達到的水準,如果你運氣好,面試表現好,3w+也不是沒有可能吧~

接下來,我們上招聘網站實際找幾個月薪超過2w的JD來看下。

阿裡巴巴

想在一線城市Java開發月薪2兩萬往上,該如何做,需要會寫什麼?

分析:

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問題不大。是以作為優質向上的有為青年應該以美團的标準來要求自己(認真臉)。

美團

想在一線城市Java開發月薪2兩萬往上,該如何做,需要會寫什麼?
想在一線城市Java開發月薪2兩萬往上,該如何做,需要會寫什麼?

分析:

1.首先第一條紮實的計算機專業基本功和寫代碼能力就比較籠統哦了,太主觀。我們先放着,一會再回來review。

2. “熟練掌握 Java 及面向對象設計開發”=>工作一年以上;“對部分 Java 技術有深入研究”=>熟練IO的各種操作,或者對Java記憶體模型有點研究,有此二者在手,面試官絕對會對你刮目相看的,面試自然就加分了;“研究過優秀開源軟體的源碼并有心得”=>這個可以自己去Github找找幾個star多的項目來看吧,推薦netty,不要多,一個就好。

3. “了解 SOA 架構理念、實作技術;熟悉常見設計模式”=>維基百科歡迎你,看看就行了;“熟練掌握 Spring、myBatis 等架構”=>過一遍源碼吧

4. “熟練掌握 MySQL 應用開發、資料庫原理和常用性能優化和擴充技術”=>大家可以買本mysql的書來看(QAQ)“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哪個用的多就多看看相關部落格。都沒用過?建議你看redis

8. 好好包裝一下你做過的最nb的項目,準備幾個技術難點和解決方法,記住一定要結合業務哦。(什麼?沒有?沒有不會編嗎?怎麼編?往分布式和高并發方向編會嗎?不會?那你不适合網際網路。)

9. 多工作幾年!

你看,也不是很難嘛。如果上面的幾點你都做到了,還拿不到2w的美團進階JAVA開發工程師的offer,那美團肯定是當機了headcount。我認識的好多遠遠達不到上面需求的人都在美團呢。

PS:面試官問你算法的話,一定要裝作特别自信的說:“啊(第二聲),算法?一般工作當中不需要自己手寫算法吧?一方面是常用的算法,比如排序,查詢,都有現成的代碼來用;另一方面真需要手寫算法的問題一般都是面向特定需求的問題,或者要求效率特别高的地方。這些地方可以結合真正的需求來做。”當然常見的算法的僞代碼還是要會寫的哦。如果面試官問你紅黑樹,哈哈,那趕緊跑路。不是谷歌臉書也不是面試算法程式猿的公司問你紅黑樹,這公司一定是在裝逼

月薪2萬的Java程式員屬于中級程式員。

就是技術稍好一點,還做不到架構師級别的。

一般來說。

我給人開2萬的薪水主要取決于以下幾個方面。

1.能否獨立完成項目,以及完成過哪些項目,至少是6+項目。

項目經驗多了,對于需求的了解能力也會好很多。

2.對于自己所做項目用的技術架構,是否足夠清楚,能否回答出來是如何選型的。

并不要求現在能夠去做架構的選型,但是一定要了解自己原有項目的架構體系。

3.是否對行業技術的現狀有足夠多的了解,是否有主動學習的表現。

這是看一個人的視野開闊程度,15K的程式員我不要求這些。20K的程式員必須要讀一些主流的體系,哪怕說出來幾個名詞都可以。

4.處理過的最大的資料量是多少,有沒有超過千萬級的流水。處理過的最大的并發數是多少,TPS能到達多少。

5.是否了解分布式和緩存,RPC架構用過哪些,緩存的失效政策怎麼處理。

6.是否能夠快速的解決線上的故障,是否熟悉Bug和線上Bug的緊急修複流程。

7.是否熟悉項目工具,如Jenkins,Nexus,Confluence,wiki,git,svn等項目中常用的東西。

8.是否對性能調優有了解,GC的算法了解到多少。

其實應該是反過來說,就是候選人值多少錢?

補充一句,并沒有說都滿足。

而是說至少要有幾項是滿足的。

符合的條件越多,可以給出的薪水範圍就越高。

總結起來,要達到月薪2萬,需要掌握如下技能:

1.有紮實的Java程式設計基礎,熟悉各種設計模式,有良好的程式設計能力。

2.熟悉整個軟體開發流程及規範。

3.熟練掌握Spring/Struts/Ibatis以及主流開發架構。

4.熟悉資料庫,比如Mysql、oracle等,并對資料庫事物有深刻了解。

5.擅長使用開源架構,解讀過源碼,掌握實作原理。

6.1-5年開發經驗。

7.學曆能力強,善于總結、思考。

看完這些,你是不是有些方向了呢?如果你想學習Java源碼分析、微服務和分布式架構等Java進階技術可以關注知乎專欄“動力節點Java教程視訊庫”, 免費領取相關學習資料視訊。

以上的隻是月薪20k Java開發崗位的基本技能,針對不同的業務還需要其他技能,比如搜尋業務,還需要掌握Lucene、ElasticSearch等技術。

分析:

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問題不大。是以作為優質向上的有為青年應該以美團的标準來要求自己(認真臉)。

美團

想在一線城市Java開發月薪2兩萬往上,該如何做,需要會寫什麼?

分析:

1.首先第一條紮實的計算機專業基本功和寫代碼能力就比較籠統哦了,太主觀。我們先放着,一會再回來review。

2. “熟練掌握 Java 及面向對象設計開發”=>工作一年以上;“對部分 Java 技術有深入研究”=>熟練IO的各種操作,或者對Java記憶體模型有點研究,有此二者在手,面試官絕對會對你刮目相看的,面試自然就加分了;“研究過優秀開源軟體的源碼并有心得”=>這個可以自己去Github找找幾個star多的項目來看吧,推薦netty,不要多,一個就好。

3. “了解 SOA 架構理念、實作技術;熟悉常見設計模式”=>維基百科歡迎你,看看就行了;“熟練掌握 Spring、myBatis 等架構”=>過一遍源碼吧

4. “熟練掌握 MySQL 應用開發、資料庫原理和常用性能優化和擴充技術”=>大家可以買本mysql的書來看(QAQ)“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哪個用的多就多看看相關部落格。都沒用過?建議你看redis

8. 好好包裝一下你做過的最nb的項目,準備幾個技術難點和解決方法,記住一定要結合業務哦。(什麼?沒有?沒有不會編嗎?怎麼編?往分布式和高并發方向編會嗎?不會?那你不适合網際網路。)

9. 多工作幾年!

你看,也不是很難嘛。如果上面的幾點你都做到了,還拿不到2w的美團進階JAVA開發工程師的offer,那美團肯定是當機了headcount。我認識的好多遠遠達不到上面需求的人都在美團呢。

PS:面試官問你算法的話,一定要裝作特别自信的說:“啊(第二聲),算法?一般工作當中不需要自己手寫算法吧?一方面是常用的算法,比如排序,查詢,都有現成的代碼來用;另一方面真需要手寫算法的問題一般都是面向特定需求的問題,或者要求效率特别高的地方。這些地方可以結合真正的需求來做。”當然常見的算法的僞代碼還是要會寫的哦。如果面試官問你紅黑樹,哈哈,那趕緊跑路。不是谷歌臉書也不是面試算法程式猿的公司問你紅黑樹,這公司一定是在裝逼

月薪2萬的Java程式員屬于中級程式員。

就是技術稍好一點,還做不到架構師級别的。

一般來說。

我給人開2萬的薪水主要取決于以下幾個方面。

1.能否獨立完成項目,以及完成過哪些項目,至少是6+項目。

項目經驗多了,對于需求的了解能力也會好很多。

2.對于自己所做項目用的技術架構,是否足夠清楚,能否回答出來是如何選型的。

并不要求現在能夠去做架構的選型,但是一定要了解自己原有項目的架構體系。

3.是否對行業技術的現狀有足夠多的了解,是否有主動學習的表現。

這是看一個人的視野開闊程度,15K的程式員我不要求這些。20K的程式員必須要讀一些主流的體系,哪怕說出來幾個名詞都可以。

4.處理過的最大的資料量是多少,有沒有超過千萬級的流水。處理過的最大的并發數是多少,TPS能到達多少。

5.是否了解分布式和緩存,RPC架構用過哪些,緩存的失效政策怎麼處理。

6.是否能夠快速的解決線上的故障,是否熟悉Bug和線上Bug的緊急修複流程。

7.是否熟悉項目工具,如Jenkins,Nexus,Confluence,wiki,git,svn等項目中常用的東西。

8.是否對性能調優有了解,GC的算法了解到多少。

其實應該是反過來說,就是候選人值多少錢?

補充一句,并沒有說都滿足。

而是說至少要有幾項是滿足的。

符合的條件越多,可以給出的薪水範圍就越高。

總結起來,要達到月薪2萬,需要掌握如下技能:

1.有紮實的Java程式設計基礎,熟悉各種設計模式,有良好的程式設計能力。

2.熟悉整個軟體開發流程及規範。

3.熟練掌握Spring/Struts/Ibatis以及主流開發架構。

4.熟悉資料庫,比如Mysql、oracle等,并對資料庫事物有深刻了解。

5.擅長使用開源架構,解讀過源碼,掌握實作原理。

6.1-5年開發經驗。

7.學曆能力強,善于總結、思考。

看完這些,你是不是有些方向了呢?如果你想學習Java源碼分析、微服務和分布式架構等Java進階技術可以關注知乎專欄“動力節點Java教程視訊庫”, 免費領取相關學習資料視訊。

以上的隻是月薪20k Java開發崗位的基本技能,針對不同的業務還需要其他技能,比如搜尋業務,還需要掌握Lucene、ElasticSearch等技術,當然,如果想成為架構師,可以看看架構師路線圖和和對應的課程:http://www.bjpowernode.com/kecheng/jgs.html/?csdm91。