1. 程式人生 > >一個非科班17屆畢業生的求職網際網路經歷(騰訊、美團、攜程等)

一個非科班17屆畢業生的求職網際網路經歷(騰訊、美團、攜程等)

個人是2017屆某高校自動化專業研究生,正式準備是從二月底開始。因為到四月底還在實習,所以三月四月花的時間也不是很多,主要看書時間是五六七八共四個月。

先總結一下,截止到2016年10月30號,內推收到offer的有,攜程、金蝶、科大訊飛、數字政通,校招收到的騰訊、美團。還有兩家華為和中興,因為意向地點是成都,崗位少,還在等結果。

當時9月23號下午,面完騰訊終面,就打定主意不面了,畢竟因為內推拿到幾個了,再加上能面得大公司也面了,至於會不會騰訊美團華為中興這些能不能過,也就沒太在意了。算起來,加上內推,也就面了十來個公司。也不用一味追求太多的面試,因為很多時候你簡歷寫好了,別人問的東西都大同小異了,因為每次面試個人簡介,介紹專案以及問資料庫底層原理JAVA知識等,都是重複的。

一、3月份到6月份實習階段

1.1阿里實習內推

    一月底被老師派到一個初創公司做一個合作專案,公司專案用JAVA,一直學習C++,大概年後也就是二月二十號,開始轉學JAVA。阿里大概是三月底找人投的,把做了十天不到的專案寫到簡歷上了。四月五號接到通知預約時間,約了七號的時間。準時接到面試電話,比較坑的是,當時公司附近房間在裝修,一直有點吵,大概18分鐘。

1、 介紹下專案的整體流程,以及負責的部分。專案主要是java編寫,用到Hadoop平臺的HBase,以及mysql。

2、 專案中的難點。

3、 隨便解釋一個熟悉的排序實現原理。

4、 介紹下HBase和Mysql資料的區別(專案中有用到HBase)

5、 Hadoop平臺Map/reduce介紹

6、 java中的介面、抽象類

再加幾個java的基礎認識,反正當初只學了十多天,基本沒答上,再加上專案也不熟悉,一面掛。


1.2阿里實習

    阿里實習招聘,大概是四月二十幾號做的筆試,阿里筆試主要是智力題邏輯題概率題等,再加上程式設計是設計題,很僥倖的通過了。設計題記得一個是:分散式系統設計,我大概按照HDFS的思路寫了程式碼。但是因為後面回武漢學校了,面試地點在成都,就沒參加。

1.3其他實習

    網易、騰訊錯過筆試,百度筆試過了,一面掛。好未來面試一面掛,遠景能源溝通了下讓做c++,沒面。後面還單獨面試了個百度文學的,也是一面掛。

   

    反正實習面試全掛,主要還是JAVA學的時間太短,準備不充分。


二、6月份到8月底內推階段

    基本上的網際網路公司都投了,簡歷篩選通過也就三四個,簡直慘。雖然基礎還可以,但是專案太簡單,篩選簡歷太看重專案經歷了。BAT、美團、滴滴、京東等內推全掛,網易網際網路錯過筆試。過了的就五個,一個百度高校技術匯(這個不算校招內推吧,百度正式內推八月多的),一個數字政通(武漢有研發中心),攜程,科大訊飛,金蝶軟體。


2.1 百度高校技術匯面試

百度六月份在學校舉辦了百度高校技術匯的講座,現場投遞了簡歷,意向職位是軟體開發和JAVA後臺。這個比百度正式內推早兩個月。簡歷篩選通過,分配到雲系統平臺,約了個時間週日電話面試。內容如下:

1、 專案介紹:介紹了專案電商平臺,主要涉及HBase和Mysql 資料庫,java語言,ETL處理以及JFinal MVC框架。

2、 TCP的三次握手過程,為何不是四次或者兩次。

3、 ARP的是什麼協議,是怎樣實現arp快速獲取的。

4、 Linux中熟悉哪些命令,檢視系統cpu和程序的命令。

5、 Linux中,怎麼樣進入核心態

6、 核心態和使用者態的區別

7、 對作業系統哪一塊比較熟悉,我說對程序同步和共享和鎖熟悉,因為我當時還沒看作業系統,看了java併發程式設計,所以這樣說的。

8、 作業系統死鎖的條件,以及預防和避免的方式

9、 生產者消費者模型介紹,使用虛擬碼描述過程(電話面試描述程式碼,簡直醉了),雖然用java程式碼知道怎麼寫,可電話面試啊,我寫好java讀給他聽,反正不知道聽懂麼,就沒問了。

10、演算法:求二叉樹中,節點距離的最大值,虛擬碼描述。(我就無語了,電話面試就不能說說思路就好麼)我先說了思路,用JAVA程式碼寫了唸的(唸的太難受了)。

11、演算法:二分查詢,虛擬碼描述。我說了思想,他說誰都知道思想,我想看看邊界處理是否正確。又用java唸的,不過好像很不滿意。

12、演算法:刪除某個連結串列的倒數第n個節點。說了思想,我說的是一個指標h1,先走n-1步,設定h2指向頭,然後一起走到末尾,最後改變將h1指向h1的下下個指標。我覺得是沒問題的,他一直問,確不確定是先走n-1個,我說確定,反正面試官很懷疑。下來思考了,確實是對的,至於是不是n或者n-1,和實現有一定關係。

總結下來:四個程式碼題,現場面的話肯定能寫,都是見過的題目,但是電面這個過程真是難受,面完後特別不舒服。沒收到後續,掛了。

 

2.2 數字政通內推

時間八月中旬吧,投了無數公司沒反應,同學說bbs上有個武漢本地的公司在招人,就投簡歷。第二天就收到電話,預約現場面試。

兩點到,發了筆試題,讓一個小時交,四五十分鐘做完交了。

筆試:

1、 計算1/1!+ 1/2! +1/3! +…+ 1/n!。當1/n! 小於某個值就不計算後續項了。題目是流程圖,有5個空,蠻簡單的。

2、 找到無序陣列的最大k個數,也是流程圖填空。

3、 資料庫查詢語句編寫,五個空。

總的15個空,面試的時候大概看到了,錯了三個左右吧。

一面二面:

1、 專案的簡單介紹

2、 抽象類和介面區別

3、 Java多執行緒實現方式

4、資料庫查詢:查詢某個表裡某門課程最高的成績。當時不熟悉,用limit實現的,後面提示用聚合函式,才想起來。

5、HBase資料庫和Mysql資料庫區別

6、mysql資料庫的索引等

    能想起的大概就這些,反正比較注重JAVA語言本身和Mysql基礎,連虛擬機器也沒問到。如果熟悉這兩塊,應該就沒太大問題。

三面總經理面:

    問了地點意向,為何選擇留著武漢,以及未來的規劃,有沒有女朋友等等,就和普通的HR差不多。

 

2.3 攜程內推

八月二十號左右,收到攜程的電話,簡直高興壞了,終於有一家網際網路公司給面試機會了。立即說,可以現在面。

一面:

1、 專案介紹,主要網HBase和Mysql資料庫引。

2、 專案中具體負責的部分,有沒有用到比較難的演算法,我說沒有,就是一些簡單的轉換處理,演算法部分專門有人負責。

3、 專案沒啥東西,他覺得沒啥可問。就問了資料庫的問題:mysql資料庫中索引的級別有哪幾種,以及mysql資料庫預設的隔離級別。

大概七八分鐘,應該是簡歷面,還好資料庫比較熟悉,他就預約下一次視訊面試時間了。

二面:

1、 視訊面試,用的是牛客網的系統。題目:一句話中單詞順序反轉,單詞本身不反轉,“Iam Tom”得到“Tom am I”,可以線上測試結果正確性。大概十五分鐘寫完除錯正確。

