【 以下文字转载自 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字符串的命令解释器,其命令为机器可执行的命令,让你写出尽可能多的测试用例,有多少写多少。
以前经常在往事看前人们的总结,现在也贡献给大家一点,欢迎各位考友补充,希望对大家有帮助,也顺便纪念我这繁忙而充实的一天^_^。