身邊的朋友或者公眾號的粉絲很多人都向我詢問過:“我是雙非/三本/??茖W校的,我有機會進入大廠嗎?”、“非計算機專業(yè)的學生能學好嗎?”、“如何學習Java?”、“Java學習該學那些東西?”、“我該如何準備Java面試?”......這些方面的問題。我會根據自己的一點經驗對大部分人關心的這些問題進行答疑解惑。現(xiàn)在又剛好趕上考研結束,這篇文章也算是給考研結束準備往Java后端方向發(fā)展的朋友們指名一條學習之路。道理懂了如果沒有實際行動,那這篇文章對你或許沒有任何意義。
Question1:我是雙非/三本/??茖W校的,我有機會進入大廠嗎?
我自己也是非985非211學校的,結合自己的經歷以及一些朋友的經歷,我覺得讓我回答這個問題再好不過。
首先,我覺得學校歧視很正常,真的太正常了,如果要抱怨的話,你只能抱怨自己沒有進入名校。但是,千萬不要動不動說自己學校差,動不動拿自己學校當做自己進不了大廠的借口,學歷只是篩選簡歷的很多標準中的一個而已,如果你夠優(yōu)秀,簡歷夠豐富,你也一樣可以和名校同學一起同臺競爭。
企業(yè)HR肯定是更喜歡高學歷的人,畢竟985,211優(yōu)秀人才比例肯定比普通學校高很多,HR團隊肯定會優(yōu)先在這些學校里選。這就好比相親,你是愿意在很多優(yōu)秀的人中選一個優(yōu)秀的,還是愿意在很多普通的人中選一個優(yōu)秀的呢?
雙非本科甚至是二本、三本甚至是??频耐瑢W也有很多進入大廠的,不過比率相比于名校的低很多而已。從大廠招聘的結果上看,高學歷人才的數(shù)量占據大頭,那些成功進入BAT、美團,京東,網易等大廠的雙非本科甚至是二本、三本甚至是??频耐瑢W往往是因為具備豐富的項目經歷或者在某個含金量比較高的競賽比如ACM中取得了不錯的成績。一部分學歷不突出但能力出眾的面試者能夠進入大廠并不是說明學歷不重要,而是學歷的軟肋能夠通過其他的優(yōu)勢來彌補。 所以,如果你的學校不夠好而你自己又想去大廠的話,建議你可以從這幾點來做:①盡量在面試前最好有一個可以拿的出手的項目;②有實習條件的話,盡早出去實習,實習經歷也會是你的簡歷的一個亮點(有能力在大廠實習最佳?。?;③參加一些含金量比較高的比賽,拿不拿得到名次沒關系,重在鍛煉。
Question2:非計算機專業(yè)的學生能學好Java后臺嗎?我能進大廠嗎?
當然可以!現(xiàn)在非科班的程序員很多,很大一部分原因是互聯(lián)網行業(yè)的工資比較高。我們學校外面的培訓班里面90%都是非科班,我覺得他們很多人學的都還不錯。另外,我的一個朋友本科是機械專業(yè),大一開始自學安卓,技術賊溜,在我看來他比大部分本科是計算機的同學學的還要好。參考Question1的回答,即使你是非科班程序員,如果你想進入大廠的話,你也可以通過自己的其他優(yōu)勢來彌補。
我覺得我們不應該因為自己的專業(yè)給自己劃界限或者貼標簽,說實話,很多科班的同學可能并不如你,你以為科班的同學就會認真聽講嗎?還不是幾乎全靠自己課下自學!不過如果你是非科班的話,你想要學好,那么注定就要舍棄自己本專業(yè)的一些學習時間,這是無可厚非的。
建議非科班的同學,首先要打好計算機基礎知識基礎:①計算機網絡、②操作系統(tǒng)、③數(shù)據機構與算法,我個人覺得這3個對你最重要。這些東西就像是內功,對你以后的長遠發(fā)展非常有用。當然,如果你想要進大廠的話,這些知識也是一定會被問到的。另外,“一定學好數(shù)據機構與算法!一定學好數(shù)據機構與算法!一定學好數(shù)據機構與算法!”,重要的東西說3遍。
Question3: 我沒有實習經歷的話找工作是不是特別艱難?
沒有實習經歷沒關系,只要你有拿得出手的項目或者大賽經歷的話,你依然有可能拿到大廠的 offer 。筆主當時找工作的時候就沒有實習經歷以及大賽獲獎經歷,單純就是憑借自己的項目經驗撐起了整個面試。
如果你既沒有實習經歷,又沒有拿得出手的項目或者大賽經歷的話,我覺得在簡歷關,除非你有其他特別的亮點,不然,你應該就會被刷。
Question4: 我該如何準備面試呢?面試的注意事項有哪些呢?
下面是我總結的一些準備面試的Tips以及面試必備的注意事項:
- 準備一份自己的自我介紹,面試的時候根據面試對象適當進行修改(突出重點,突出自己的優(yōu)勢在哪里,切忌流水賬);
- 注意隨身帶上自己的成績單和簡歷復印件; (有的公司在面試前都會讓你交一份成績單和簡歷當做面試中的參考。)
- 如果需要筆試就提前刷一些筆試題,大部分在線筆試的類型是選擇題+編程題,有的還會有簡答題。(平時空閑時間多的可以刷一下筆試題目(??途W上有很多),但是不要只刷面試題,不動手code,程序員不是為了考試而存在的。)另外,注意抓重點,因為題目太多了,但是有很多題目幾乎次次遇到,像這樣的題目一定要搞定。
- 提前準備技術面試。 搞清楚自己面試中可能涉及哪些知識點、那些知識點是重點。面試中哪些問題會被經常問到、自己改如何回答。(強烈不推薦背題,第一:通過背這種方式你能記住多少?能記住多久?第二:背題的方式的學習很難堅持下去!)
- 面試之前做好定向復習。 也就是專門針對你要面試的公司來復習。比如你在面試之前可以在網上找找有沒有你要面試的公司的面經。
- 準備好自己的項目介紹。 如果有項目的話,技術面試第一步,面試官一般都是讓你自己介紹一下你的項目。你可以從下面幾個方向來考慮:①對項目整體設計的一個感受(面試官可能會讓你畫系統(tǒng)的架構圖;②在這個項目中你負責了什么、做了什么、擔任了什么角色;③ 從這個項目中你學會了那些東西,使用到了那些技術,學會了那些新技術的使用;④項目描述中,最好可以體現(xiàn)自己的綜合素質,比如你是如何協(xié)調項目組成員協(xié)同開發(fā)的或者在遇到某一個棘手的問題的時候你是如何解決的又或者說你在這個項目用了什么技術實現(xiàn)了什么功能比如:用redis做緩存提高訪問速度和并發(fā)量、使用消息隊列削峰和降流等等。
- 面試之后記得復盤。 面試遭遇失敗是很正常的事情,所以善于總結自己的失敗原因才是最重要的。如果失敗,不要灰心;如果通過,切勿狂喜。
一些還算不錯的 Java面試/學習相關的倉庫,相信對大家準備面試一定有幫助:盤點一下Github上開源的Java面試/學習相關的倉庫,看完弄懂薪資至少增加10k
Question5: 我該自學還是報培訓班呢?
我本人更加贊同自學(你要知道去了公司可沒人手把手教你了,而且?guī)缀跛械墓径紝ε嘤柊喑錾挠衅?。為什么有偏見,你學個東西還要去培訓班,說明什么,同等水平下,你的自學能力以及自律能力一定是比不上自學的人的)。但是如果,你連每天在寢室堅持學上8個小時以上都堅持不了,或者總是容易半途而廢的話,我還是推薦你去培訓班。觀望身邊同學去培訓班的,大多是非計算機專業(yè)或者是沒有自律能力以及自學能力非常差的人。
另外,如果自律能力不行,你也可以通過結伴學習、參加老師的項目等方式來督促自己學習。
總結:去不去培訓班主要還是看自己,如果自己能堅持自學就自學,堅持不下來就去培訓班。
Question6: 沒有項目經歷/博客/Github開源項目怎么辦?
從現(xiàn)在開始做!
網上有很多非常不錯的項目視頻,你就跟著一步一步做,不光要做,還要改進,改善。另外,如果你的老師有相關 Java 后臺項目的話,你也可以主動申請參與進來。
如果有自己的博客,也算是簡歷上的一個亮點。建議可以在掘金、Segmentfault、CSDN等技術交流社區(qū)寫博客,當然,你也可以自己搭建一個博客(采用 Hexo+Githu Pages 搭建非常簡單)。寫一些什么?學習筆記、實戰(zhàn)內容、讀書筆記等等都可以。
多用 Github,用好 Github,上傳自己不錯的項目,寫好 readme 文檔,在其他技術社區(qū)做好宣傳。相信你也會收獲一個不錯的開源項目!
Question7: 大廠到底青睞什么樣的應屆生?
從阿里、騰訊等大廠招聘官網對于Java后端方向/后端方向的應屆實習生的要求,我們大概可以總結歸納出下面這 4 點能給簡歷增加很多分數(shù):
- 參加過競賽(含金量超高的是ACM);
- 對數(shù)據結構與算法非常熟練;
- 參與過實際項目(比如學校網站);
- 參與過某個知名的開源項目或者自己的某個開源項目很不錯;
除了我上面說的這三點,在面試Java工程師的時候,下面幾點也提升你的個人競爭力:
- 熟悉Python、Shell、Perl等腳本語言;
- 熟悉 Java 優(yōu)化,JVM調優(yōu);
- 熟悉 SOA 模式;
- 熟悉自己所用框架的底層知識比如Spring;
- 了解分布式一些常見的理論;
- 具備高并發(fā)開發(fā)經驗;大數(shù)據開發(fā)經驗等等。