微软笔试题和面试题答案解析与答案(二)

编辑:李老师高考志愿助手

  7、给出函数strcmp()的测试方案

  int strcmp(const char * str1, const char *str2)

  【题目解析】

  主要考查考虑问题的全面型,我觉得有一个电冰箱测试的例子不错

  我写了几个(仅供参考):

  str1 str2

  NULL NULL

  "a" NULL

  NULL "a"

  "a" "abc"

  "abc" "acd"

  ".xj" "sefn"

  8、测试一个 DVD Player,如果你仅有有限的时间,你会如何做?

  【题目解析】

  只是说说我的思路,不是标准答案。首先测试基本功能,然后是常用功能,然后是高级功能。

  9、在过去的这些年,你遇到了哪一个最大的困难,你是如何解决它的?你是单独做的还是和别人一起做的决定?为什么做这个决定?现在结果如何?

  10、逻辑题:

  有一5节车厢的过山车,每节能座两人,现有Luair,Jack,Gwen,Tom,Mark,Paul,6人去乘车,有以下条件

  1,Luair和别人同乘

  2,Mark 不合别人同乘,而且Mark的前一节车厢是空的

  3,Tom 不和Gwen 与 Paul 中的任何一人同乘

  4,Gwen乘3,或者4节

  ....下面是一些断言性的语句,让你判断对错

  【题目解析】

  Mark和那节空车厢可以当作一个整体,剩下的就是按照规则做排列组合就可以了,可能的种类不是太多。如果用笔画个草图的话就比较容易了。

  11、链表反转: (这道题不是微软的,不过考的比较多,就不另外开贴了)

  数据结构如下:

  typedef struct _Node

  {

  int data;

  struct _Node *next;

  } Node;

  完成函数 Node *Reverse(Node *head),head为不带头节点的链表的首部。

  Node *Reverse(Node *head)

  {

  Node *tmp = NULL; // 缓冲变量

  Node *newHead = NULL; // 反转后的新头节点

  if ( head==NULL ) return head; // 空链表的情况

  if ( head->next==NULL ) return head; // 链表只有一个节点的情况

  while ( head ) // 判断有没有移动到最后

  {

  tmp=head->next; // 临时记录下一个节点

  head->next = newHead; // 把原来链表中的节点放到新的链表的首部

  newHead = head;

  head = tmp;

  } // end of while

  return newHead;

  } // end of Reverse

中国点击率最高的一篇文章 !