2、 定義二叉樹節點,先序遍歷列印二叉樹,用遞迴方式和非遞迴方式。提前一天準備了下非遞迴方式,很順利寫完了,部落格中也有總結。因為寫出來的非遞迴方式很簡潔,面試官感覺不可信,懷疑了一波,我就詳細解釋了幾分鐘,好像他沒明白,就跳過了。

3、 HashMap實現原理介紹。有沒有看過hashmap原始碼,我說沒有,我說了解原理。

4、 HashMap衝突時,是怎麼插入的元素,是插入在連結串列頭部還是尾部。確實沒看過,就按照自己理解說是頭部,解釋了理由,蒙對了。

5、 Hashmap併發出現什麼情況,為什麼。併發導致死迴圈,原因沒答上來。(併發擴容導致)

6、 ConcurrentHashMap實現原理介紹

大概四五十分鐘吧,程式碼題很順序,二叉樹非遞迴遍歷應該加分不少(可能他也沒這麼寫過),hashmap原始碼沒看,但按照理解答對了一些。就死迴圈的原因沒回答上。

大概一週左右,發了錄用通知書的郵件,沒有標註實習錄用。應該是面得不錯,給了直接錄用通知,看牛客網很多人說拿到實習錄用通知,還讓九月份去實習。反正算是很幸運。

 

2.4 科大訊飛內推

科大訊飛我是六月份就投了,一直沒有訊息,直到八月二十幾號才收到通知,讓去武漢研發中心,現場筆試和麵試。

筆試:大概一個小時的題目,單選20個,多選10個,填空5個,程式設計2個。題目非常基礎,但涉及的內容很廣。100多人筆試,最後筆試通過人數35個左右,刷人還是蠻厲害的。除了程式設計肯定是正確的,好多選擇都沒底,最後幸運的通過了。

一面(二對一):

1、 專案經歷

2、 專案中的最大的困難,怎麼解決的

3、 怎麼優化一個伺服器的效能(主要說了優化程式本身,如JVM等;優化資料庫查詢語句效能;以及負載均衡等)

4、 負載均衡怎麼實現(說nginx可以實現),nginx實現原理(懵了)

5、 有沒用使用過快取軟體,伺服器效能可以用快取解決(不知道)

6、 HBase和Mysql區別

7、 Mysql索引,什麼情況下不會使用索引

8、 Mysql事務,以及隔離級別

反正JAVA語言本身問得很少,主要是圍繞專案,問了很多效能優化相關的,以及資料庫原理相關的。雖然專案很簡單,但是專案涉及的HBase和Mysql資料庫看了底層實現,做了很多對比,基本沒有太大問題。

    二面(二對一):

1、 常用的排序演算法,以及快速排序的實現原理

2、 快速排序的最差情況分析,如何避免

3、 意向工作地點排序,武漢和合肥,果斷先武漢後合肥

4、 假如你所在小組,有人的程式bug很多,你會怎麼做?以及如果那個人是你會怎麼做?

5、 期望工資…

二面基本不問技術,反正就是各種HR面的問題。說是一週後給通知,當時沒抱太大希望的。不過一週後,收到錄用通知了,很意外。

 

2.5 金蝶軟體內推

公司規模不大,內推的,還有個筆試在八月十五號左右,一個小時,全是選擇問答好像,沒有程式設計。筆試完了,預約的電話面試,技術就一面。

一面:

1、 抽象類和介面區別

2、 Hashmap實現原理

3、 Concurrenthashmap實現原理

4、 Java併發瞭解哪些

5、 ThreadLocal是什麼,如何實現的

6、 Spring 的IOC和AOP介紹

7、 Hibernate中,如何實現每個getConnection獲取的連線不一樣,並且下次獲取時返回的還是他原來的那個?(沒答出來:面試官說是ThreadLocal)

8、 資料庫查詢語句相關

都是非常基礎的問題,反正面試中很順利,幾天後就通知過了預約了HR面。HR面都差不多,也是大概在九月初收到錄用通知書了。

    總的說來,內推階段面試了五個,四個拿到offer了,這是自己完全沒有想到的。


三、9月份正式校招階段


