您的位置:首页 > 其它

微软笔试之反思(一)

2006-04-19 21:12 323 查看
本文严禁转载。

今天下午4点到6点,参加了微软研究院和工程院的联合笔试,结果真的被鄙视了。


两个小时,三道题,其实都不难。

我的觉得工程院注重思路的严谨性,还有考虑是否全面,特别是第二题。

而研究院可能更注重创新精神。我的答题思路都是比较传统的,没有什么创意,唯一的一句有点创意的,大概就是:“Sorry! I've not enough time for the rest code.”


看了大家的情况,估计情况都跟我差不多,不过也不排除猛人。

两院说今年在我们这里招5-10人,不知道有没有机会挤进去。

郁闷的事情是:前几天刚参加过MIURA公司的面试,结果要到5月才能下来,现在微软又来了,真的希望MIURA能不要我了,但是微软的又没有把握。sigh!

神奇的事情是:交完卷子,慕老师喊住我,问我你到底想到什么公司?因为你的GPA是咱们班最高的,你的去向很受关注的。我晕,很不确定的说:“不是吧,似乎杜明阳的比我的要高!”慕老师又确认了一下,说貌似我的确实是最高的。他还说:“我要提醒你一件事情,研究院留下的可能相当小,但是工程院留下的可能就比较大了。”

下面分析一下题目:

其实不是什么分析,试题需要保密,我也不敢太详细的公开写出来


第一题大致是reverse a double linked list,define the datastructure and prototype yourself

这道题很容易,类似的考研题做过无数次,不过在这种情况下就要好好考虑了。

我定义数据结构就是按部就班,学严老的书的形式,除了node外,还定义了一个dll,感觉似乎多此一举。

原型貌似没有什么好说的。

由于没有具体的要求,也没有空间时间上的要求,所以发挥余地比较大,而这恰恰是MS所看重的地方。

具体的数据类型我没有用模板的形式,主要是模板的语法记不太清,汗。就用了elem+remark的方法。

没有空间要求,所以可以原地,也可以拆开重新组合,(再来一个新链表的方法就不考虑了

),我采用的方法是原地,三个指针,中间那个用来reverse,另外2个防止指针丢失。时间方面的要求我就做的比较麻烦了。while语句里边我有5个语句,不过没有时间,也没考虑过什么优化之类的。

错误处理,比如空链表,一个节点的链表。我把两个结点的链表也独立出来了,后来发现不需要,于是又remark了一下,this two lines is not neccessary.but it makes the code more clearly


第二题是实现一个函数Otctodouble。

感觉这题最麻烦,编译原理里边的东西都忘了。

我先说一下我的思路,travel三次。

第一次,识别是否有非法字符,语法是否合乎给定的formal definition。非法则返回0.0。由于我语法部分全忘了。所以就灭有给出理论,直接按自己的思路判定,比如+-不能在除第一个位置外出现,dot前后至少有一个数字,不能有超过一个的dot +和-(就这些,我都没有实现完全。)还有就是长度不能overflow我用的是小于log82128,(double为32字节,即128位,也灭有考虑dot和+-的判定)

第二次,扫描dot的位置并且确定正负,感觉这个travel最笨了。不过也没有办法,没什么创新能力。

第三次,根据dot的位置使用经典进制转换公式转换成double并输出。

唉。漏洞百出,没有考虑+。01这种情况,前方补零。还有一些,想起来再补上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: