迅雷2017笔试题-深圳
void fun2(){ fun1(); };
};
class X
{
public:
virtual void funxv(){};
void funx(){};
};
class DB : public B , public X
{
public:
virtual void fun1(){ cout<<"DB::fun1()"; };
};
int _tmain( int argc, TCHAR* argv[] )
{
// 测试OK
B* pb = new DB();
if( DB* pdb = dynamic_cast<DB*>(pb) )
cout<<"cast ok 1"<<endl;
// 测试OK
X* px = new DB();
if( DB* pdb = dynamic_cast<DB*>(px) )
cout<<"cast ok 2"<<endl;
//// 测试失败 - 编译不过 - A不是多态类型
// 不能对不含虚函数的类的指针进行dynamic_cast<>运算
//A* pa = new DB();
//if( DB* pdb = dynamic_cast<DB*>(pa) )
www.qz26.com
// cout<<"cast ok"<<endl;
// 测试失败
B* prawb = new B();
if( DB* pdb = dynamic_cast<DB*>(prawb) )
cout<<"cast ok 3"<<endl;
// 测试失败
if( X* px = dynamic_cast<X*>(prawb) )
cout<<"cast ok 4"<<endl;
system( "pause" );
return 0;
}
第二大题 10道判断题
第三大题 10道多选题
第四大题 程序填空题
循环deque<T>
单链表逆序
2009.9.12日下午 迅雷2笔试题
一
有一副牌编号0~51,请把这副牌尽可能随机的发到4个人手里
注1:已经有rand()函数可以调用,但是rand()函数开销较大,请尽量少调用
a,b,c,d分别是13个元素的1维数组
函数原型 void deal( int[] a, int[] b, int[] c, int[] d );
二
实现字符串反转的c库函数 char* strrev(char* string)
注1:不可利用其他库函数,算法尽量高效、占用空间少。
三
有10亿个数,这些数的值都在0~1000万之内。实现接口 get_bigger_count( unsigned value )
输入一个值value,返回这10亿个数中比value值大的数的数目。
class order_calculate
{
public:
order_calculate();
~order_calculate();
unsinged get_bigger_count( unsigned value )
}
注1:get_bigger_count接口会被频繁的调用,实现要高效
注2:可以自己往内部任意添加变量和接口
注3:有个现成的接口 unsigned get_value_by_index( int idx ) 可以调用,该接口返回指定索引的value值
比如 get_value_by_index( 100 ), 返回10亿个数中第100个数的值。该接口开销较大,尽量少调用。
迅雷面试:
1:想map,hash_map中插入自定义数据结构时,需要满足什么要求?
呵呵,只要能给自定义数据结构指定选择一个良好的key,就可以插入。并且插入自定义数据结构仅和选择的key有关,和自定义数据结构无关。
对于map而言,STL 默认提供了 int,char*,string等作为key。 当选择int, char*,string等的时候,直接使用即可。
对于hash_map而言,STL默认提供了 int, char*作为key;STL提供了这些key的hash函数和==比较函数。
但是若要使用自定义的key呢?
www.qz26.com
自定义Key需要满足什么要求呢?
对于map而言,自定义key需重载<算符。满足可以比较大小。因为map内部使用红黑树实现,插入节点时需要比较大小。
STL为map默认提供了int,char*,string这些类型的比较大小函数。
对于hash_map而言,自定义key需满足:
1)重载()算符,并返回int行的hash函数