渣碩一枚,春招投了很多簡歷,通過面試也學到和很多東西,分享一下面經。
阿里電面
專案,主題模型
一個資料流,只能訪問一次,如何保證訪問每個資料的頻率相同
c++11 future和promise
epoll,libev優點
建構函式能不能重寫(沒聽清要問什麼)
物件導向的優點:更易維護,增加程式碼的重用
大文字如何排序
最優二叉樹(我說資料結構比較熟,他說那我考你一個最優二叉樹。沒答出來,以為是排序二叉樹。。如果問我哈夫曼樹我就會了。。)
棧和佇列
棧空間,堆空間,靜態區
棧區:有編譯器自動分配釋放,堆區:由程式設計師分配釋放
靜態區:全域性變數和未初始化的靜態變數
kmeans
mongodb瞭解嗎?
linux如何擴大分割槽
之後探討了一下今後發展方向,我說研究和工程比較偏工程,他好像不怎麼滿意的樣子,已掛。
騰訊電面(沒內推,被撈起來了):
map用的是紅黑樹,和AVL樹的區別
map插入和刪除需要注意什麼
mongodb 和 mysql 差別
IO多路複用方式的區別
如何檢視函式所佔用的記憶體
gdb如何debug
python資料處理庫,numpy和pandas
C++多型是怎麼實現的,哪些函式不能是虛擬函式(建構函式,靜態函式,inline函式)
25u-50結果是多少,u代表unsigned
malloc(0)返回什麼: 如果請求的長度為0,則標準C語言函式返回一個null指標或不能用於訪問物件的非null指標。
回覆等通知,不過我感覺掛了,微信裡面也查不到狀態。
頭條視訊面(3月31號):
一面:
專案
mongodb,mysql,redis
redis中hash的結構
簽到的表設計
flask,sqlalchemy
mongodb,mysql, redis的不同點
b+樹,儲存方式
https和http的不同
http返回碼
查詢最長迴文串(可以動態規劃)
https://blog.csdn.net/shineboyxxb/article/details/52079360
我寫了個暴力,給我過了
二面:
專案
mysql的引擎,區別(myisam, innodb)
mysql,mongodb各種索引是什麼,區別
多程式和多執行緒的不同
多程式和多執行緒的同步
靜態變數什麼時候初始化
mysql四種隔離狀態
MVCC
[0, n), n個數,範圍[0, n-1], 求是否有重複方法
求第k大的數的方法以及各自的複雜度
當有相同元素時,求第k大的元素的方法(類似快排,手撕)
三面:
專案
什麼時候會發生segmentfault
ip地址有什麼用,ip地址和mac地址
系統中斷是什麼,使用者態和核心態的區別
給你一個陣列,再給你幾對數,這幾對數只能夠同時出現或者不同時出現,求拿出k個數的可能性(true or false)(手撕,dfs標號+dp)
官網狀態還在面試中,估計還是備胎,基礎答的不夠好,但是還好程式碼都寫出來了。
酷家樂(現場面):
一面:
專案
實現一個買票系統:實現買票,退票,檢票。給一個小時,手撕,檔案流+map搞一下就行了,API之類的可以百度。
二面:
專案
資料流,如何獲取中位數,複雜度
一到一百萬的素數,怎麼快速求
有一堆數,再給你很多對數,每對數都在同一個組,求一共有多少組數
有很多蠟燭,每根蠟燭1個小時,求15分鐘怎麼計時
三面:
資料庫mongodb和mysql的不同
innodb的4種隔離方式
索引相關的東西
如何設計一個分散式配置系統,更新配置之後1秒鐘內能夠同步所有客戶端(這個答的不太好,因為分散式基礎比較薄弱)
四面:
家常
已拿offer,酷家樂面試體驗是最好的,而且公司環境不錯,很看好公司的發展。不過我太熟悉Java,還是想寫C++。所以沒去。
網易遊戲(視訊面):
一面:
自我介紹
介紹一個專案
資料庫瞭解嗎?
為什麼解構函式要是虛擬函式,為什麼c++沒有預設解構函式為虛擬函式
1.模板成員函式不可以是虛擬函式 https://blog.csdn.net/zzuchengming/article/details/51763563
2.C++裡面有很多小類,如果都有虛解構函式,則會對每個類都加一個虛表指標,浪費記憶體
1/x + 1/y = 1/n
求最小的n,使得對數超過1000
剛開始推了個公式,寫了個暴力,解釋給面試官聽,不過面試官沒聽懂,然後他告訴我解的方法,也是暴力,又重新寫了一遍,還是沒跑出來。面試結束之後才跑出來,跑了10多分鐘,答案是180180(不知道答案對不對)
二面:
介紹一個專案
C++11 的新特性
auto,shared_ptr, weak_ptr, unique_ptr
forward, move完美轉發
RAII機制,lock_guard
java,可達性分析
新生代,老年代
C++11的template和java的範型區別
https://www.zhihu.com/question/33304378
如何製作一個遊戲,當使用者到達一個視野之後,怎麼更新怪物
怪物有憤怒值,怎麼去設定這些事
離散化,染色
這次二面體驗很好,有些問題不會面試官會一步步引導你怎麼做,漲了很多姿勢。
目前不知道有沒有三面,不過騰訊已經收到offer了,所以應該不會面了。
騰訊現場面
騰訊一面:
自我介紹
手撕:
1.字串去空格
2.十六進位制轉十進位制
如何求前100大的數
堆和棧的區別
全域性的const,在函式裡面改const的值(沒理解面試官問什麼)
io多路複用,為什麼epoll比較好,什麼時候select比較好
兩種觸發方式
程式間通訊
共享單車如何分配
有一戶家庭,生了兩個娃,其中一個是女孩,另外一個是女孩的概率
棧實現佇列,佇列實現棧
STL set用什麼實現,為什麼用紅黑樹實現
hash用在什麼地方
各種排序空間複雜度和時間複雜度,穩定程度
快排什麼時候最不穩定
linux基本命令
檢視程式,執行緒,函式的cpu佔用
gdb
位元組序,網路序是什麼位元組序,為什麼會有不同的位元組序
騰訊二面:
介紹了一下組是做什麼的
自我介紹
在學校裡面學了什麼
怎麼學習的
專案介紹
手撕:求一個集合的所有子集,遞迴實現,非遞迴實現
本來想問一下圍棋怎麼數目,不過不懂圍棋的規則,所以面試官換了下面的一個題
手撕:去除包含4的數字,求一個數字是第幾個數,比如5是第四個數(數位dp)
騰訊hr面:
問了一下自己在學校中和自己家庭的一些情況。
問了一下自己今後的職業發展。
反正隨便聊天,面試官蠻親切的。
19號收到offer,原來我一直以為我是SNG的,收到offer居然是TEG的 233
微軟現場面:
一面:
稍微問了一下專案,介紹了一下組,是做雲端儲存的。
手撕:
有一個樓梯,一共有n層,可以走a步,也可以走b步,問最高能走到哪裡?(dp,O(n))
增加一個條件,有一次條件可以回退一半,比如本來在第8層,可以有一次機會直接到第4層。(兩次dp,O(n))
二面:
手撕:
一個陣列,裡面大多數都是成對的,只有兩個數沒有成對,求這兩個數(異或搞一下,把陣列分成兩組)
設計題:
get(), 每次取最小的數 Release(int num),釋放num 比如呼叫3次get(),依次得到1, 2, 3 如果呼叫一次Release(2),再執行get(),會返回2 這個就相當於linux裡面的檔案描述符,每次往小的取。 我直接用優先佇列(最小堆)和map(因為Release可能會對一個數字釋放兩次,所以要記錄有沒有釋放過)實現的。 寫test case
三面:
手撕:
求一個棧的pop序是否合法。
int to string,
string to int。
這兩個是庫函式,要注意各種情況,比如string to int的時候,數字越界要丟擲異常,要考慮負數,前置0等情況。
寫出test case.
題目不是很難,主要是看你寫程式碼的嚴謹性。
微軟的面試一般有兩輪,兩輪之後如果面試官覺得你還不錯則會有3面。微軟基礎不怎麼會問,基本上都是考演算法,要你站著用水筆在白板上寫程式碼(比用紙寫累好多),面試官也會非常重視test case,基本上每個問題程式碼寫好之後都要你自己設計test case。 面試結束之後回去等結果,感覺問題不是很大(火車票,住宿費全報銷,這點不錯)。
最後
最終選擇了騰訊,家在杭州,深圳有點遠。不過對於快要畢業的人來說多去遠方看看也蠻好。祝大家都能夠拿到想要的offer~
掘金技術徵文連結? juejin.im/post/5aaf2a…