微軟2023屆暑假實習(xí)提前批面經(jīng)(STCA北京)
一、基本情況介紹
- 投遞部門和崗位:STCA,Software Engineer intern,北京
- 共三面:
- 一面和二面是AA面,平行面,通過一個即可進入終面(三面)
- 三面是LA面,決定是否能拿到offer
- 視頻面試,用的軟件為Microsoft Teams
- 每輪面試都是45min左右
- 簡歷中英文都要準(zhǔn)備。我用的是 [超級簡歷] ,可以直接把中文轉(zhuǎn)為英文,并進行合并
- 本人參加了一面,二面,三面
- 因為一面掛了,所以到了二面。如果一面過了,不需要二面
- 在一面和二面的反問環(huán)節(jié),我都向面試官請教他們對我面試的建議。兩個面試官都給我了詳細(xì)的回答,并告訴了我他們在面試時每個環(huán)節(jié)比較看重什么以及每個環(huán)節(jié)怎么準(zhǔn)備,請看第三部分~
- 整體面試流程:自我介紹(中文或英文,卻決于面試官) -> 聊項目(如果簡歷上的項目面試官不感興趣,可能只問一個最基本的問題:遇到的最大challenge是什么?怎么解決的?) -> 做算法題
二、每輪面試問的流程(三輪面試的流程總結(jié))
1. 自我介紹
- 需要準(zhǔn)備英文自我介紹
- 但是我遇到的都是讓中文自我介紹,看面試官
2. 與項目相關(guān)的問題
- 一面面試官跟我討論了一下簡歷里面的論文
- 主要是問論文的實現(xiàn)細(xì)節(jié),以及類似reviewers提出的一些疑問
- 其他面試官在這個環(huán)節(jié)只是問了我:工程項目/科研活動中遇到最大的挑戰(zhàn)是什么?(因為我的項目太菜了hhh,他們不感興趣吧
3. 算法題
- 寫算法題有兩種形式:
- 在面試官發(fā)的一個link(codeshare)中寫,面試官可以看到我們寫的代碼,且面試官也可在里面寫代碼;(codeshare如圖所示)
- 打卡本地IDE寫
- 在面試官發(fā)的一個link(codeshare)中寫,面試官可以看到我們寫的代碼,且面試官也可在里面寫代碼;(codeshare如圖所示)
- 一面面試官是讓在codeshare中寫,且面試官給我口述題目的時候也在里面寫了題目的一些代碼。其他面試官都是讓打卡本地IDE寫,三面面試官要求不能編譯運行,在腦子里跑代碼
- 三次面試遇到的題目:
3.1 第一輪面試:一道題
用單鏈表實現(xiàn)一個隊列,對于push(val)和pop()的時間復(fù)雜度都要為O(1),不能用其他數(shù)據(jù)結(jié)構(gòu),只能用單鏈表(不過指針定義的數(shù)量可以隨便指定)
- 第一輪的面試官特別注意corner case的考慮
- 有一個corner case我沒考慮到,面試官給我提示了,最后問了我一句“這是你在微軟的第一輪面試對吧?”,我就知道需要第二次AA面啦哈哈哈
3.2 第二輪面試:三道題
■ BST中序遍歷 ■ BST樹中 找到最大子樹的和(類似力扣中二叉樹的最大直徑和吧。用后序遍歷做) ■ 二叉樹中remove一個節(jié)點后,剩余子樹節(jié)點和乘積的最大和 ● 這道題目之前沒做過原題,需要用到第二題的函數(shù)來做 ● 這三道題目是層層遞進的
3.3 第三輪面試:一道題
新定義的node節(jié)點,節(jié)點可能有next節(jié)點和child節(jié)點。 如果都有,節(jié)點之間的大小關(guān)系為root.val < child.val(所有的孩子節(jié)點) < next.val。 將這個結(jié)構(gòu)的child節(jié)點置空,只留next節(jié)點,并保持有序。
- 面試官直接在聊天框里面發(fā)了這個題目的截圖,巨長,不過里面還包含了一個例子解釋。面試官還給我講了為啥出這道題目,反正是跟數(shù)據(jù)庫底層存儲相關(guān),我當(dāng)時一心在看題,沒太聽懂面試官說的。
- 用遞歸做,不過遞歸調(diào)用棧會有空間復(fù)雜度
- 做完后面試官讓我結(jié)合一個例子給他講遞歸的過程,我就打卡畫圖軟件開始畫調(diào)用棧的圖了...
- 最后面試官讓我想空間復(fù)雜度為O(1)的思路,沒答出正確思路,最后面試官說是類似層序遍歷的方式
三、在面試時面試官每個環(huán)節(jié)比較看重什么(反問環(huán)節(jié)向面試官請教的)
1. 面試官在每個環(huán)節(jié)重點關(guān)注的點
問項目:是否真實,表達能力
- 要把細(xì)節(jié)表達清楚,而不是面試官問啥答啥,因為對方不了解這個工作
- 日常多看一下工作中的難點與challenges,變?yōu)樽约旱?
做算法:
- 正確的思路
- corner case(易錯點)的設(shè)計情況,要設(shè)想各種可能的情況(一面的面試官比較關(guān)注corner case,二面面試官和三面面試官都比較時空復(fù)雜度)
- 溝通能力:做算法時要多溝通細(xì)節(jié),溝通自己不懂的地方
- 代碼風(fēng)格
寫在最后:
在面試前我從另一個網(wǎng)站翻了微軟的所有面經(jīng),做了[微軟面試算法題目整理],但是等我真正面試時卻一道都沒有考到,所以這個就先不放上來啦。如果有需要的同學(xué),可以問我要~