阿里,華為,騰訊,小米2017實習面試經歷
首先自我介紹,非985,非211學校,主要從事java後臺開發,大一至現在做過兩個專案(都不深),有一段去小公司的實習經歷,今年剛到學校2月底才開始準備實習,陸續投了小米(我是米粉),阿里,華為,騰訊,京東,網易,今日頭條等一系列網際網路公司,小米,騰訊,今日頭條掛一面,網易筆試過了和華為衝突了,去華為面試了,只拿到了阿里的java後臺offer,華為應該算是口頭offer吧(不過據說城裡套路深,有可能是面試官詐你),然後其他幾家公司就不打算去面試了。
小米麵試
小米是最早的,向來重視演算法出名。
準時電話打過來,首先自我介紹,然後倒著輸出連結串列元素(壓入佔輸出),然後問如果要修改連結串列元素呢(也就是3個指標翻轉連結串列了),然後讓手寫連結串列倒數第k個數(兩個指標跑,一個先跑k步,後面一個再跑),寫好後發郵件給他,老實說以前面試都是說一說演算法就行,第一次這樣寫程式碼發過去,有點緊張,哆哆嗦嗦開啟eclipse寫完了發過去.
第二題:給定一個字串如果某個字元是? 後面可以表示任意多個字元,如果是.說明可以表示一個字元,現在給定兩個序列,問第二個能否符合第一個序列,卡住了,想了個遞迴發過去了。
第三題:設計紅包演算法。這個想想不是簡單麼,每一個紅包隨機啊,最後一個總數減就是了,後來面試官提醒必須至少保證每一個紅包為0.01,然後改成先每一個都放0.01,再隨機,估計有更好的方法。
你還有什麼想說的:
說了自己是米粉,買過小米4,小米5,小米耳機,小米充電寶,關注過小米b站賬號,希望能加入小米.面試官來興趣了,來說說對小米6有啥期待,希望用上澎湃麼,一臉懵逼,說了句要是澎湃比曉龍835好就行,只聽見面試官爽朗的笑聲....
結果:再無訊息,第二題和第三題答得都不好。
阿里面試(4面加hr)
阿里是在牛客網上找的內推,順利過了簡歷關,然後3月2號打電話過來。
1,自我介紹。
2,專案介紹。
3,實習介紹。
4,java基礎(真記不得了,這個真不難)
5,java記憶體模型(擼完深入理解java虛擬機器後都是菜)
6,java多執行緒(這個地方就問了同步鎖,可重入鎖,讀寫鎖,3面問的比較深)
7,mysql事務,儲存過程,檢視,索引,分割槽全家桶(問了很多點,老實說,答得不好,所以一面完惡補了下)
8,資料結構會哪些(我去,我還以為阿里會問些高大上的呢,答棧佇列樹圖,問了樹的定義....)
9,問會不會堆,怎麼建堆,bilibala講了兩種方法,然後問堆排序怎麼實現,bilibala講完還說能用來做求第k大數.
10,第k大數還能用哪些方法,各自優缺點(程式設計之美上的)
11,說一下7層,4層協議,說一下各自每一層幹啥的
12,tcp和udp區別,如何用udp實現tcp
13,作業系統全家桶(lru,磁碟尋道,死鎖條件)
14,有啥想問的麼
感覺都是基礎,問的非常細,但是資料庫答得不好,後來惡補了下,總共問了1個半小時還要多....
二面:
二面爽歪歪,面試官說小夥子,你寫部落格啊,來來來,我們問幾個你部落格上寫的問題,那絕壁都會啊..
然後問了設計迷宮遊戲的時候怎麼設計生成迷宮的演算法,怎麼設計遊戲難度,拼圖遊戲怎麼保證一定有解(n*m分奇偶性討論)
然後沒想到面試官也會計算智慧,遺傳退火蟻群禁忌搜尋聊的都很開心,扯一扯退火的公式,遺傳的流程,選擇下一代的方式啊,禁忌表的生成
還和我說什麼資訊理論,我擦,不會,不過沒事,能感覺出來面試官已經挺滿意的了.
半小時就結束了,感覺和麵試官聊的挺開心的,當時就覺得這輪妥了。
三面:
瘋狂問多執行緒與併發相關知識:
建立執行緒3種方式
執行緒池的使用,順便扯到了單例模式,懶漢餓漢,多執行緒下保證懶漢的同步性及其優化
wait和sleep
wait和await
concurrent包
你做的oj最多支援過多少人同時訪問,做過負載均衡麼,扯一扯dns負載均衡,圖片伺服器,反向代理負載均衡,負載均衡的演算法,之前幾種反向代理的優缺點
知道網路安全麼,隨便聊聊https,ddos之類的(有個做ctf的室友就是好)
資料庫隔離模式,對應的髒讀,不可重複讀,幻讀
如何實現索引,b+樹與b樹區別
hashmap原始碼,arraylist原始碼(arraylist原始碼可以扯一扯arraylist在序列化上的優化,然後扯一扯序列化,還可以順便扯一扯網路程式設計)
40多分鐘吧,答的一般般,可能是原始碼答得比較好,其他的說真的也就是泛泛而談.
四面:
絕壁是壓力面,聊不到3句話就說麻煩用簡單幾句話概括一下,然後語氣非常凝重
載入資料庫的過程,反射就可以扯一扯類載入,雙親委派之類的
然後問這樣會導致SQL注入麼,不會,因為使用了preparestatement
然後問為什麼會這樣......一臉懵逼,反正隨便答答
問了幾個框架,貌似是分散式程式設計裡的,聽都沒聽過
然後問了能實習時間,為什麼不考研
大概半小時就結束了,不是特別滿意,就第一個答上來了,後面就是一臉懵逼了
hr面:
1,人生經歷
2,人生最大挫折
3,在校除了學習還幹什麼(打乒乓球啊,扯一扯從小到大拿的比賽的獎)
4,有妹子沒有,喜歡她什麼
5,我要是掛了你,你會怎麼樣......(這個問題一出,我就感覺好虛)
等了一個月後於4月14日晚收到offer意向書,當時那種感覺,這輩子不知道還能不能有機會感覺到
總結:沒有牛逼的專案,沒有牛逼的學校,只能拿基礎來填,注意他問你一個問題,你要找個角度展開,面試官可能比較滿意這種.
多執行緒,資料庫,java集合這幾個都要了解到非常深的地步才能不變應萬變.
騰訊面試:
1,去面試官下榻的房間,上來做兩道題目,生產者消費者問題,還有一個就是給一篇文章查敏感詞彙的,很快寫完了
2,問如果共享區空間溢位了呢,黑人問號,沒聽懂...
3,我們換個問題,如何判斷某個埠是否開啟,建立socket連線,發信息,面試官說如果是udp呢,無狀態呢...不會
4,資料庫索引hashmap和b+樹區別
5,談談滑動視窗模型,扯了扯,問用什麼資料結構設計滑動視窗...連結串列,陣列,佇列,所有線性結構都答了一遍
5,知道arp不,知道,先查表,後廣播,再單播回去,再問,用什麼資料結構設計這張表,建hashmap,空間不夠,怎麼維護,秒想到lru,答類似lru,把最遠未使用的拿掉,維護一個時間,再次訪問就更新時間,問還能優化麼,想到o(n)一般優化成o(logn)麼,想到建一個堆,每一個堆中元素指向hashmap的鍵,然後維護堆即可,面試官還不滿意,答曰不會
結果:1面掛,可能是因為那個面試官是c++的,所以沒聊一些java內容,聊起來有點吃力,計算機網路只知道東西,再問深一點就不行了
華為:
一面:去了先簽到,然後等著喊你,問專案,現場還帶筆記本演示了下 ,這就下一輪了...
二面:聊人生,聊了實習經歷,學到了什麼,對華為的認識,有沒有興趣搞資訊保安,沒了...
總結:華為面試1看人品,2看專案,有專案啥都好說。另外華為很多面試官不會注意問你技術問題,你可以自己表現自己,臨走那個面試官說小夥子不錯,5個工作日給你發offer,腿一踉蹌,這就等offer了...
更新,拿到華為軟體開發崗位offer