博主背景
中流985軟件工程專業(yè)本科,acm銀牌選手,無實習經(jīng)歷,無項目。
先介紹一下微軟比較看重的能力
這些部分是我在和一起參與面試的人溝通的時候了解到的,和大家做個分享,希望能幫助到各位。
代碼能力
這個不用多說,代碼能力越強越好。
溝通能力
這個點是很重要但是很容易被人忽略的一個點(包括我)。在和面試官交流的時候一定要自然主動的去做溝通,尤其是在做題的時候,要把自己的思路去展現(xiàn)出來。遇到不會做的題可以和面試官交流,面試官會給提示,注意一定要get到他的點,get不到的話可能就得涼涼。
快速學習能力
學歷并不是最重要的東西,學歷只能保證你能有面試機會,微軟比較看重你的快速學習能力,而不是你已經(jīng)知道了哪些知識,985本科就已經(jīng)夠用了,剩下的就看你的算法能力,思維能力和情商等等。你需要表現(xiàn)給面試官的是快速的上手并學習思考的過程。同面試的兄弟有題做的非常好,但是最后面試官說了一句,看得出你刷了很多題,然后給掛了的。所以我感覺若是遇到你做過的題,不要太飄。
思維習慣和情商
群里不少華五本碩也一樣被掛掉了,有些可能只是因為和面試官溝通的時候沒那么愉快。微軟希望看到的是一個聰明有靈性有情商的人,而不是刷題機器和老卷王。你需要給面試官表現(xiàn)出你是一個遇到一個新問題能有自己的思考和一套解決問題的邏輯和辦法的形象,這就需要同學們平時生活中多多思考了。
做題的一些須知
微軟的大頭是做算法題,而面試官的要求不可能只是能夠做對。他對你會有更高的要求,要學會優(yōu)化代碼,包括時間和空間。很多同學平時寫題可能覺得能AC就行了,但是面試的時候面試官是不太會在意你的代碼能不能AC(因為是面試官肉眼評價,根本不會上評測機),而是需要你一步一步按照他給的指示去思考,去優(yōu)化你的算法,減少空間和時間。
接下來是我的兩輪面試分享
一面(平行面,沒過進入第二面,否則直接進入終面)
博主一面直接過了,因此無二面。一面遇到的面試官準備了兩道題,難度第一題如果沒有做過的話難度應該在接近hard水平,第二題是個medium的常規(guī)簡單題。接下來是整個面試流程。
做題方式是共享屏幕,用自己的IDE寫代碼和調(diào)試。
自我介紹
沒啥好多說的,就是花了兩三分鐘做了一下常規(guī)的自我介紹。
第一題
給你一個int數(shù)組,讓你找出最大的沒有出現(xiàn)在數(shù)組中的負整數(shù)。
上來我有點緊張,他一開始沒有要求復雜度,因此我直接用最簡單的哈希去寫了一波,時間和空間復雜度為O(n)。
寫完之后面試官問了我個問題:為啥數(shù)組大小開1e6+5?這個數(shù)字有什么意義嗎?
答:因為打競賽的習慣,如果數(shù)據(jù)范圍是1e6,那如果只開1e6很容易在邊界產(chǎn)生問題,因此開大一點可以保證不出問題。
隨后面試官問,你這樣的復雜度是O(n)的,那是否可以把空間復雜度優(yōu)化到O(1),只開常數(shù)級別的額外空間?
上來懵了,因為沒做過這種題。但是思考的過程中其實和正解擦肩而過,比較可惜。思考一陣子無果之后,和面試官說沒什么思路。
面試官回:你剛剛的做法是哈希,那如果不允許開額外的空間,那是不是可以在原來的數(shù)組上原地哈希?
思考一波,終于明白了,做法是把 -i swap到下標為 i 的位置。里面有一些細節(jié),所以第一次寫的時候?qū)懙暮軄y,寫完了給面試官看,面試官馬上找了一個反例,然后我繼續(xù)調(diào)試了一波。調(diào)試完了之后面試官看了我的代碼,問我當中一個 if 中什么判斷條件其實是多余的。想了一下告訴了面試官,第一題就結束了。
第二題
給你n個正整數(shù),讓你取一些數(shù)出來,使得和最大,要求不能取相鄰的兩個數(shù)
簡單的dp,上來直接秒了,沒什么好多說的。
寫完后面試官和我說,我的代碼數(shù)組下標都是從1開始,我和他解釋這是我們競賽經(jīng)常這樣寫,目的是為了第一個數(shù)的初始化不用特判。他說以后工作寫代碼的時候還是得從0開始,不然可讀性和空間浪費會是問題。
反問環(huán)節(jié)
結束前面試官問我什么想問的問題嗎?我問面試官覺得微軟最吸引人的地方是什么。面試官笑了笑,說人和人的關系非常簡單,沒有那么多勾心斗角,你可以很自我,很個性。然后說你來了以后自己體會balabala的(原話是這么說的,那一刻瞬間覺得一面穩(wěn)了沒掛23333)。
終面
終面大概是做了點自我介紹,然后問了一下項目(然而我并沒有什么項目,隨口說了一下作業(yè)),估計是看我沒啥項目好問的,直接開始做題了。
做題方式:面試官給了個鏈接,是一個共享文本,不是IDE,在上面寫字面試官能看到內(nèi)容。
自我介紹
常規(guī)介紹,兩三分鐘。
做題:最近公共祖先(力扣236)
遇到這道題我可樂了,運氣好抽了個簡單題。面試官問我有沒有做過這題,我說我做過類似的。
上來先講思路,我的思路是像倍增法一樣先把兩個節(jié)點跳到同一個高度,然后一起網(wǎng)上跳。所以第一遍dfs記錄所有點深度和父親節(jié)點。
寫完后面試官讓一行一行解釋代碼。完事之后問我有沒有什么辦法減少內(nèi)存使用,比如我現(xiàn)在用了倆哈希表,能不能減少一個。
但是我一開始沒get到她的意思,自己想了另一個思路來減少一點內(nèi)存開銷。還有一種思路就是從根節(jié)點到兩個點的路徑的公共前綴的最后一個元素就是LCA。直接dfs的過程中記錄這兩條路徑,我說這樣內(nèi)存大概可以減少一點,面試官告訴我說不只是一點點,是很多了。
后來面試官才告訴我她本意是,我不需要記錄每個點的深度,只需要記錄那兩個就行。不過我直接換了種思路。
接下來問我,如果不用遞歸怎么寫。我回答:那就是用棧去模擬搜索這棵樹的過程,然后大概思考了一下給了做法,面試官提出了一點小問題但是說思路是大致對的,也沒讓寫代碼。
最后的問題是我寫的兩種思路各有什么優(yōu)缺點。答:第一種思路因為預處理了很多數(shù)據(jù),所以如果后續(xù)有更多的查詢可以充分利用這些處理好的數(shù)據(jù)去減少時間開銷。第二種沒有常駐內(nèi)存的數(shù)據(jù),因此對空間的占用比較少。
反問環(huán)節(jié)
我問了面試官的組是做什么的。文章來源:http://www.zghlxwxcb.cn/news/detail-448737.html
面試后續(xù)情況
2022.1.26
已經(jīng)發(fā)了data collection,大概率是中了,等后續(xù)情況吧。
2022.1.28
成功拿到offer。不過地點是在北京。文章來源地址http://www.zghlxwxcb.cn/news/detail-448737.html
到了這里,關于微軟 蘇州STCA 2022暑期實習生 平行面+終面 面經(jīng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!