3.1 華為面試

    一面:

    1、專案介紹,問到最後面試官覺得專案很簡單,我說主要是通過專案瞭解了資料庫底層的東西,就讓我講講Mysql的索引和加鎖知識。

    2、你熟悉計算機網路,說說計算機路由資訊是怎麼獲取的。

    3、熟悉設計模式是吧,說說工廠方法模式吧。

    4、熟悉資料結構和演算法,講一個紅黑樹的使用場景,以及為何使用。

    5、你以前考過二級C++,那你看下這段程式碼輸出什麼。大概意思是,在一個函式裡面,給一個形參指標malloc空間,但是這個分配的空間不能傳遞到實參中。依稀記得是這樣,反正就是蒙對了。

    總體來說,華為的四個題目還是有一定難度,都回答出來了。面試官最後還跟我瞎聊了幾分鐘,說我測評沒過,並好心提醒測評的一些注意事項。

    二面:二面沒啥說的,基本沒問技術,問意向地點,回答說成都。面試官說成都只有雲端計算雲端儲存,看你做過Hadoop和Hbase相關的,那隻要還有崗位,就安排過去。

 

3.2 美團面試

    美團面試挺效率的,準時去的話,等待時間十分鐘左右,非常贊。一面過了,馬上二面,然後當晚通知第三天覆試。複試當天,三面面完馬上四面,反正很快就搞定了。

    一面二面:

1、棧和佇列的區別

2、手寫程式碼:刪除一個連結串列的倒數第n個。

3、手寫程式碼:用基本陣列實現棧。注意幾點:擴容;使用泛型;設定容量最大值,不能無限擴容;棧初始化大小應在建構函式中可以設定。(尷尬,只考慮了擴容這一點,後面三點是面試官看了後要求的)

4、List和set區別

5、Mysql索引原理和特點

6、垃圾收集演算法,CMS的缺點(記憶體碎片化,大物件需要壓縮緊湊)

7、Https和http的區別

8、Https實現細節,如何加密的,傳送時本地需要加密麼(不瞭解,沒回答上)

9、解釋什麼是二叉查詢樹

10、解釋什麼是堆

11、哈夫曼編碼的期望長度,四個的概率分別是0.4,0.3,0.2,0.1。

12、Maven和Gradle分別用什麼語言配置(簡歷寫有用過,說了語言後又講了這兩個的優缺點)

13、說說常用的linux命令

14、怎麼優化資料庫的效能

15、1G的資料,如何使用100M的記憶體進行排序。(外排歸併的思想)

   

三面四面:

1、專案中遇到的問題,怎麼解決?

2、專案中,意識到自己薄弱的地方?

3、暑假為什麼沒去實習,在做什麼?

4、你對HBase和Mysql比較熟,講一講這兩個最原理的實現、特點(講mysql技術內幕和learning HBase中的拉出來,講了十多分鐘)

5、HBase和Mysql是怎麼學習的?

6、個人部落格中的內容,怎麼自學的?

7、為什麼意向地點是上海?

8、對美大有什麼瞭解,生活中常用美團的什麼功能?

9、如果拿到美大的offer,你覺得是什麼原因?

10、平時的愛好(最好分學習方面、生活方面)

11、為自己前三次的面試打分

 

3.3 騰訊面試

    一面:

    1、自我介紹,專案介紹、專案中的難點。

