2017微軟預科生計畫面試(三面全)

2021-07-31 02:47:10 字數 1819 閱讀 3041

2017.4.24

蘇州-data mining/algorithm/machine learning engineer and scientist-stca

上午9:00一面,由於辣雞lync沒能加入會議成功,改用**面試(50min)

1、自我介紹

2、collabedit上寫二叉搜尋樹的資料結構,以及給定節點判斷是否為二叉搜尋樹(自己挖坑問了deque的底層實現)

上午10:30二面,依舊**面試= =(63min)

1、自我介紹

2、詢問是否有大資料(hadoop、spark)相關專案經驗,在競賽專案所負責的部分

3、collabedit上寫二叉樹中兩個節點的最近公共父節點(下面附解決方案)、反轉字串(i am a student. -> student. a am i)

4、c++的記憶體分配方式(靜態儲存區、堆、棧),抽象類關鍵字(abstract class),c++如何實現多型(虛函式、虛基類)

下午1:30三面,**面依舊(這次來了個北京的大佬= =)(35min+**傳送郵箱=1h)

1、自我專案

2、詳細了解研究生畢業設計方向、合作專案細節

3、ios 10.3.1新特性(喵喵喵?)

4、平常有沒有什麼業餘的小愛好,實現過什麼小專案或者系統?

5、兩個隨機序列的合併排序,解決方案(回答了陣列快排後歸併排序、合併兩個鍊錶),多個隨機序列的合併排序(採用最小堆實現),寫乙個陣列歸併排序程式發到他郵箱。

發現微軟不像bat一樣非常注重專案經歷,更重視基礎及未來發展潛力。

wish for good offer.

附:二叉樹中兩個節點的最近公共父節點

這個問題可以分為三種情況來考慮:

情況一:root未知,但是每個節點都有parent指標

此時可以分別從兩個節點開始,沿著parent指標走向根節點,得到兩個鍊錶,然後求兩個鍊錶的第乙個公共節點,這個方法很簡單,不需要詳細解釋的。

情況二:節點只有左、右指標,沒有parent指標,root已知

思路:有兩種情況,一是要找的這兩個節點(a, b),在要遍歷的節點(root)的兩側,那麼這個節點就是這兩個節點的最近公共父節點;

二是兩個節點在同一側,則 root->left 或者 root->right 為 null,另一邊返回a或者b。那麼另一邊返回的就是他們的最小公共父節點。

遞迴有兩個出口,一是沒有找到a或者b,則返回null;二是只要碰到a或者b,就立刻返回。

// 二叉樹結點的描述    

typedef struct bitnode

binarytreenode;

// 節點只有左指標、右指標,沒有parent指標,root已知

binarytreenode* findlowestcommonancestor(binarytreenode* root , binarytreenode* a , binarytreenode* b)

情況三: 二叉樹是個二叉查詢樹,且root和兩個節點的值(a, b)已知

// 二叉樹是個二叉查詢樹,且root和兩個節點的值(a, b)已知  

binarytreenode* findlowestcommonancestor(binarytreenode* root , binarytreenode* a , binarytreenode* b)

return

null;

}

微軟2018預科生c 後台實習面經

4月初投的簡歷,到四月底拿到offer共乙個月,但面試集中在一天。全是演算法題。面試形式 共三輪技術面試,全是演算法題 一面 1.給乙個m行,n列的 有些格仔有水,用w表示,其他格仔是陸地,用 表示,求出 中有多少個水域。注 水域 w的四周的8個節點如果有w的話算同乙個水域。ww ww上表就算乙個水...

微軟實習生考核(1)

微軟實習生 是個很誘人的名詞,大部分剛出道的dotnet程式設計師應該都想成為微軟實習生吧。前幾天通知說有乙個微軟實習生的名額,沒有任何要求,只要考試總成績第一就行。我呢,英文水平差,程式設計技術也一般,不去也罷。但是又覺得不參加是損失,此次考試既可以鍛練自己,又可以衡量自己與別人之間的差距,於是乎...

2017微軟面試演算法題回顧

慘痛的回憶 1.求乙個陣列中的逆序對數 思路 o n2 的解法很明顯,暴力破解即可。但這肯定不是面試官要的答案,很明顯這樣的題是找至少o nlogn 的解法。考慮使用歸併排序,在歸併排序中是將陣列以mid分為左右兩部分,合併到新的陣列中的時候,比較a i 和a j 的大小,如果a i 比a j 大則...