15年10月參加微軟onsite的校園招聘。之后HR 就消失了, 發(fā)郵件問了一次。是不是會(huì)有onsite 什么時(shí)候。跟我說沒有找到合適的組,讓我等,或者最壞就是,沒final 了。
心一涼,白特么背題了。算了。作為一個(gè)姑娘也確實(shí)不應(yīng)該罵人。
說說當(dāng)天的情況,面試我的組似乎CRM 和ERP。我就覺得的吧,真有企業(yè)買他們的軟件產(chǎn)品么? 那不都被Orical 和 SAP 包了。當(dāng)然這不是重點(diǎn),重點(diǎn)是他們組缺人。
周五是 早上一場,下午一場,大概總共20多口子。
面試一共四輪,聽說某些組5輪。
都說微軟面試簡單,從我個(gè)人經(jīng)驗(yàn),數(shù)據(jù)結(jié)構(gòu) 和算法題并不是我的強(qiáng)項(xiàng)。而且都說他們出的是leetcode 和CC ,然而童話里都是騙人的。
behavior question 基本上沒問,可能問了,但我不知道那是behavior question。
第一輪,是喪尸臉的美國大叔,在MS 干了15年,我去也算是骨灰了,很好。那還不隨便虐待我這個(gè)小白。先固定套路介紹自己,我自我介紹,開始滔滔不絕的講我的social networking 項(xiàng)目。可能是口語太爛,他并不感興趣。
我還非讓他登錄我們網(wǎng)站看,然而邀請(qǐng)半天沒反應(yīng)。算了,我只好說我負(fù)責(zé)哪部分,我自己寫的后臺(tái),用 spring mvc restful web app。
然后他說既然你是寫后臺(tái)的,你datastruct 和算法如何,我說水的一塌糊涂。意思就是告訴他,我不怎么會(huì)他說那考你道設(shè)計(jì)題吧。
我說好啊,就出了一個(gè) project manager 的員工管理項(xiàng)目管理系統(tǒng)。有點(diǎn)兒像ibm 的rational , 和teambition Jira 這種軟件。
一開始我不知道他想讓我寫什么,于是我就照著CC 設(shè)計(jì)題的思路,問除了 who what where why 等一系列的問題,其實(shí)我也就是例行公事進(jìn)行交流。今兒開始設(shè)計(jì)class,寫code。
寫著寫著 ,他說,我不是讓你implement code ,我是問你怎么設(shè)計(jì)數(shù)據(jù)庫。我說 創(chuàng)建 table 還是花 dagram ? 他說類似 database 的那個(gè)什么圖。于是我就開始畫。
畫到后面,我就不知道如何表示。一個(gè)project 里面 員工 和需要一個(gè)manager 的關(guān)系。 例如 有個(gè)prarent class 叫 employee 然后 subclass 有 manager 和 一般員工?
貌似有點(diǎn)兒問題。這道題我隱約記得 CC 設(shè)計(jì)題里面有一個(gè)人力資源設(shè)計(jì)系統(tǒng)??梢詤⒖?,但考官問的方式不一樣。后來他實(shí)在看我不知道如何 畫了。
他說算了,我給你畫吧,于是給我畫了三個(gè)表。這時(shí)候我才知道他想干嘛,最后 讓我寫了query ,就結(jié)束了。
經(jīng)驗(yàn)總結(jié),HR 之前就提醒我們不要互相透題。然而我覺得他們是見人下菜碟,如果你說你做個(gè)什么項(xiàng)目有什么經(jīng)驗(yàn),他就會(huì)揪著你會(huì)的一只問你。
話說還問了left jion in 和jion in 的區(qū)別。最終灰頭土臉的出來了,如飄雨的西雅圖。
第二輪,貌似是個(gè)印度小哥,別人都帶個(gè)筆和本兒寫寫畫畫,他就拿了個(gè)手機(jī),我去要怎樣?
你知道我是誰么?算了,小哥 口語還可以,雖然 我并不知道他念python 會(huì)不會(huì)是“白當(dāng)”, but 人還不錯(cuò),大家都覺得老印不好,不想遇到老印。
似乎,我們的故事這樣開始,又是介紹自己,我照著既定背了一遍,開始推銷我做的social network 網(wǎng)站,繼續(xù)繪聲繪色不氣餒的聊起來,我說你想看看么?
他說好啊,于是我說了網(wǎng)址,老天保佑服務(wù)器沒蕩,介紹項(xiàng)目,然后他提了問題,說你覺得你們網(wǎng)站還有哪些功能需要完善,我說了幾個(gè),他說,還有么,我說暫時(shí)產(chǎn)品經(jīng)理沒提需求。
他說,那你給我介紹下你后端框架。我輕車熟路了扯了5分鐘。然后他表示還不錯(cuò),然后問我你對(duì)后臺(tái)用線程了么?
我說當(dāng)然啊。要么怎么玩兒。他繼續(xù)說那我給你出個(gè)題,有個(gè)board 其實(shí)就是個(gè)matric 上面給你一堆蟲子,然后同時(shí)移動(dòng),要求不能 collision 。
然后給我寫一個(gè)。于是我就根據(jù)要求,開始寫, 剛把 方法名寫完,他說嘎嘎嘎, 你先跟我說說思路,我說好呀,就是 蟲子用 array 存棋盤位置,board 用 01 代表 有沒有蟲子 當(dāng)前 棋盤狀態(tài)。
然后就是search 下一個(gè)可以移動(dòng)的有沒有 被占用 i,j 什么的,他說 好啊, 但有問題大家同時(shí)動(dòng)啊,我說是么,那我們就check 2步 如果都是空 就打不走起來,他說如果兩只蟲子同時(shí)面臨 同樣的資源咋辦。
當(dāng)時(shí)我還沒想出他想做什么,然后他說你知道線程,和資源池,我說是呀 線程可以有自己的 內(nèi)存 和 棧,他們還有共同的 棋盤公共資源,。
我哦,需要個(gè)locker ,我說機(jī)智啊,估計(jì)他心說,你這都不知道。本來以為他想考人工智能,我剛想展示我卓越的人工智能 算法知識(shí)。
結(jié)果 最后就是問我 lock 你準(zhǔn)備怎么實(shí)現(xiàn)。聽說有人還問了,除了鎖以外還可以用什么其他方法實(shí)現(xiàn)。作為一個(gè)只會(huì)跳舞的碼農(nóng)來說,必須不知道啊。
第三輪,白人,ERP 的manager 做customer support 問我 背景 卡卡的說。
然后繼續(xù)介紹我的project 堅(jiān)持不懈,但白人大叔沒興趣。于是, 有因?yàn)槲艺f的這事,讓我做個(gè)設(shè)計(jì)題,應(yīng)該累死 CC 的 圖書館訂閱系統(tǒng)。
由于從第一個(gè)面試官那里學(xué)來的方法。我現(xiàn)學(xué)現(xiàn)賣。
成功設(shè)計(jì)好了,table,然后他問我 你知道relationship 和 segma 么,我隱約的忘記了,但從此以后全部的數(shù)據(jù)庫 基礎(chǔ)知識(shí)。
還好我唯一認(rèn)真學(xué)了database 雖然很多都忘了,還問了我 traggle ,但我確實(shí)寫過,但不記得了。
后來問我怎么優(yōu)化,我就把我教授的理論講了一遍,他說我不是問你 數(shù)據(jù)庫設(shè)計(jì),是前端讀數(shù)據(jù)庫,減少大量讀寫操作的問題。
我若有所思,然后他直接告訴我了答案,我說就這樣啊?要是 時(shí)時(shí)的你打算怎辦,數(shù)據(jù)庫 性能就靠 讀寫 響應(yīng)速度了。
他說可以查找加index ,我說那其實(shí)用 有個(gè)online 都是 個(gè)表key‘ 那個(gè)查不就得了,他說 index 跟 找key 還不一樣,我突然想起來我好想看過教材上關(guān)于index 的定義,扯了一會(huì)兒。
總之 , 擺明了就是覺得我不知道得樣子,給我各種科普,秀經(jīng)歷。
最后出了個(gè)subset的題,我覺得還可以吧,就是給個(gè)int 加起來都是 子集都是這個(gè)數(shù)例如 3 ,有 {0 ,3} {1 ,2} { 1 , 1, 1}, 就是用receive ,然而不會(huì)寫,不過 他就幫我寫了,我說是這個(gè)意思。 88了
最后一輪,是 crm 的 manager 感覺必須拍印度領(lǐng)導(dǎo)馬屁了。上了繼續(xù)自我介紹,然而 特別囧的事情發(fā)生,介紹自己的網(wǎng)站,不知道為什么SSL 被 IE 禁了,你妹的。于是我之后 唾沫恒飛的 考白板說。
也不知道他是不是聽明白了。然后 我提了句MVC 他說你給我解釋下什么事MVC 我就把這學(xué)期 選的JAVA OOD 課的內(nèi)容說了一遍, 我說你看是不是很好用,他說你說了這么一大堆,有什么不好?
我說有啊很明顯,scale out 那一堆 一堆的mvc 第一 需要·奧統(tǒng)一 或者多個(gè)controller互相管理,有很多邏輯會(huì)變得復(fù)雜,而且很難 管理 或者trouble shooting。
后來出了一道 找最大profile 的編程, 年 和 profile 的 矩陣,我直接給丫簡化為 array 了,他說年呢,我說你不就想知道從哪年到哪年 連續(xù)的 profile 最大么。
我輸出一個(gè)連續(xù)index 不就得了,回頭再去對(duì)應(yīng)表里找唄。他說也行,所以就直接大于0 就開始加, 一旦小于0 就停,保留 當(dāng)前 index 集合,和最大maxprofile。
如果下一組 大,就換,不大,就keep current,然后 結(jié)束。我說要優(yōu)化么,他說無所謂。我心說這么好。估計(jì)真實(shí)看女生也不可能會(huì),都說印度大叔,有大男子主義。
估計(jì)一直把我當(dāng)白癡。姐真的不會(huì)啊。
結(jié)束語,基本上每輪必考設(shè)計(jì)。然后例行code。沒有任何leetcode 原題。刷題最重要是理解精髓,微軟考的都是基礎(chǔ)知識(shí)。所以基礎(chǔ)比寫出花樣的算法重要。
要多說project ,最好有實(shí)踐。我跟manager 說我們網(wǎng)站我自己寫的后端,從根本不會(huì)spring mvc 通過 看文檔,search 找例子,自己研究出來。
開始一堆不過,熟悉了,就越寫越快。雖然不知道結(jié)果如果,但是也總算有新突破。雖然不知道別人的題是不是一樣,但manager 級(jí)別絕對(duì)都是 見人看項(xiàng)目出題,很可能都不一樣。
同期塔姆的同學(xué),考的就完全不同,我問的那些他都沒問過。
所以,盡量說你會(huì)的,然而如果你說會(huì),就千萬別一知半解,那還不如說你不會(huì)。
就這么多,女生面試可能比較水,但原則不變,就是基礎(chǔ)的知識(shí)一定要牢固,考什么都不怕。CC 多看幾遍把每行解釋都認(rèn)真讀明白,覺得不清楚的,一定要弄明白。