2015我的校招季,阿里、搜狗、百度、蘑菇街面試總結
隨著拿到蘑菇街的offer,我的校招季便算是結束了。現在閒下來,想寫篇總結下之前的校招路,紀念一下。個人水,大神請輕拍。。。
總共參加了4場面試,然後拿到一家offer,然後就沒有然後,自己太懶,沒再去找了。。。
背景:無牛逼競賽經歷,無牛逼專案,無牛逼實習,三無人員,目標JAVA開發。
阿里(1面):
阿里是校招第一家面試,各種忐忑。面試官看上去蠻凶的,先是自我介紹,然後看著簡歷問。
1:專案介紹,說說java socket,服務端如何知道客戶端發生中斷;
2:多執行緒問題,假設有n個執行緒,如何讓它們同時開始執行,不可以邊新建邊start。我說讓所有執行緒一開始都阻塞在一個物件鎖上,然後用notifyAll,面試官不滿意這個回答。
3:實習相關的問題,大量資料情況下資料庫的處理方式,我說採用的分表,然後問分表如何實現,隨意說了點,面試官依舊不滿意,然後寫SQL語句。
4:B樹如何實現,我畫了個圖,然後說了些B樹的性質,面試官讓我程式碼實現,寫了一會,寫不下去了。。。
5:演算法題:假設甲乙兩人分隔兩地,甲知道甲乙兩人間距離,乙什麼都不知道但可以打電話問甲兩人間距離,乙可以每走10分鐘打電話問甲兩人間的距離,問如何最少次數的通話使得乙走到甲那裡。
一開始被面試官氣場弄慌了,發揮非常不好。
搜狗(1面):
面試官說搜狗就一輪終面,感覺自己發揮還行,結果還是跪了。。。依舊看簡歷,問問題
1:專案介紹,許可權管理怎麼實現,session、cookie相關問題,快取問題。
2:資料庫相關,索引的實現,B樹B+樹,吸取阿里教訓,特地看過一遍,答得還行。然後問在兩個欄位建索引,不同順序的影響,結合B+樹說了一點。
3:JAVA基礎,記憶體溢位的幾種情況,分別說了棧、堆、方法區出現OutOfMemoryError的情況,然後說了堆的記憶體模型:年輕代(Eden、Survivor)、年老代,然後說了幾種垃圾收集演算法(複製、標誌-整理)。
4:Linux相關,如何檢視磁碟空間佔有情況,如何檢視程序中某執行緒狀態。
5:Tomcat如何實現,說了聯結器、四種容器的實現,又問了tomcat高併發存在的問題,說了下nginx中epoll的實現。
6:演算法題:一個數組,裡面元素先從大到小排列再從小到大排列,如何最優找到最小值。
基本搜狗的問題都回答出來了,結果被刷,無奈。。。
百度(三面):
一面:
1,介紹專案,hibernate幾級快取,mybatis與hibernate的區別,你對兩個框架的理解,隨便答了些。
2,問了Spring的原始碼,ioc、aop如何實現,annotation知道多少,用過哪些annotation,水水地說了一些。然後又問為什麼用SSH不用SpringMVC,答不上來。
3,Java集合相關,List、Set、Map區別,ArrayList、HashMap如何實現,對hashcode方法有什麼理解,有準備答得還行。
4,談了些實習做的事。
5,演算法題:給你一個字串,輸出該字串的全排列(去重),寫完程式碼,和麵試官說了下思路,面試官說複雜度太高,如何優化,沒優化出來,面試官說可以優化到線性複雜度,讓我回去想。
二面:
1,介紹專案。
2,設計模式相關,說說你知道的設計模式,一一列舉,然後讓我實現介面卡模式,寫了程式碼,面試官又問,介面卡模式和中介模式區別,按照自己理解說了點。
3,介紹實習。
4,執行緒池如何實現,於是把自己寫的執行緒池說了一遍。
5,java記憶體模型,垃圾收集。
6,演算法題1:一個數組,有三個數出現超過1/4,找出這三個數,要求時間複雜度O(n),空間複雜度O(1)。這道題和麵試官討論了好久,當時有點亂,不過思路應該是對的。演算法題2:非遞迴實現二叉樹深度,寫完程式碼,面試官看了沒說什麼,然後時間差不多到了,就回去了。
三面:
1,介紹專案,介紹實習,面試官興趣不大。
2,說說網際網路發展趨勢的看法,你最常用的app,對O2O的看法等問題。
3,你最自豪的事,你和周圍同學相比有什麼優勢。
4,跟我介紹了百度的員工培訓,好像很厲害的樣子,還要修學分。。。
百度基本上把我知道的都問了個遍,等於幫我梳理了下知識,雖然沒進,但收穫很大。
蘑菇街(拿到offer):
一面:
1,介紹專案,簡歷上寫的專案問了個遍,介紹實習,實習遇到的問題等等。
2,java記憶體模型,垃圾收集,java socket相關。
3,tomcat如何實現的。
4,執行緒池如何實現的。
5,職業規劃。
二面:
二面兩個人,一人先是問了專案和實習,又問了執行緒池、tomcat、java記憶體模型。
另一人就是聊天了,你印象最深的事,聊聊經歷之類的,問面過哪些公司,因為什麼原因沒過,又問了假設好幾個offer,如何排序的。
蘑菇街是我之前挺想進的,又正好在杭州,於是拿到offer後就不再找了,最重要的還是因為懶。
推薦書籍:
深入理解作業系統,現代作業系統;
計算機網路
組合數學
大話設計模式
深入理解java虛擬機器:jvm高階特性與最佳實踐
how tomcat works
劍指offer、程式設計之美、
推薦網站:
http://hawstein.com/archive.html
http://leetcode.com/
July結構之法演算法之道
總結:
因為之前準備比較充分,筆試都能通過,成績也還不錯。但自己做的專案在面試官看來沒啥深度,沒有某方面能力很突出,這是自己的硬傷,面試官不重視你不會什麼,而是重視你會什麼,所以如果有某方面知道得比較深那是極好的(比如:網路程式設計、作業系統、資料庫、演算法等等)。