微软校园招聘笔试题
10、二叉树的pre-order traversal为abcdefg,则它的in-order traversal可能是?
A、abcdefg
B、gfedcba
C、efgdcba
D、bceadfg
E、bcdaefg
以前序遍历abc为例,只有三个节点,中序遍历可能是cba, bca, bac, abc, acb
11、15个球放在4个袋子中,每个袋子至少有一个球且每个袋子中球的数目不同,总共有多少种放法?
A、4
B、5
C、6
D、7
E、None of above
不知道除了枚举有没有别的更好的办法
12、给了4个函数,可以看出其中第一个为选择排序,第二个为冒泡排序第三个感觉代码本身就有些问题第四个为快速排序。问哪一个排序能将数组a={(3,4),(6,5),(2,7),(3,1),(1,2) }变为{(1,2), ,(2,7), (3,1),( 3,4),(6,5)}
只比较第一个元素。
Stuct A{
Int key1;
Int key2;
};
比较函数为 int cmp(A x, A y) {return x.key1-y.key1;)
选择排序, 此题代码是选择的最小出列。选出最小的与前面的交换,其条件是cmp<0, 显然第一趟(3,4)与(1,2)交换后到了(3,1)的后面然后是(6,5)与(2,7)交换,其条件是cmp<0,所以(6,5)与(3,1 )交换,最后的输出结果满足题目要求
冒泡排序 其条件是cmp<0,显然(3,4)不可能会与(3,1)交换,因此不符合题目要求
快速排序是不稳定的排序,不能保证谁在谁前面,快排的条件是cmp<=0且其哨兵都是选择序列中的第一个作为哨兵,结合本题所给的数组a,结果是与题目相符。
13、继承、虚函数
下面程序输出结果
[cpp] view plaincopyprint?#include
using namespace std;
class Base
{
public:
char Value() { return 'A';}
virtual char VirtualValue() { return 'X';}
};
class Derived:public Base
{
public:
char Value(){return'U';}
};
class VirtualDerived:virtualpublic Base
{
public:
char Value() { return 'Z';}
char VirtualValue() { return 'V';}
};
void main()
{
Base *p1=new Derived();
Base *p2=new VirtualDerived();
cout<
p1->VirtualValue()<<" "<<
p2->Value()<<" "<<
p2->VirtualValue()<
}
#include
using namespace std;
class Base
{
public:
char Value() { return 'A';}
virtual char VirtualValue() { return 'X';}
};
class Derived:public Base
{
public:
char Value(){return'U';}
};
class VirtualDerived:virtualpublic Base
{
public:
char Value() { return 'Z';}
char VirtualValue() { return 'V';}
};
void main()
{
Base *p1=new Derived();
Base *p2=new VirtualDerived();
cout<
p1->VirtualValue()<<" "<<
p2->Value()<<" "<<
p2->VirtualValue()<
}输出:AXAV
14、两个线程thread1: x=1;r1=y; thread2:y=1;r2=x; x和y初始值为0,两者皆为全局变量,程序运行过后r1和r2的值可能是
A、r1=1,r2=1
B、r1=1,r2=0
C、r1=0,r2=1
D、r1=0,r2=0
15、A,B,C,D都为32位整型,基于以下给定的C,D能否得出A,B
A、C=A+B,D=A-B
B、C=A+2*B,D=A+B
C、C=A+B,D=B
D、C=A-B,D=(A+B)>>1
上一页 [1] [2] [3] [4] [5] [6] 下一页