一.填空题:
1. Char szTest[]=”12345\t\n\0abcd\0”; 则 strlen(szTest)值为____, sizeof(szTest)值为___
2. Int anTest[5][10]; int n1= &anTest[4]- &anTest[10], n2= &anTest[3][1]- &anTest[1][3]; 则 n1 的值为_____.
3. Char szNum[]=”123456789”; int n= *(short*)(szNum+ 4)- *(short*)(szNum); 则 n 的值为_____.
4. STL中二分查找算法函数名称为____,稳定排序算法函数名称为_____,部分排序算法函数名称为____.
5. STL 中 map 通常是用数据结构中的___实现。
6. 下面的函数是求两个数的较大者,请填空(只能填入一条语句):
Int max( int a, int b )
{
Return ______;
}
7. 下面程序的运行结果是:____
#include <iostream>
Int cc( int I )
{
For( ; i< 4; )
Std::cout << cc( ++I );
Return I;
}
Int main()
{
Cc(1);
Return 0;
}
8. 要增加一个类到某种类型的隐式转投可通过重载____操作符实现。
9. C++ 64位编译环境下,sizeof(int)= ___, sizeof(int*)= ____
10. 列举 c++0x 的任意三个新特性___,____,_____.
11. 填入下面缺失的语句:
Unsign ed int strlen( const char* pstr )
{
__asm{
Mov eax, pstr
Cmp byte pst[eax], 0
Jz zreturn
Zloop:
_________
Cmp byte ptr[eax], 0
Jnz zloop
Zreturn:
Sub eax, pstr
}
}
二.诊断题:(下面的说法如正确直接回答正确即可,如错误说明原因)
1. 全局变量和静态变量在内存中的存储位置是相同的
2. Windows 操作系统中进程是基本的执行单位
3. 在栈上分配内存和在堆上分配内存效率是一样的
4. Sizeof属于c++的内联函数
5. 构造函数只能定义为public而不能定义为procted 或 private
6. C 语言的 qsort 与 c++ 的sort 都采用了快速排序算法,但 c 语言的效率比 c++ 的高,所以 qsort 比 sort 快
7. 用 new [] 分配内存如果用 delete 释放,结果是一定会造成内存泄露
8. 全局对象及静态对象在 main 函数执行之前构造
三.问答题
1. Unresolved external symbol 是什么错误?出现的原因是什么?
2. 线程死锁的原因是什么?要防止死锁我们在多线程编程中要注意什么?
3. 什么叫哈希算法?它有些什么应用?
4. 列举 Windows 操作系统中进程注入的方式
5. 请从程序机制上解释缓冲区攻击原理
6. 简述 copy-on-write 机制及其有哪些应用?
7. 解释以下函数声明中三个 const 的作用:
Template<class T> void Fun( const T* const& p ) const;
四. 程序题
1. 以下函数功能为把传入的两个整数值存到一个 Buffer 里面,完成函数实现。
Bool StoredDataToBuff( int a, int b, char* pBuffer, unsigned int uBufferSize);
2. 100 个苹果要完全随机地分配给4个人,每个人都可能得到0-100个苹果,请设计一个随机分配算法,要求:
在结果随机(不可预知)的基础上,每种分配结果的概率都是均等的,比如(25,25,25,25)是一种分配结果,(0,0,0,100)也是一种分配结果,这两种结果出现的机率是一样的。
3. 某游戏服务器最多能同时接受 N 个连接,当游戏客户端连接服务器时,服务器分给该连接分配一个连接 ID ( ID的范围1-N ),当游戏断开时该 ID 会回收重用。请设计并实现一个 ID 分配器。说明:
1)。 ID分配给一个连接后,在该ID被回收前不能再次分配
2)。若无已可分配的 ID( 即同时连接数达到上限),则分配失败,返回0