1. 創(chuàng)業(yè)型小公司
創(chuàng)業(yè)型小公司的特點就是人少,事雜。這里我們指的是不到100人的小公司,這種公司其實也很多,我們拋開一些獨角獸或者知名創(chuàng)業(yè)公司不談,先談?wù)劥蠖鄶?shù)的創(chuàng)業(yè)公司。這些公司招牌要求不會很高,學(xué)歷也不是重點,Java開發(fā)基礎(chǔ)知識稍微掌握一些,做過幾個Java Web項目,還能寫寫前端代碼,能溝通交流,應(yīng)該問題就不會很大。
這種公司招人的渠道比較少,薪水也吸引不到的專業(yè)人才。所以員工少,往往一人多職,好處是有利于鍛煉自己全方位的能力。但是培訓(xùn)指導(dǎo)較少,需要員工自行摸索!
2.中小型公司
說到中小型公司,泛指那些100人以上,500人以下的公司,是還算有所發(fā)展的公司,這類公司稍微會正規(guī)一點,招聘和培訓(xùn)可能會有自己的一套標準,比如學(xué)歷上可能稍微做一些要求,技術(shù)上的把關(guān)更嚴格一點,除了Java基礎(chǔ)知識和項目經(jīng)歷之外,可能還會考查你的debug能力,代碼規(guī)范、異常處理能力,以及對一些Java特性的理解能力,可能多用過一些框架。
總而言之,這類公司選人的標準更加有體系,不會像一些特別小的公司,招人很隨意,領(lǐng)導(dǎo)拍個板就行。這類公司能吸引一部分人的人才,會有一些踏實能干的勤奮員工。
3.二三線互聯(lián)網(wǎng)公司
這類公司范圍就很廣了,比如日薄西山的搜狐、新浪、360,或者迅雷、金山、獵豹,甚至是愛奇藝、攜程這類現(xiàn)狀比較不錯的企業(yè)等等,這類公司擠不到BAT、TMD等一線互聯(lián)網(wǎng)行列,但是在二三線陣容還算是比較不錯的公司,它們對于人才的要求其實還是相對比較高的。
比如一般都會要求本科學(xué)歷,對Java基礎(chǔ)知識要比較熟悉,能夠看過源碼,如果沒看過,那么源碼方面的面試題好歹也要準備一下,除此之外,一般來說還會考察你的后端技術(shù)知識,比如數(shù)據(jù)庫、網(wǎng)絡(luò)、操作系統(tǒng),考察的不會太難,能把面經(jīng)上的知識點掌握了就算是比較扎實了。
這類公司一般不會考太復(fù)雜的題目,更希望招一些水平能力都是中等的人才,只要知識面能比較廣,題目都能說到點子上,不需要掌握得特別深入,也可以有機會拿到offer。
要進這些公司,不僅要做到之前那些事情:掌握Java基礎(chǔ)、計算機基礎(chǔ)知識,并且是非常熟練地掌握,你需要深入理解每一個知識點,因為面試官會不斷深入地向你提問,了解你的知識深度,同時,你需要對源碼有所理解,在讀懂源碼的基礎(chǔ)上去理解框架的實現(xiàn)、JDK的實現(xiàn)。
另外,你需要對JVM有一個清晰的認識,不僅要了解其結(jié)構(gòu),垃圾回收原理,甚至還要知道如何在遇到線上問題時通過JVM調(diào)優(yōu)來解決它們。
同理,你還需要對Java并發(fā)編程和網(wǎng)絡(luò)編程的使用方法與底層實現(xiàn)原理非常熟悉,不僅僅答出NIO和BIO的區(qū)別,或者是synchronized和lock的區(qū)別,你還需要知道NIO的底層實現(xiàn)epoll是什么,synchronized對應(yīng)的mutex lock是什么,lock和condition的實現(xiàn)原理又是什么,而lock本身也是通過AQS、CAS操作類等組件來實現(xiàn)的,其中的內(nèi)容實在太多,絕不只是幾道面試題就可以搞定的。
當(dāng)然,除此之外,這些公司對數(shù)據(jù)庫、緩存、分布式技術(shù)等方面的要求都會比其他公司要高得多,你要搞懂MySQL的存儲引擎、索引和鎖的實現(xiàn)原理,Redis緩存的數(shù)據(jù)結(jié)構(gòu)、備份方式、底層實現(xiàn)。同時如果你能理解負載均衡算法、CAP理論,甚至是raft和paxos算法,以及分布式常用技術(shù)如消息隊列、zookeeper等等,那么無疑也是可以為你加分的技能。