查看文章
 
微软笔试题解析和答案
2008-03-16 22:58


1
、求函数返回值,输入x=9999;
int func(x)
{
    int countx = 0;
    while(x)
     {
         countx ++;
         x = x&(x-1);
     }
return countx;
}
【试题解析】
   
解这道题的时候,如果拿出一个二进制数来分析就会容易的多了,x=x&(x-1)实际上就是把x的二进制形式的最后一个“1”变成“0”,x的二进制形式有多少个“1”循环就执行多少次。

9999/256 = 39
15,把这两个数分别转化一下就很快了
39 = 32 + 4 + 2 +1 = 00100111
15 = 0F = 00001111
所以 9999=0010011100001111,共有81,答案就是 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,2}

4
、写出程序的结果:___________
int funa(int *a)
{
a[0] ++;
}

int funb(int b[])
{
b[1] += 5;
}

main()
{
   int a[5] = {2,3,4,5,6};
   int b[5] = {2,3,4,5,6};
   int *p;
p = &a[0];
(*p)++;
    funa(p);
for(int i = 0; i<3; i++)
printf("%d,",a[i]);
p = &b[1];
    funb(p);
for(i = 0; i<3; i++)
printf("%d,",b[i]);
}
【题目解析】
结果是:
4,3,4,2,3,9

(*p)++;
也就是a[0]++
funa(p);
中的 a[0]++ 是将 main 中的数组 a[0]++
数组 a 中只有第一个元素加了两次 1

p = &b[1];
p指向了数组 b 的第二个元素
funb(p);
中的 b[1]+=5 是将 main 中的数组 b[2]+=5
数组 b 中的第三个元素加了 5


5
、找出下面程序的 BUG
int CopyStringAndCount(char * Str)

{
    int nCount = 0;
    char * pBuffer;

  
     pBuffer = new char[MAX_PATH_LENGTH];
    


    

     strcpy(pBuffer, Str);

    for ( ; pBuffer
; pBuffer++ )
        if ( pBuffer
=='\\' ) nCount ++;
    
    

    return nCount;
}

【题目解析】
(const char * Str)
  
如果在函数体内不需要改变字符串的内容,最好加上 const 以免误修改字符串内容
char * pBuffer = NULL;
  
指针声明的时候最好赋初值 NULL
if ( !pBuffer ) return -1;
  
开辟空间之后没有检查是否成功,没有错误检查
if ( strlen(Str)>(MAX_PATH_LENGTH-1) ) return -2;
  
没有检查新开辟的空间能否容纳传进来的字符串,否则有可能越界
*pBuffer
   
题中的原意是当到字符串末尾的时候跳出循环,所以应该是取字符串的内容
同⑤
delete pBuffer; pBuffer=NULL;
   
没有释放新开辟的空间,会造成内存泄漏


6
、你觉得下一代浏览器应该添加什么功能?
【题目解析】
   
当时随便写的,比如安全性,搜索功能等。




类别:职场风云||添加到搜藏 |分享到i贴吧|浏览(1068)|评论 (0)
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu