作者:黃小斜
文章來源:程式員江湖
很多Java初學都關心這麼一個問題,Java學到什麼程度以後可以找到第一份工作。大家的目标都很明确,也很實在,學習Java無非就是為了找工作,那到底我要學多少Java知識,才可以找到第一份工作呢。
之前寫過一篇文章,記錄了我人生中第一場面試,當時我的Java水準無非就是剛入門的水準,但是作為校招生來說,找一份小公司的開發工作不算非常難,畢竟網際網路公司那麼多,要求也是天差地别,對技術、學曆、實踐能力的要求和評價标準也有很大的差距。
是以,到底Java學到什麼程度才能找到第一份工作,我想應該用公司來作為變量,這樣回答這個問題才有意義。
創業型小公司
創業型小公司的特點就是人少,事雜。這裡我們指的是不到100人的小公司,這種公司其實也很多,我們抛開一些獨角獸或者知名創業公司不談,先談談大多數的創業公司,這些公司吸引不到優秀人才,并且也拿不出太多錢給員工,是以招牌要求也會比較低,學曆基本不看,Java基礎知識稍微掌握一些,做過幾個Java Web項目,最好還能寫寫前端代碼,能吹幾句牛皮,應該問題就不會很大。
這種公司招人的管道本來就少,薪水得不到保障不說,辦公場所也很簡陋,但是工作時間倒是少不了,是以啊,這類公司,我想也是教育訓練機構給學員拍胸脯保證就業的最合适标準了。
中小型公司
說到中小型公司,泛指那些100人以上,500人以下的公司,大多數也是叫不上名字,但是還算有所發展的公司,這類公司稍微會正規一點,招聘和教育訓練可能會有自己的一套标準,比如學曆上可能稍微做一些要求,技術上的把關更嚴格一點,除了Java基礎知識和項目經曆之外,可能還會考查你的debug能力,代碼規範、異常處理能力,以及對一些Java進階特性的了解能力,可能最好多用過一些架構。
總而言之,這類公司選人的标準更加有體系,不會像一些特别小的公司,招人很随意,上司拍個闆就行。當然,這類公司也吸引不到太多優秀人的人才,但是也确實可能會有一些踏實能幹的勤奮員工。
二三線網際網路公司
這類公司範圍就很廣了,比如日薄西山的搜狐、新浪、360,或者是一直起不來的迅雷、金山、獵豹,甚至是愛奇藝、攜程這類現狀比較不錯的企業等等,這類公司擠不到BAT TMD等一線網際網路行列,但是在二三線陣容還算是比較不錯的公司,它們對于人才的要求其實還是相對比較高的。
比如一般都會要求大學學曆,對Java基礎知識要比較熟悉,最好能夠看過源碼,如果沒看過,那麼源碼方面的面試題好歹也要準備一下,除此之外,一般來說還會考察你的後端技術知識,比如資料庫、網絡、作業系統,考察的不會太難,能把面經上的知識點掌握了就算是比較紮實了。
這類公司一般不會考太複雜的題目,更希望招一些水準能力都是中等的人才,隻要知識面能比較廣,題目都能說到點子上,不需要掌握得特别深入,也可以有機會拿到offer。
其實歸結原因,就是因為二三線網際網路不太可能和一線公司争奪一線人才,是以一般争取的都是二線人才,不需要太優秀,但是至少要是中等水準,是以這些公司對很多程式員來說還是比較有機會的。
一線網際網路公司和獨角獸
BAT、TMD等網際網路名企都屬于這類公司,這類公司和二三線網際網路公司的發展差距還是比較大的,展現在公司的規模、市值、甚至是股價等方面,業務以技術為基礎,是以這些公司的技術往往也是業界最頂尖的,比如阿裡的雲計算和中間件,頭條的推薦算法、騰訊的遊戲技術等等。
要進這些公司,不僅要做到之前那些事情:掌握Java基礎、計算機基礎知識,并且是非常熟練地掌握,你需要深入了解每一個知識點,因為面試官會不斷深入地向你提問,了解你的知識深度,同時,你需要對源碼有所了解,在讀懂源碼的基礎上去了解架構的實作、JDK的實作。
另外,你需要對JVM有一個清晰的認識,不僅要了解其結構,垃圾回收原理,甚至還要知道如何在遇到線上問題時通過JVM調優來解決它們。
同理,你還需要對Java并發程式設計和網絡程式設計的使用方法與底層實作原理非常熟悉,不僅僅答出NIO和BIO的差別,或者是synchronized和lock的差別,你還需要知道NIO的底層實作epoll是什麼,synchronized對應的mutex lock是什麼,lock和condition的實作原理又是什麼,而lock本身也是通過AQS、CAS操作類等元件來實作的,其中的内容實在太多,絕不隻是幾道面試題就可以搞定的。
當然,除此之外,這些公司對資料庫、緩存、分布式技術等方面的要求都會比其他公司要高得多,你最好要搞懂MySQL的存儲引擎、索引和鎖的實作原理,Redis緩存的資料結構、備份方式、底層實作。同時如果你能了解負載均衡算法、CAP理論,甚至是raft和paxos算法,以及分布式常用技術如消息隊列、zookeeper等等,那麼無疑也是可以為你加分的技能。
為什麼大公司的要求這麼高,因為它們是最好的網際網路公司,要招的自然也是最優秀的人才,如果考察底層原理還不能滿足他們篩選人才的需要,他們也會考察面試者的算法能力,比如LeetCode上medium難度的原題,或者是劍指offer的變式題等等,算法題相對考察理論基礎而言,篩選度更高,可以淘汰的人也更多。