首先自我介紹,非985,非211學校,主要從事Java後台開發,大一至現在做過兩個項目(都不深),有一段去小公司的實習經歷,今年剛到學校開始準備實習,陸續投了小米,阿里,華為,騰訊,京東,網易,今日頭條等一系列網際網路公司。
小米,騰訊,今日頭條掛一面,網易筆試過了和華為衝突了,去華為面試了,只拿到了阿里的java後台offer,華為應該算是口頭offer吧,然後其他幾家公司就不打算去面試了。
小米
小米是最早的,向來重視算法出名。
準時電話打過來,首先自我介紹,然後倒著輸出鍊表元素(壓入占輸出),然後問如果要修改鍊表元素呢(也就是3個指針翻轉鍊表了),然後讓手寫鍊表倒數第k個數(兩個指針跑,一個先跑k步,後面一個再跑),寫好後發郵件給他,老實說以前面試都是說一說算法就行,第一次這樣寫代碼發過去,有點緊張,哆哆嗦嗦打開eclipse寫完了發過去。
第二題:給定一個字符串如果某個字符是? 後面可以表示任意多個字符,如果是.說明可以表示一個字符,現在給定兩個序列,問第二個能否符合第一個序列,卡住了,想了個遞歸發過去了。
第三題:設計紅包算法。這個想想不是簡單麼,每一個紅包隨機啊,最後一個總數減就是了,後來面試官提醒必須至少保證每一個紅包為0.01,然後改成先每一個都放0.01,再隨機,估計有更好的方法。
你還有什麼想說的:
說了自己是米粉,買過小米4,小米5,小米耳機,小米充電寶,關注過小米b站帳號,希望能加入小米.面試官來興趣了,來說說對小米6有啥期待,希望用上澎湃麼,一臉懵逼,說了句要是澎湃比曉龍835好就行,只聽見面試官爽朗的笑聲....
結果:再無消息,第二題和第三題答得都不好。
阿里(4面+hr)
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多分鐘吧,答的一般般,可能是源碼答得比較好,其他的說真的也就是泛泛而談.
四面:
- 加載資料庫的過程,反射就可以扯一扯類加載,雙親委派之類的
- 然後問這樣會導致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內容,聊起來有點吃力,計算機網絡只知道東西,再問深一點就不行了
華為
編程題三題兩道水題還有一道迪傑斯特拉加輸出路徑。http://blog.csdn.net/fengsigaoju/article/details/65934742
性格測試:這個感覺是華為面試中最難的環節,第一次沒過,收到重測郵件第二次才過得,可以參考http://bbs.tianya.cn/post-516-150970-1.shtml
一面:去了先簽到,然後等著喊你,問項目,現場還帶筆記本演示了下 ,這就下一輪了...
二面:聊人生,聊了實習經歷,學到了什麼,對華為的認識,有沒有興趣搞信息安全,沒了...
總結:華為面試1看人品,2看項目,有項目啥都好說。另外華為很多面試官不會注意問你技術問題,你可以自己表現自己,臨走那個面試官說小伙子不錯,5個工作日給你發offer,腿一踉蹌,這就等offer了...