有人回答說月薪兩萬,這隻能是大企業或者網際網路企業的工程師才能拿到。也許是的,小公司或者非網際網路企業拿兩萬的不太可能是碼農了,應該是已經轉管理後才有可能。還有區域問題,這個不在我的考慮範圍內,因為除了北上廣深杭,其他地方也很難。
還有人提到這個水平不止2w,其實工資是跟面試表現有關的,也跟其他綜合水平有關,比如你是985,top10,或者研究生學歷,也或者懂點node,Android等等的,或者表達能力強,擊中面試官痛點肯定加分是吧。如果你達到我說的水準,我們談的起薪就是2w,有其他優秀的表現我們在這個基礎上加點。但純JAVA方面待遇是比較吻合的,畢竟這幾個企業我都待過或面試過。SSH真的不是我要黑,2w水平的面試幾乎很少問SSH的知識,要問也是問架構層次的還有設計模式的。例如mybatis是如何管理session和cache的。spring裡面有哪些你熟悉的設計模式,你怎麼理解和應用的。
其實網際網路相關的知識去網際網路公司後很容易接觸,並不是什麼難點。如果你是在一線業務部門,我說的幾個點幾乎時時伴隨著你,你完全不用擔心自己不會。我司很多剛來的大學生在半年內都能把一些中介軟體系統摸的很明白,並不是說有多難,只是接觸少,對未知的東西感到害怕疑惑而已。我在這裡可以給那些想學習這方面的同學提供幾本書,這幾本書對網際網路的知識能很快入門和了解全景。不是廣告。
大型網站技術架構-核心原理與案例分析。@李智慧大牛的書
大型分散式網站架構-設計與實踐。作者:陳康賢
大型網站系統與java中介軟體實踐。作者: 曾憲傑(原淘寶技術,現在蘑菇街)
好吧,我也不知道為什麼都是推薦淘寶系的東西。巧合哦?!
這也是我最後一次更新答案,希望給那些需要這些資訊的人幫助。那些質疑我的人去面試一下就明白我說的對不對,不要隨便就質疑。如果有機會可以再開一題,來談談網際網路的JAVA面試題,我可以把90%的題目全部給你列出來。我其實不懷疑我說的這些技能樹能拿到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使用者根據姓名年齡排序這種題目也能信手拈來。
最後就是架構能力,這種不是說要你設計個多牛逼多高併發的系統,起碼讓你做一個秒殺系統,防重請求的設計能快速搞定而沒有坑吧。
第四掌握一套屬於自己的架構學習體系
一、Java架構體系
1.高效能架構
2.開源框架解析
3.架構師築基
4.微服務架構
5.團隊協作開發
6.B2C商城專案實戰
二、設計模式
三、資料結構與演算法
四、BATJ企業面試總結
Java架構體系
1.高效能架構
2.開源框架解析
3.架構師築基
4.微服務架構
5.團隊協作開發
6.B2C商城專案實戰
設計模式
資料結構與演算法
01 連結串列(上):輕鬆寫出正確的連結串列演算法,並實現LRU快取淘汰演算法
02 連結串列(下):ArrayList與LinkedList原始碼解析及應用場景
03 佇列:執行緒池中有限資源請求佇列排隊功能的實現原理
04 棧:使用者介面的前進跳轉及回退機制如何實現
05 Hash表(上):HashMap 的實現原理精講
06 Hash表(下):Hash思想在ThreadLocal與資料庫索引中的應用
07 Java容器結構總結
08 樹(上):樹和二叉樹的基本概念,以及huffman編碼的手寫實現
09 樹(中):二叉排序樹及二叉平衡樹原理及手寫實現
10 樹(下):紅黑樹旋轉理論及其應用
BATJ企業面試總結
01 怎樣封裝讓BATJ企業面試官眼前一亮的簡歷
02 HashMap底層執行原理
03 hashtable和ConcurrentHashMap如何實現執行緒安全?
04 jvm的記憶體佈局,垃圾回收機制
05 類載入機制裡的,雙親委派模型
06 闡述事務的隔離級別和傳播屬性
07 高併發下,如何做到安全的修改同一行資料?
08 A服務呼叫B服務多介面,響應時間最短方案
09 A系統給B系統轉100塊錢,如何實現?
10 動態代理的幾種實現方式及優缺點
加入Java進階之路(878249276)免費獲取往期阿里架構師精講資料、精講視訊、Dubbo、Redis、設計模式、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術。合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!