轉別人MS經歷

這轉載自:http://blog.donews.com/windshow

在MSRA的幾個月裏,自己還是學的很多東西,不光是學術和編程方面,包括做人也有很多好的體會,自己記錄下來以後留着自己慢慢嚼:

(1)一定要注意及時與別人溝通,特別是你的上級。一個新人出來乍到一個新的環境,肯定對周圍所有的人都有牴觸情緒,周圍的人對你也都有牴觸情緒,就象一個人剛換一個心臟,心臟會牴觸其它的器官,其它的器官也會牴觸心臟。這個時候唯一的解決辦法就是磨合,在人與人之間就是溝通。我剛來時,很多觀點也是怕得不到別人的認可。譬如有的時候你要向上級提出一些請求,可是又深感自己準備的不夠,所以就一直沒有及時的溝通。我發現這樣會帶來很多的問題,準備不夠,不等於沒有溝通。如果不及時溝通,可能後來就到了一個大家都沒有辦法解決的地步。相反我發現在大公司,譬如在微軟這種地方,大家都非常注重溝通,希望獲得別人的幫助。

(2)學會如何將話說的委婉。這是我在微軟感受比較深的地方,微軟的人都非常注重溝通,自然他們就都非常注重說話的技巧。學會如何將話表述的委婉,是必修的課程。而這一直是做的不好的地方,女友經常說我用命令的口氣說話,自己一定要注意,慢慢去改變自己。說話之前做preprocess。

(3)要儘可能記準記對別人的名字。在微軟我認識了很多人,可是有的人能夠叫出我的名字,我卻沒有辦法叫出他的名字,所以有時候別人給我打招呼,總是忽然想不起他的名字。這一點其實是一種致命的疏忽。大凡有領導才幹者,都會去培養自己記名字的能力。特別是作爲一個manager,你能對你的衆多手下叫出名字,這是對他們的一種認可,也會激勵他們的鬥志,使他們更好的團結在你的周圍。所以這方面自己以後應該加強,可以用一個小本記載別人的名字,多寫兩遍。切記,更不要將別人的名字打錯或者拼錯,那是對於別人的侮辱。

(注:感覺第三點有點過了,不過我也有時會忘記別人的名字,確實另人感覺很尷尬.我以後也要注意了~~~)

雖然自己在來MSRA checkin之前,也有過面試!但是感覺問的問題要比下面這些簡單些,可能也是mentor手下留情,或者mentor看我水平太爛,不忍心問我了!呵呵,轉貼一篇別人寫的文章,以後自己慢慢細讀一下!


2004年10月20日13:03:47 星期三

大概是他半年前的面試記錄,在vchelp上發表過。最後他還是接受了微軟support的職
位,並且表示,6個月以來學到了非常多的東西。絕不後悔當初接受這個職位的決定。

通過朋友的推薦,我得到了一次和微軟全球支持中心接觸的機會,全球技術支持中心就
是GTEC(Globle Technical Engineering Center),地點在上海美羅大廈二十樓。
三天前,我接到一個微軟工程師打過來的電話,要求我找一個座機他打過來,進行電話
面試。因爲當時找不到座機,我也就告訴對方可以在手機上進行面試。先請我作一個兩
分鐘左右的自我介紹,我說了:姓名,學校,專業,愛好,技能情況,獲獎情況。對方
沒有對我的介紹做評價,直接進入提問階段。第一個問題是進程和線程的差別。這算一
個熱身問題吧,我對Windows NT基礎掌握得不錯,從線程,進程的定義,相互聯繫情況
,線程,進程之間的通信,同步方法作了詳細的介紹,我覺得我回答得比較好,是一個
很好的開始。第二個問題是heap/stack的差別。嘿嘿,這個問題我在論壇上跟朋友討論
過很多次了,我直接說出他們實質上的一致性和用法上的差別,然後具體到heap管理AP
I,並且結合C/C++中的new/malloc進行了討論。對方聽見到我說到malloc,立刻就要我回
答C/C++中heap的管理和系統API之間的關係。其實我要是不瞭解這兩個的關係,我在前
面是不會他們結合起來討論的。我直接切如CRT進行討論,對方比較滿意,然後問了一些
CRT的相關問題,比如CRT除了調用系統api,他自己要不要做一些工作等等。以上的問題
我自我感覺非常好,因爲這些都是我平時關心的話題。接下來的問題是關於COM的,對於
COM,我是理論大大多於實踐,我對COM的知識完全來源於Essential COM。我討論了COM
的目的,C++的缺陷,COM爲什麼是better C++,COM的線程模型等等。我回答得有點亂,
因爲對方沒有問COM具體某方面的東西,我就盡我所能,按照章節把essential COM裏面
的東西說了一遍,基本上抓住了要點。這是對方突然又會過去問內存方面的東西,問Wi
ndows 下的內存是如何管理的。我一時沒反應過來,本來應該先說內核空間/用戶空間
的區別,然後說進程空間,然後再深入。結果我直接就開始從分頁機制開始說,我說每
個進程都有獨立的32bits空間,尋址通過分頁完成。分頁其實不是Windows NT內核做的
,主要是IA32 chips做的。然後具體說了32bits地址如何映射成物理地址,GDT/LDT,導
致虛存轉換的GP異常等等。我說完了對方沉默了幾秒鐘,我想大概是在考慮下一個問題
是什麼。果然,下一個問題就是安全性。我平時不太注意安全性,只是在看inside win
2k的時候瞭解了一部分。我說用戶登錄的時候會帶一個token,通過token來對這個用戶
訪問的object做限制,然後對方要我說windows privilige,我不清楚這個權限到底是什
麼,問他是不是要我說ring 0/ring 3的東西,對方說不是,那我也猜不出這個是要我說
什麼,我也就只有大概介紹進程獨立阿,用戶態不能訪問內核態阿一些基本的東西,感
覺對方不太滿意。到這裏,面試基本上進行了2/3,接下來有兩個問題,介紹.net和.ne
t的安全性。天,我上個星期纔開始瞭解.net,而後來才知道對方是ms GTEC .net方面最
牛的。還好我看的是bible: essential .net,我就大概背了一些書上的內容,better
com ,具體的優越性是什麼,是如何實現的。然後對方問我客戶端如何訪問.net組件實
現web service,我心裏在想,調用遠程的.net 組件就可以了阿,不知道他要問我什麼
。於是只有說了說web service跟傳統的application的差別。現在想起來對方可能是想
問我xml/soap,可惜當時沒想到。最後一個問題就是.net的安全性。My God!security是
那本書裏面的倒數第二,三章,我恰好看到倒數第四章。沒辦法,我只說了我瞭解的數字
簽名保證組件完整性,關鍵的domin我就沒有說,只有承認自己還不太瞭解。當然,中間
還插了一些小問題,比如是否瞭解Windows DNA阿,可惜我不太瞭解,只知道是個三層結
構.電話面試基本上就到
此爲止,對方讓我等下一步通知,掐掉電話,一共用了17mins,自己感覺還好,不過太
倉促,我是躲在實習公司的廁所裏面打的電話,中間還被掃地的大媽趕出來了一次。更
寒的是,我還不知道如果我申請的到底是什麼職位。
電話面試完後,我纔開始整理一下自己的思路,打聽微軟大概給我提供什麼樣的職位。
結果發現自己的手機居然被打欠費9塊錢。立刻下樓買了張卡。中午我瞭解到微軟是不可
能提供正式員工的職位的,因爲現在微軟對正式員工的head count控制得非常緊,招進
去的都是有工作經驗的。他們可以向我提供的職位是其他公司派駐微軟的技術支持,在
微軟工作,mentor是微軟的工程師,只是簽約不是跟微軟籤,而是跟第三方公司籤,待
遇和福利也沒有微軟正式員工那麼好。不過我還是非常滿意,因爲在電話面試裏面我所
聽到對方提出的問題,都是非常專業,一針見血的,而且在這幾個問題中,的確能夠非
常好的反映出我的實際技能情況,而且我也通過朋友瞭解到,在目前情況下,對一個應
屆生,除了現在正在招聘的微軟研究院,這基本上算一個最好的出路,能夠學習到很多
東西。
兩個小時後,我又接到微軟的電話,約我星期一上午九點去美羅大廈20樓面試,還問了
我什麼時候可以開始工作。我感覺對方對.net非常重視,於是在週末看完了
essential .net剩下的部分。
星期一來到美羅大廈,走到樓下一看,上電梯都要排隊!不過還好,美羅城的電梯是能
裝20個人的哪種,很快就上去了。因爲我只知道我是來面試的,不知道是面試什麼部門
,也說不出對方的名字,這讓前臺比較爲難。幫我問了二十分鐘後,終於領我到了一間
會議室,裏面有一個工程師等着我。坐下來以後對方也沒要我自我介紹,而是在看一份
東西。我仔細一看,大吃一驚,這東西是我半年前隨手寫的一個簡歷,裏面什麼具體的
東西也沒有寫,立刻拿出新準備的簡歷遞過去。因爲新簡歷比較有條理,對方看起來也
比較快,很快就知道了我的大致情況和技能情況。然後就我簡歷裏面寫道的熟悉C/C++編
譯器實現細節開始提問,問題是虛表是如何完成的,其實這是一個小問題,但是VC裏面
對於虛表實現的細節非常的多,我也都有了解,所以我還不知道從何所起。整理一下思
路後,我先說我是從inside the c++ object model入門的,然後談了什麼情況下有虛表
,保存在什麼地方,成員函數調用的時候如果訪問到虛表,虛函數重寫是如何實現的。
然後對方問我純虛函數和虛函數的差別,我直接回答對方除了在語義層面上虛基類不能
具現object外,再續表上沒差別。然後對方要我說說多重繼承下的內存佈局,於是我就
分普通多重繼承,虛多重繼承討論,說到這兩種情況下如何修改虛表裏面的內容,各個
編譯器在實現上哪些是一致的,那些是不同的。說完C++,對方就開始要我討論COM的線
程模型。這東西我當初瞭解得很清楚,不過很久沒用,忘記不少,MTA這個名字我都忘記
了,只有用中文給他說.我說道爲什麼會存在線程模型,爲什麼要列集,散列,進程內的STA
通過hidden windows message queue實現安全性,本地通過LPC,遠程通過PRC等等.把基本
上的說清楚了,具體緩解比如代理,存根接口,我只說了通過MIDL會自動生成標準的.c 文
件,更具體的由於我不太清楚,也就沒有深入討論了.然後對方又問道IA32下的分頁機制,
我還是照着電話面試裏面的內容說了一遍,說完以後就問我有沒有用過VB,我說我高中用
過,大學裏面用過VBA,在Excel裏面調用COM,還用過ASP.然後還問了我對數據庫是不是熟
悉,我說我剛剛開始學.然後問我對.net熟悉不,我大致介紹了一下我學習.net的情況.問
題就到此結束.整個過程中的談話我們都是越來越放鬆,還不時說到一些平時自己如何學
習的話題等等,最後對方讓我等一等,說讓下一個人來面試我.走的時候對我笑一笑,我覺
得他對我是比較滿意的.
等啊等,過了五分鐘沒人進來,我就在辦公室到處逛.無聊了就坐下來,大約一共過了十二
分鐘,終於來了一個瘦瘦的工程師,很熱情,進來就主動跟我握手.做下來也沒有要我自我
介紹,直接問我對數據結構瞭解的如何,我說我瞭解得不錯,於是他就出題問我.題目是:給
兩個變量,如何找出一個帶環單鏈表中是什麼地方出現環的.我看過expert C programmi
ng,裏面最後有一個短文是介紹微軟面試的,第一個題目就是如何判斷鏈表出現了環,裏面
討論了四種情況和各自的特點.雖然問題跟這裏不同,但是既然我看到了,我就要突出自己
一下,於是個他說了如何判定是否有環.他非常滿意,但是申明他的問題是要找出環出現的
節點,因爲受到判定環算法的定向思維,我在一分鐘內沒有找出一個很好的答案,於是就問
了一些"是否一定有環"這樣的問題來拖了一下時間.後來我想到對方主要是考驗我的思維
能力而不是一定要解答出這個問題,我就說了一種不一定行得通的方案,做法就是先找到
環內部的一個節點,遍歷環一週,把訪問到的節點地址相加,然後在第二週,把訪問到的節
點相減.因爲出現環的節點會被多計算一次,所以最後得到的值就是出現環的地方.其實當
時我就知道這個方法基本上行不通,但是對方還是對我這種做法感到非常滿意,虛驚一場
.第二個問題還是IA32,問我在IA32中一共有多少種辦法從用戶態跳到內核態.這方面的東
西主要是IA32 vol3裏面介紹的,我只記得Windows 跳入內核態的方法.於是我就開始說,
說到一半,我突然想起以前討論CIH病毒實現方法,就是通過任務門跳進去,想到這個,接下
來的中斷門,陷阱門也就想到了.好像對方對IA32比較有興趣,問道我是如何用匯編做的W
indows平臺下的mp3播放器,於是我就說資料來源主要是網上的,同時用匯編編寫win32程
序其實跟用c語言調用sdk沒什麼差別,然後還老實承認mp3解碼部分不是自己做得等等.接
下來的,還是COM.第一個問題還是COM的線程模型,然後討論進程內/外組件的差別.我的回
答跟一面的回答差不多,回答完以後,對方問我知不知道IUnknown接口!哇,他這不是放我
發揮嘛.於是我針對這個接口的三個函數作了討論,重點是 queryinterface,討論了esse
ntial COM裏面強調了三個特性,對方終於滿意了.接下來的話題就很輕鬆了,問我看過哪
些原版書,我問他那方面,他說不管什麼方面,說出名字就可以.嘿嘿,偶的強項啊!從C++開
始說,五本寶典說完了就說windows SDK方面的aw/inside win2k,然後說調試方面的wind
ows debugging,然後說TCP/IP方面的兩本bible,我還準備說msj裏面的under the hood和
看過的ms無錯編程這些更專業一點的東西,但是對方笑着把我打斷,看來後面的不用說了
.最後問我對.net知道多少,.net啊.net,我最不熟悉的東西.他讓我介紹process/thread
/domin/thread pool的差別,還好,我仔細看了domin,前面兩個我本來就知道,thread po
ol我知道是什麼東西,於是說就說了我自己知道的部分.說完了看得出來我也瞭解我.net
的水平很有限,然後問我如果一個class裏面只有一個private成員,客戶怎麼訪問,我想了
想,實在不知道,一點都不知道,就只有說不知道了,他笑着給我介紹了一下,然後再問了一
個.net的名詞解釋,我還是不知道,他說沒關係.總的來說挺不錯,他讓我等着,然後出去了
.
這次等得更久,估計有四十分鐘吧.我前面說得好累,好想喝水,不過找不到,也就只有算了
.第三個面試官是個女士,估計是他們的專業hr.沒有問我技術問題,一來要我自我介紹,我
估計他不是搞技術的,於是就大致介紹了一下我的情況.然後他給我說,前面幾個工程師對
我的印象是,底層掌握得還不錯,但是對上層的知識比較欠缺,但是他們主要做的就是上層
的支持,所以在考慮我是不是適合這個職位.其實這也是我考慮的問題,因爲就我個人來說
,我欠缺的是.net方面的東西,但是我對.net是非常有興趣,所以我有信心做好.於是我就
給他說了我的想法,說到我爲什麼要先深入學習底層的東西,自學能力如何,興趣如何.但
是對方還是擔心如果讓我做支持,接觸到的不是一些sdk開發,我會不會反感,會不會覺得
自己大材小用之類的.天啊,在ms裏面我敢說我大材小用???!!!!這不是在張三丰面前耍太
極嘛!於是趕忙說出自己的看法.對方接着問如果客戶老是問一些簡單問題,我會不會厭倦
.其實我在論壇上有時也挺反感一些重複的簡單的問題,但我不能直接這樣給hr說啊.我說
當年我就是問這些菜鳥問題的菜鳥,所以我不會覺得這些問題是沒有意義的.但是對方強
調說就算暫時不這樣,那你會不會覺得自己的能力沒有得到發揮.我接着說,就算一個簡單
問題,不同的人有不同的回答方法.如果技術好的人,他的回答會有前瞻性,能夠從用戶的
問題和問問題的上下文瞭解到用戶實際上的需求,除了解答當前問題,還能夠給出建設性
的意見等等.說完這些,對方基本上滿意,沒有繼續問了.然後問我有什麼問題,我說我想詳
細瞭解這個招聘的流程和我實際的職位.於是她告訴我今天面試完了一個星期後會有通知
,看我是否適合這個職位,同時也要看有沒有空餘職位.然後再給我強調了這個職位不是正
式員工等等.看來他是非常瞭解剛畢業大學生的心態.總的來說,這一輪面試不好不壞,我
們雙方的印象都一般,但良藥苦口,我們雙方還是得到了更多的瞭解.她最後讓我等着,說
還有面試.天啊,還有???
這次沒有等太久.過了五分鐘,來了一個pp的年青女士,非常有魅力.一進來就跟我握手,然
後說"nice to meet u!".坐下來後,她用英語說這個技術支持的職位可能會是國外的客戶
,在電話或者email方面都會是英文的,所以要考我的英文能力.我開始還準備問她是不是
要我用英語回答,但是自己想想,擺明了是要你用英語回答,你問她她肯定拿你當方腦殼看
,於是立刻調整語言習慣.一來就是用英文自我介紹.還好自己心裏面有個中文提綱,於是
就發揮發揮,用英語開始說.基本上還可以,我說的她都能夠挺懂,我自己也覺得突出了要
點.接着她要我描述一件自己克服過的難題,於是我就舉了一個例子.然後她就簡單介紹我
會面臨的工作,口頭英語和筆頭英語.問我英語哪方面最欠缺,我說口語,因爲書面英語在
看資料的時候我就得到訓練了,但是口頭英語平時是沒有機會訓練的.她點頭表示滿意.然
後問我給自己書面英語打分會是多少分,滿分十分,我開始沒聽懂,沒辦法,就只有說coul
d u give me a n example?然後她說比如她覺得他口語一般,她會給自己6分.明白意思後
,我說我給自己書面英語8分.開始想謙虛一點的,但想想,說不定她會覺得你會誇大自己,
最後她會在你的自我評價上再減個幾分,反正平時看資料基本上都是英語,心一橫,說了個
8分,她聽了覺得不錯,說我對自己很有信心.sigh,想想自己cet6 62分過的,懸阿!然後開
始問道對客戶的態度,什麼算是good service,什麼算是bad service,如果有的用戶一直
blablabla說個不停我會怎麼辦.如果用戶說的我基本上聽不懂我該怎麼辦等等.整個過程
中我說得比較流利,中間只有她的一次問話我沒有聽懂,用一些中性詞代替過去.問題本身
比較有難度,英語到不是很難,所以只要自己能想到答案,說清楚還是可以的.同時她會非
常真誠的跟你交流,有的時候會幫你補充一些你沒有想到的詞語等等,我覺得這次英語面
試還是聽成功的.最後,她說讓我等等.算了,麻木了,懶得管後面還有多少輪了...
哪裏知道只過了兩分鐘,第三輪面試我的hr又來了,直接給我說今天的面試結束.我跟她一
起出來,開始還以爲她要幫我按電梯,那裏知道她直接去另外一個辦公室.其實ms對我也夠
好了,面試一共花了兩個小時,看得出來還是很重視的。我也儘量發揮了自己的優點,
我相信我的能力他們還是覺得不錯的,就看他們覺得我是否適合做這個support的工作了
。電梯下到一半,我才覺得好累,不過整個過程還是很好,至於結果其實已經不重要的
。除了電梯,打開手機,立刻就收到一個短消息,是我朋友發過來的,內容是ms的對我
比較滿意,獲得這個工作有比加大的可能性。


(注:看了上文:如果是我來答,1,估計我回答的很亂,因爲說起來自己看了操作系統也不下十遍了,但是因爲平時自己時間很少花在理論上,沒有時間真正的來探討os中的一些細節問題,也許我會花時間去看看os實現這本書,也是我一直想做的,包括編譯原理與實踐,一直沒有充裕的時間來把這些基礎知識加以總結,始終不能很有信心的回答這些問題。2,我覺得我會回答得很好,因爲平時也比較的關心這個問題。3,COM目前自己在看關於com的知識,而且比較的順利,所以肯定可以回答許多的問題。4,安全性,我肯定也可以答好,因爲自己比較關注這些問題,也學過關於信息安全的一些知識。5,.net用得比較的多,所以不怕問,但是關於.net的安全性,不是很瞭解,倒是java的安全性我比較的清楚裏面的機制,因爲,根據我的學習路徑,安全始終被放在了最後。5,英語口語和聽力也是非常重要的,這方面自己也比較的欠缺。綜合上面分析,我估計我即使在微軟,目前可能也只能做個support了,還要修煉啊,發奮了~~~)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章