现在的位置: 首页 > 综合 > 正文

2014 微软校招笔试题以及答案(求指正)

2013年01月21日 ⁄ 综合 ⁄ 共 1908字 ⁄ 字号 评论关闭

校招题目链接:

http://blog.csdn.net/xiaoerlyl/article/details/12126807

 

参考答案:(仅供参考,待修正)

1. BD

线程可以共享主进程的内存空间,但是栈拥有自己的栈以及寄存器,子进程不能共享主进程的内存地址,子线程可以被主线程影响,子进程独立于主进程。

线程或进程争夺资源都可以造成锁。线程由于可以共享主进程的内存地址,窃以为可以直接相互通信。进程要通过管道、信号量等来通信。

2.CD

tcp是传输协议,不含有ip地址信息,只有端口信息。tcp支持广播。1024以下的端口号为知名端口号,其中21为ftp,23为telnet,25为smtp,80为http。

tcp提供可靠的传输,会处理丢包。正规的资料都说tcp不支持组播,B不对。网上有个帖子说jgroup可以让tcp支持组播,貌似是邪门歪道?

3.B

这个应该没啥疑问吧。

4.B

后续遍历序列,必须保证最后一个数能把前面的分为两部分,左边都比它小,右边都比它大。

5.AD

群里大神说是AD,对dll调用不很有把握。窃以为是只能共享代码文本跟文件描述符。

6.A

画个二叉树,数了数是14.

7.B

名字可能重复,编号不会重复。查找名字用二叉查找树,找到节点后,会有若干个编号,所以每个节点存一个单链表。

如果查找名字,编号是无重复的,有50万个,10000个桶不够用啊,觉得用数组更直接。

8.D

贝叶斯概率公式。

@软件-北京-hdfx 指出问题的易错点,并纠正为D。

9.CDE

外连接可以将未匹配的字段显示出来。也可以显示NULL字段。

10.BDE

深搜必须无路可走才能回退。

11.C

无疑义吧。

12.A

谢谢留言的指教,大家可以看留言为什么选A。

13.D

概率公式,求期望。

14.BD

无疑义吧。

@BUAA-CS-仲唐  指出c是返回值为函数指针且参数有函数指针的函数。

15.ABCD

减少高速缓存的丢页率、将递归转化为循环结构都能加快程序运行。

@北邮-电子-米 循环展开是一种古老的优化方法,在特别追求效率的程序中(如游戏)仍能见到踪迹。故应该选上d。

 @BUAA-CS-仲唐 指出  b是sse2之类的优化 也应该选 b

16.ABC

\w  代表 a-z A-Z 0-9

^ 代表 开头 $ 代表结尾  

\. 代表字符 .

.  代表任意一个字符( 除了 \n)

| 代表或的意思

17.D

应为 C+=A

18.ABCD

四个选项分别为:a选项资料链接:http://wiki.answers.com/Q/What_is_a_Vulnerability_scan_attack ,sql注射攻击,偷渡下载攻击,暴力攻击。

19.D

聚集索引一个表只能有一个,因为聚集索引是影响物理存贮地址的。

20.ABCD

数据库要与服务器分离。sa用户要设置强力密码。应用集中管理模式,可以加强党的领导。

 

 

编程题参考答案:

 Node * Reverse(Node *  head)

{

     Node * aux=new Node,* result=aux;

      aux->next=NULL;

       while( head)

       {

         Node *  t=head->next;

   head->next=aux->next;

         aux->next=head;

         aux=head->next;

 
 head=t;

       }

       aux=result; result=result->next;

       delete aux;

       return result;

}

Node * f( Node * root)

{

      if(!root||!(root->next)) return root;

      Node * Sow=root->next, * Fast=Slow;

      int size=0;

      while(Fast->next&&Fast->next->next)

     {  Slow=Slow->next; Fast=Fast->next->next; size++;}

     if(Fast->next==NULL) Fast=Slow->next;

     else Fast=Slow->next->next;

     Slow=root;

     Fast=Reverse(Fast);

     for(int i=0;i!=size;++i)

     {

         Node * t=Slow->next;

         Node * s=Fast->next;

         Slow->next=Fast;

          Fast->next=t;

          Slow=Fast->Next;

   Fast=s;

      }

  return root;

}

抱歉!评论已关闭.