【 以下文字轉載自 Career_MS 討論區 】
發信人: ljsdut (小石頭), 信區: Career_MS
標 題: 微軟考試歸來――順記我的繁忙的一天
發信站: 水木社區 (Sun Oct 16 20:44:04 2005), 站內
2005年10月16日,星期天,我繁忙但充實的一天。
今天主要做了三件事:看到神六,過把評委癮,微軟筆試。
第一件:我看到神六了。
這真的是令人興奮,我看到神六了!時間是2005-10-16凌晨。5:25 準時守候在北極星前,茫茫夜空悄然無聲,門口賣早餐的人們已經開始了一天的工作,我出了大門,我邊走邊仰頭望天,心中的好奇沖淡了秋晨的寒涼。突然看到遠處一個星星自西向東緩緩而來,在北極星下方掠過,繼續勻速前行,亮度約相當于2等星,持續時間為半分鐘左右,這是神六的末級火箭,低頭看看表時間約為5:34。目送火箭遠去,我繼續搜尋,西方的天空重歸寂靜,我下意識抬了抬頭,果然,又一顆星星迎面而來,亮度比火箭稍強,在北極星上方自西向東劃過,穿過北極星與勺口的連線直奔北斗腹地,哈哈,我看到神六了,不知我們的航天員他們此時在做些什么,他們可會知道神州大地有多少人正在興奮地望著他們。它并不留情面,很快便離我遠去,奔向前方,期望他們平安回來,我默默的在心中說到。總算如愿以償,我,第一次看到我們的飛船了。
第二件事:過把評委癮。
跨越兩個學期的課程終于結束,商業道德這個企業冠以自詡的名詞,終于要和你說再見了。再見至于我還有幸做回評委,十足過了把癮。忽然發現,原來挑別人的刺還是蠻舒服的。
不過,癮過得有點大,散會后12點多了,飯后就12:40多了,我還沒有打印準考證,而且,還沒有準備讓我百思不其起解的準考證上注明要準備的鉛筆。算啦,不管怎么說,既然他寫了,我就拿之支吧,只是害得我還得買橡皮。嘻嘻。一切準備就緒已經13:20了,呵呵,不著急,找地方我很拿手。
第三件事:微軟筆試。
趕到考場已經13:45,閑話少數,考試開始了。經過一番沒睡午覺后的疲勞作戰,考試結束了。走出考場就像先睡一覺。呵呵不管了,一切聽天由命吧。不過,人不能太自私,總結一下,利己利人吧^_^。
我做的A卷,這套題共分五部分,依次是Basic,Reasoning,Programming,Design,Testing。
Basic好像有11道題多選題,答對一個加一分,答錯一個扣0。5。
有一個是給匯編代碼,讓選擇其功能。最后一個是SQL題,我不懂,不會:(。別的記不起來了。
Reasong部分好像有12道題。其中前兩道題我敢斷定是從GRE上抄來的,可惜GRE的書我雖然借了,但是沒看。這兩道題根本沒讀懂,也就不說了。后面的題由一個大題組成,分成好像是10個小題。
大題題面大意為:現欲舉辦一場音樂會,組織者準備請四個小提琴家F,G,H,J和五個鋼琴家R,S,T,W,Z。會議有六天,每天只能有一個人表演,但是有如下限制:
(1) 如果F表演,則前三天必須都為小提琴表演;
(2) 如果J表演,則必須是在第六天
(3) 如果R表演,則T必須在第一天表演。
(4) 如果W表演,它的前一天和后一天都不能是鋼琴表演。
問組織者應如何安排表演?
下邊有10個小題左右,都是針對可能情況發問的。我隨便舉一例吧:
下面哪項可能為真?(多選)
A. 如果F表演,則W不可能表演。
B. 如果R表演,則W不可能表演。
C. 如果J表演,則F,W不能同時表演
D. 如果W表演,則S,T不能同時表演。
聲明:此題為我根據印象編制的,反映題目類型。忠告大家:要對付此題有一個絕好的辦法:你去找那個五個小姐,領養五個寵物,穿五種顏色衣服,喜歡吃五種水果那道題。自己推出那道題,此類問題一概搞定。
Programing部分有兩道大題。
第一題如下:編寫一個函數GetGCD,來求一個數組中N個數的GCD(Greatest Common Demonitor),即最大公約數。并寫出盡可能多的測試用例。
例如GCD(18,12)=6, GCD(14,35)=7。。。
(1)函數原型如下:int GetGCD(CAryInt & aryInt);
(2)數組訪問使用[]操作符,
(3)數組元素個數由CAryInt 的成員函數GetSize獲得。
眾所周知,求最兩個數大公約數算法為歐幾里得算法,求整個數組的最大公約數就可以先求頭兩個的,然后求結果和第三個數的最大公約數,依次反復,直到最后,具體算法在此不贅述。
第二題如下:設計一個數據結構,用來存儲一個字典。并寫一個函數PrintWord,當要查詢‘ab’時,其輸出為所有以ab開頭的單詞。此題開始沒想到怎么做,后來突然想起可以用樹來存儲,我的實現為:將所有相同字母開頭的單詞組成一個樹,這樣26個樹組成的森林即為整個字典。樹的每個結點有26個兒子,分別代表a到z,然后還要有個字段表示該結點的字符串,還要有個字段表示該字符串長度,遺憾的事,還應該有個字段表示該結點是否是單詞,可惜我當時沒想到,不管啦,聽天由命吧。具體算法即結構定義略。
Design部分一個大題,題目是讓你給MSN Messenger提出新的特性,如果給你三個月時間,你如何改進它?這個題我自己從用戶界面角度編了這么幾條(純屬個人意見,不要罵我哦):
(1) 應該有自動隱藏功能,像QQ那樣。
(2) 還應該有留言功能。
(3) 還應該能更換皮膚
(4) 還應該能有MSN Space的快照,讓我方便的看到我朋友的MSN空間的縮略信息。
Testing部分有兩個大題:
第一題為找bug,改bug題。給的程序是判斷一個單向鏈表是否含有環的程序,如果有,返回產生環的第一個結點的指針,否則返回NULL。并寫出盡可能多的測試用例
Struct LinkedList {
LinkedList *pNext;
}
Struct LinkedList *IsCyclicList(struct LinkedList *pHead)
{
Struct LinkedList *pCur, *pStart;
While(pCur){
For(;;){
If(pCur!=pStart)
pStart=pStart->pNext;
}
pCur = pCur->pNext
}
}
這個程序寫得實在太爛了,改都不好改。我就簡單指出了其幾個典型錯誤,然后就自己寫了一個算法。
其典型錯誤為:鏈表結構定義的不對,沒有數據字段,否則這個鏈表沒任何意義;指針沒初始化;for循環會陷入死循環。
我給出的算法是
Struct LinkedList {
Int data;
Struct LinkedList *pNext;
}
Struct LinkedList *IsCyclicList(struct LinkedList *pHead)
{
Struct LinkedList *pCur, *pStart;
If (!pHead)
Return NULL;
Else if(!pHead->pNext)
Return NULL;
pCur=pHead;
pStart=pHead->pNext;
While(pStart&&pCur!=pStart){
If(pStart->pNext)
pStart=pStart->pNext->pNext;
else
pStart=NULL;
pCur=pCur->next;
}
Return pStart;
}
我也沒仔細推敲,對不對反正就它了。
第二題為:給你一個函數int system(char *command),該函數為command字符串的命令解釋器,其命令為機器可執行的命令,讓你寫出盡可能多的測試用例,有多少寫多少。
以前經常在往事看前人們的總結,現在也貢獻給大家一點,歡迎各位考友補充,希望對大家有幫助,也順便紀念我這繁忙而充實的一天^_^。