迅雷2017笔试题-深圳
C++方向。
2009.9.12日上午 迅雷1笔试题
第一大题 15道单选题
1:int (*p)[3] p的含义是什么
2:699个结点的完全二叉树,有叶子节点多少个()
3: int,a=3,b=4,c=5,问下列哪些表达式的值不为0
(考&& || 算符的优先级 & ^)
eg a&&b&&c
a-=3 || a++ || a--
a&b&c
a^b....
4:虚函数可不可以重载为内联?
5:关于vector<>初始化问题
下面那个是非法的
vector<string> sVec;
vector<vector<int>> ivvec;
vector<vector<string>> svvec( "hello" );
6:关于下列操作哪个复杂度为O(1)
vector<>中插入元素, set中查找元素 hasp_map中查找元素 deque尾部删除元素
7:引用可不可以被重复修改,一个引用这次引用这个,下次引用那个,就像一个指针可以指向不同的地方一样
8:swap()的几种实现形式 swap(int* x, int* y) swap(int&x, int&y)等
9:关于移位运算,移位后,补进的位是0还是1?
对于左移,无论算术左移(对应有符号数)还是逻辑左移(对应无符号数)都是补0
对于右移,算术右移(对应有符号数)补进符号位,逻辑右移补0;
也就是说,对于逻辑移位,左右移位都补0
对于算术移位,左移补0,右移补符号位。
int a = -8;
00421D8E mov dword ptr [a],0FFFFFFF8h
unsigned b = 8;
00421D95 mov dword ptr [b],8
a = a>>3;
00421D9C mov eax,dword ptr [a]
00421D9F sar eax,3 // a是有符号数,使用算术右移 sar, 结果a = -1;
00421DA2 mov dword ptr [a],eax
b = b>>3;
00421DA5 mov eax,dword ptr [b]
00421DA8 shr eax,3 // b是无符号数,使用逻辑右移 shr, 结果b = 1;
00421DAB mov dword ptr [b],eax
5: 关于考关于模板
class TA
{
public:
TA(){ m_n = n; };
unsigned m_n;
};
unsigned n=3;TA<n> ta; // 该语句对不对? 不对,因为模板参数是编译器就确定的 n是局部变量不可以做参数
TA<3> ta; // 该语句对不对?对。
6:靠关于虚函数 - 这里给的代码其实是设计模式中的(策略模式)
class B
www.qz26.com
{
public:
virtual void fun1(){ cout<<"B::fun1()"<<endl; };
void fun2(){ fun1(); };
};
class DB : public B
{
public:
virtual void fun1(){ cout<<"DB::fun1()"; };
};
void main()
{
DB db;
db.fun1(); // 问输出什么?
}
7:考dynamic_cast<>的用法 C++的RTTI机制,运行时指针的识别
class A
{
public:
void funa(){};
};
class B : public A
{
public:
virtual void fun1(){ cout<<"B::fun1()"<<endl; };