微软面试题及答案.doc_第1页
微软面试题及答案.doc_第2页
微软面试题及答案.doc_第3页
微软面试题及答案.doc_第4页
微软面试题及答案.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(微软2004-11-13的笔试题解析)1、求函数返回值,输入x=9999;intfunc(x)intcountx =0;while(x)countx +;x = x&(x-1); returncountx;【试题解析】解这道题的时候,如果拿出一个二进制数来分析就会容易的多了,x=x&(x-1)实际上就是把x的二进制形式的最后一个“1”变成“0”,x的二进制形式有多少个“1”循环就执行多少次。9999/256 = 39余15,把这两个数分别转化一下就很快了39 = 32 + 4 + 2 +1 = 0010011115 = 0F = 00001111所以9999=0010011100001111,共有8个1,答案就是8了2、实现以下程序,以方便binary search.要有处理错误语句.队列的分配的大小是固定的MAX_LEN,由第二个参数输入.不能复制队列insert (int *arr, /队列 size_l len, /队列大小 size_l count, /队列元素的数目 int varl /要处理的数据)返回插入数据的索引remove(int *arr,size_l len,size_l count,int varl)返回删除元素的索引search(int *arr,size_l len,size_l count,int varl)返回搜索道元素的索引【试题解析】略。数据结构书上都有的。3、堆栈R,从顶到底:2,4,6,8,10,逐个取出放入队列Q中,再从Q中逐个取出放入R中,问现在堆栈R中从顶到底的顺序。【试题解析】这个也不用了吧,10,8,6,4,24、写出程序的结果:_intfuna(int*a) a0 +;intfunb(intb) b1 += 5;main()inta5 = 2,3,4,5,6;intb5 = 2,3,4,5,6;int*p; p = &a0; (*p)+;funa(p); for(inti = 0; i3; i+) printf(%d,a); p = &b1;funb(p); for(i = 0; i(MAX_PATH_LENGTH-1) ) return -2;没有检查新开辟的空间能否容纳传进来的字符串,否则有可能越界*pBuffer题中的原意是当到字符串末尾的时候跳出循环,所以应该是取字符串的内容同delete pBuffer; pBuffer=NULL;没有释放新开辟的空间,会造成内存泄漏6、你觉得下一代浏览器应该添加什么功能?【题目解析】当时随便写的,比如安全性,搜索功能等。7、给出函数strcmp()的测试方案 int strcmp(const char * str1, const char *str2)【题目解析】主要考查考虑问题的全面型,我觉得有一个电冰箱测试的例子不错我写了几个(仅供参考):str1str2NULLNULLaNULLNULLaa abcabcacd.xjsefn8、测试一个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、链表反转:(这道题不是微软的,不过考的比较多,就不另外开贴了)数据结构如下:typedefstruct_Nodeintdata;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 whilereturnnewHead;/ end of Reverse1、下面的程序运行时哪里会出现错误:structSinti;int* p;intmain()S s;int* p = &s.i;p0 =4;p1 =3;s.p = p;s.p1 =1;s.p0 =2;return0;【题目解析】这道题考的是对结构体内存使用情况的理解。在32位的操作系统中,int和指针类型的变量占用空间都是4个字节。在本题中&s.i的值实际就是&s的值,所以“int * p = &s.i”也就相当于把p指向了结构体s的地址的起始位置。如图1所示。图1假设&s的值为0x12300,则p的值也是0x12300,p0指的是从0x12300开始的连续4个字节的空间,p1指的是从0x12304(注意!不是0x12301)开始的连续4个字节的空间。这样,p0也就相当于s.i,p1也就相当于s.p,分析到这一步,可以确定程序运行到“s.p=p;”这里不会出错。继续往下看。在进行了“s.p=p;”的赋值之后,s.p指向的是s的首地址,此时s.p0相当于s.i,s.p1相当于s.p。下一句“s.p1=1”执行过之后,此时s.p的值为1,也就是指向内存的0x00001处,隐患出现了。在执行“s.p0=2”的时候,实际上是向内存0x00001起始的连续四个字节写入0x00000002,而那块内存不属于这个程序,会出现访问非法内存的错误。VC解析的汇编代码如下(部分),有兴趣的可以参考一下。; 14: S s; 15: int * p = &s.i;00401028 lea eax,ebp-80040102B mov dword ptr ebp-0Ch,eax; 16: p0 = 4;0040102E mov ecx,dword ptr ebp-0Ch00401031 mov dword ptr ecx,4; 17: p1 = 3;00401037 mov edx,dword ptr ebp-0Ch0040103A mov dword ptr edx+4,3; 18: s.p = p;00401041 mov eax,dword ptr ebp-0Ch00401044 mov dword ptr ebp-4,eax; 19: s.p1 = 1;00401047 mov ecx,dword ptr ebp-40040104A mov dword ptr ecx+4,1; 20: s.p0 = 2;00401051 mov edx,dword ptr ebp-400401054 mov dword ptr edx,22、ABCDEF各是一个09的数字,根据下面的条件确定AF的值ABCDEF*2 = CDEFABCDEFAB*2 = EFABCD【题目解析】以下答案由winion提供ABCDEF各是一个09的数字,根据下面的条件确定AF的值ABCDEF*2 = CDEFABCDEFAB*2 = EFABCD一看到题目,我立即就想到了1/7,它正好满足这个数字的性质。所以答案是142857.1/7=0.1428572/7=0.2857143/7=0.4285714/7=0.5714285/7=0.7142856/7=0.857142然后是循环,注意到没有,都是142857这六个数字。以下答案由大辉提供ABCDEF*2 = CDEFABCDEFAB*2 = EFABCD2*AB = CD2*EF = 1AB2*CD+1 = EF8AB+2 = 100+ABAB = 14以下答案由dawangzi16提供1. E2C4A;=a=1or2;2.因为EF*2=AB,结合式子1得:(if A=2 then E=8 or 9此时不成立)所以A=1;E=5;同时得出F大于5; 此时:1BCD5F*2=CD5F1B;CD5F1B*2=5F1BCD;3。因为1B*2=CD所以推出:c=3或2; 又由CD*2=5F;推出C=2 ; D5;此时:1B2D5F*2=2D5F1B;2D5F1B*2=5F1B2D;4。因为1B*2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论