2、你以前學過C++,為何轉做JAVA,以後想不想做C++(能進當然想了),我說我學了很多語言無關的東西,並且C++之前也用過一年,因此沒有問題。

    3、程式碼:實現linux命令的cd和pwd功能,保證不會有非法輸入,十分鐘寫完。剛開始要我用c++寫,五六分鐘好多東西實在想不起來,就讓用JAVA寫了。細節蠻多的,只寫了大概十來行程式碼,沒寫完,講讓我講了思路。(挺慘的)

    4、程式碼:有兩個字串陣列a,b,長度為n,m,查詢b中的所有字元是不是在A中出現了。時間複雜度要求O(m*n)以下。

    5、兩個檔案中,分別有很多字元,記憶體放不下任何一個檔案,判斷有多少相同的字元。記憶體和時間儘量小。(我回答:先外排,再根據歸併的思想逐一比較。最後問面試官答案:用hash,將hash相同的放在一個檔案中,再進行比較)

    6、HBase底層原理和優勢

    7、Hadoop和Spark比較,shuffle過程區別(只寫了了解,按照記憶隨便說的= =)

    8、覺得比較經典的資料結構(我說了紅黑樹、字典樹)

    面完了,沒抱有太大希望,當晚十二點睡覺時沒有收到通知,想肯定掛了,就睡了。結果早上起來,一點發的二面通知,上午十一點面。

 

    二面:

    一個題目:0 – 40億個連續的QQ號,QQ號的資料隨機分佈在北上廣深四個地點的機房裡。使用者每次請求一個qq號時,需要從他qq號對應的機房去獲取資料。現在只有一臺機器,配置為記憶體32G,硬碟位SATA盤600G,要求設定一種方式,使得使用者請求伺服器時,能快速的給使用者返回qq號所在的機房位置,要求響應滿足2萬條/s。(我知道硬碟訪問速度是ms級別,諮詢了具體的時間回答是10ms)

    反正從最開始用硬碟,面試官提示硬碟肯定不行,後面不用硬碟想出字典樹的方式,但不是最優的,又再次提示,最後想出來了。整個過程40分鐘,做完就叫下一面HR面了。整個過程很懵,能過也是僥倖吧,畢竟面試官引導了兩次。

 

    三面:HR面,和美團的三四面差不多的。

 

3.4 其他面試

    中興面試太水,沒什麼說的。

    五八面試,一面太簡單了,面了一面讓馬上二面,第一當時有事,第二是不想去北京,放棄了。

    京東一面,面試官毫無誠意,問的概念性問題,IOC、AOP介紹,併發介紹等等,並且我專案毫無興趣,具體問題和程式碼沒有問,面了就覺得沒戲。一面掛。

    百度一面,等了四個多小時才面。面試官一女的,上來就問,原因轉語言不,像PHP,我說沒做過,但願意試試。問的全是具體場景題和資料庫題目,反正很難,有的題目也沒明白。一面掛。


四、總結和建議

後面仔細回想下,優勢應該在以下方面:

    1、專案雖然很簡單,但裡面涉及到Mysql和Hadoop的HBase,我看了四本書《深入淺出Mysql》、《Mysql技術內幕:InnoDb儲存引擎》、《Learning Hbase中文版》、《Hadoop權威指南》。前兩本書看兩遍以上,保證問底層和原理都要答上來,後兩本不是很必要,我面試的崗位都是軟體開發或者後臺開發,很多面試官也不一定了解Hadoop和HBase。

    2、JAVA基礎知識。所有可能問到的基礎知識都有所涉及,《JAVA程式設計思想》、《JAVA併發程式設計實戰》、《JAVA併發程式設計的藝術》、《深入理解JVM虛擬機器》、《Spring實戰》、《Head First設計模式》。

    3、資料結構和演算法。嚴蔚敏的《資料結構》是上課學的,複習時看了《劍指offer》、《程式設計師面試金典》、《程式設計師程式碼面試指南》三本書,第三本買的晚,沒有完全看完。這些題目最好先在牛客網儘量刷完一遍,再看書。除外,牛客網的演算法直播課也基本看了一遍。

    4、其他基礎知識。《作業系統教程(第四版)》、《TCP/IP協議詳解》、《鳥哥的Linux私房菜基礎篇》。

    如果求職意向是軟體開發和後臺開發,在時間分配上,個人覺得,資料庫佔1/3的時間,資料結構算法佔1/3的時間,語言基礎及其它佔1/3時間。因為,語言不是最重要的,後臺主要涉及資料庫和演算法,這個基礎一定要好。這可能也是為什麼我拿到騰訊的offer,語言方面一個沒問。