test

一.单项选择题(必做题,每题3分) 1.在32位平台上,采用默认的结构对齐方式,下列代码的输出为:____ struct S{ char ch; int i; unsigned short ush; }; int main() { printf(“%d\n”, sizeof(S)); return 0; } A. 7 B. 8 C. 9 D. 10 E. 12 2.下列代码的输出为:____ int main() { char ch = 64; ch «= 1; printf(“%d “, ch); ch »= 1; printf(“%d\n”, ch); return 0; } A. -128 64 B. -128 -192 C. 128 64 D. -128 -64 3.下列代码的输出为:____ int main() { int i[] = {0, 0}; int* pi = i; pi++ = 1; printf(“%d %d %d\n”, i[0], i[1], *pi); return 0; } A. 1 0 0 B. 0 1 0 C. 0 1 1 D. 1 0 1 4.下列代码的输出为(注:%p表示输出地址):____ int main() { char pch = 0; short* psh = 0; int* pi = 0; pch++; psh++; pi++; printf(“%p %p %p\n”, pch, psh, pi); return 0; } A. 00000001 00000002 00000004 B. 00000001 00000001 00000001 C. 00000004 00000004 00000004 D. 00000000 00000000 00000000 E. 程序会崩溃 5.静态库a.lib中定义了一个全局对象g,b.dll、c.dll和d.exe都依赖于a.lib,并且都访问了全局对象g,d.exe启动后会加载b.dll和c.dll,d.exe运行时,进程中有几个全局对象g的实例:____ A. 1 B. 2 C. 3 D. 4 E. 程序链接时会出错 6.下列代码的输出为(假设CParent和CChild有正常的构造函数):____ class CParent{ public: void Intro(){ printf(“I’m Parent, “); Hobby(); } virtual void Hobby(){ printf(“I like football!\n”); } }; class CChild : public CParent{ public: void Intro(){ printf(“I’ m Child, “); Hobby(); } virtual void Hobby(){ printf(“I like basketball!\n”); } }; int main() { CChild* pChild = new CChild; CParent* pParent = (CParent)pChild; pParent->Intro(); return 0; } A. I’ m Child, I like football! B. I’ m Child, I like basketball! C. I’ m Parent, I like football! D. I’ m Parent, I like basketball! 7.在x86平台上,下列哪个输出是合理的____ void Func(int a, int *p) { printf(“%p, %p, %p”, &a, &p, p); } int main() { int a = 0, b = 0; Func(a, &b); return 0; } A. 0012FD80, 0012FD7C , 0012FE70 B. 0012FE70, 0012FD7C, 0012FD80 C. 0012FD7C, 0012FD80, 0012FE70 D. 0012FE70, 0012FD80, 0012FD7C 8.下列哪个输出是合理的____ class A{ public: virtual void Fun1() = 0; int m_a; }; class B{ public: virtual void Fun2() = 0; int m_b; }; class C : public A, public B{ public: C(){} ~C(){} virtual void Fun1(){} virtual void Fun2(){} }; int main() { C pC = new C; A* pA = (A)pC; B pB = (B)pC; printf(“%p %p %p\n”, pA, pB, pC); return 0; } A. 00372F48 00372F50 00372F44 B. 00372F48 00372F50 00372F48 C. 00372F48 00372F4C 00372F48 D. 00372F48 00372F48 00372F48 E. 00372F48 00372F48 00372F50 9.下列哪种进程间传输数据的方法系统开销最小____ A. 有名管道 B. 匿名管道 C. 网络套接口 D. 共享内存 10.下列哪个操作过程中最不可能发生进程切换(假设进程中只有一个线程)____ A. printf B. fprintf C. sprintf D. 以三种情况概率差不多 11.在多线程程序中,不被线程共享的是_____ A. 全局变量 B. 堆 C. 栈 D. 线程函数中申明的静态局部变量 E. 线程函数对应的代码段 12.将两个长度为 n 的递增有序表归并成一个长度为 2n 的递增有序表,最少需要进行关键字比较几次__ A. n(n-1) B. n-1 C. n D. 2n 13.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为____ A. GEDHFBCA B. DGEBHFCA C. DGBCEFAH D. DGBEHFCA 14.双向链表重的每个节点有两个指针,next指向下一个节点,prev,指向前一个节点,现要将新节点q插入到p节点后,假设p不是最后一个节点,下列操作哪个是正确的:____ A. q->next = p->next; p->next = q; q->next->prev = q; q->prev = p; B. q->next->prev = q; q->prev = p; q->next = p->next; p->next = q; C. p->next = q; q->next = p->next; q->next->prev = q; q->prev = p; D. q->next->prev = q; q->prev = p; p->next = q; q->next = p->next; 15.从0到2006,一共出现过多少个1,例如,“1”中有一个1,“11”中有两个1,“81”中有一个1,____ A. 1658 B. 1659 C. 1600 D. 1601 E. 1602 F. 1603 二.填空题(必做题,每题3分) 阅读下列程序或函数说明和 C 代码,将应填入__N处的字句写在答题纸的对应栏内。 [函数2.1说明] 函数strcmp()是比较两个字符串 s 和 t 的大小。若 s < t 函数返回负数;若 s = t 函数返回0;若 s > t,函数返回正数。 [函数2.1] int strcmp(char *s,char *t) { while ( *s && *t && __16){ s++;t++ ; } return 17; } [程序2.2说明] 在 n 行 n 列的矩阵中,每行都有最大的数,本程序求这 n 个最大数中的最小一个 [程序2.2]

2. include〈stdio.h〉

3. define N 100

int a[N][N]; void main() { int row ,col ,max ,min ,n; /输入合法 n (〈100 ),和输入 m ×n 个整数到数组 a 的代码略/ for ( row = 0;row < n;row++) { for ( max = a[row][0],col = l ;col < n;col++) if (18) max = a[row][col]; if (19) min = max; else if(20) min = max; } printf (“The min of max numbers is %d\n”,min); } 三.单项选择题(应聘非图形工程师的请选做此大题,每题3分) 21.关于IP,下列哪个说法是错误的____ A. 不可靠 B. 两点间跨越多个网络,每次通信路由是一样的 C. 两点间跨越多个网络,先发送的包不一定先到 D. IP层不提供流量控制功能 22.关于TCP,下列选项中哪个说法是错误的____ A. 可靠的 B. 面向连接 C. 提供流量控制 D. 终止TCP连接的正常方式是发送一个RST E. TCP建立一个连接需要3次握手,终止一个连接需要4次握手 23.关于套接口API,下列哪些说法是错误的____ A. 调用connect之前可以调用bind函数,指定源IP地址和端口; B. 如果是TCP套接口,函数connect激发TCP的三握手过程; C. listen函数的第二个参数backlog,表示该监听套接口允许接受的最大连接数; D. 如果不设置任何套接口选项,在调用closesocket(linux中是close)后,缓冲区中没有被发送的数据将继续发送 24.对于一个没有设置任何套接口选项的阻塞套接口,调用recv接收对方的数据,对方发送数据前突然断电,下列哪种情况将会发生____ A. recv永远不会返回 B. recv立刻返回-1 C. recv立刻返回0 D. recv在等待很长一段时间后返回-1 25.下列哪个工具必须用到TTL____ A. ping B. traceroute(windows下的tracert) C. netstat D. ifconfig(windows下的ipconfig) 四.单项选择题(应聘图形工程师的请选做此大题,每题3分) 26.哪种效果可以不用模版缓冲(stencil buffer)实现____ A. 图形合成(Compositing) B. 贴花(Decaling) C. 消融(Dissolves) D. 阴影(Shadow) E. 反锯齿(Antialiasing) 27.在DirectX9中的规范化剪裁空间里,默认的z值得范围是多少____ A. -1.0 ~ 0.0 B. 0.0 ~ 1.0 C. -1.0 ~ 1.0 D. float值域 28.请写出用正交矩阵转换3D空间中的顶点和转换发向量之间的差别____ A. P’ = P (x, y, z, 0) * M N’ = N (x, y, z, 0) * M B. P’ = P (x, y, z, 0) * M N’ = N (x, y, z, 1) * M C. P’ = P (x, y, z, 1) * M N’ = N (x, y, z, 0) * M D. P’ = P (x, y, z, 1) * M N’ = N (x, y, z, 1) * M 29.以下那项是描述材质的漫反射属性____ A. Diffuse B. Ambient C. Specular D. Emissive 30.以下哪项技术不能用来进行可见性判别____ A. bsp/pvs B. Octree C. quad tree D. DAG(directed acyclic graph) E. sector 五.问答题(必做题,共25分) 1.进程切换速度越快(耗费在切换上的时间越短),操作系统越好,不修改内核,不写驱动,仅编写普通应用程序,如何对进程切换速度(耗费在进程切换上的时间)进行大概的测量,请用文字(或伪代码)描述你的方案。(10分)

2.休闲游戏中,假设一个游戏大厅可容纳1000人,当玩家进入大厅后,可以看到大厅中的在线玩家列表,由于1000个玩家太多,所以一次显示1页就可以了,每页中有10个玩家。为了突出显示分数高的玩家,玩家列表是按分数排序的,最高分是第1页的第1个玩家,第1页最后一个玩家的分数高于或等于第2页第1个玩家的分数。若游戏客户端是按页来请求玩家列表的,一次请求一页,例如请求第5页时返回41-50个玩家,频道中每秒大概有1个玩家进或出,每秒大概有100个玩家列表请求,如果由您来完成服务器的这个功能,您会怎么做,当然要使效率尽可能高,请写出算法方案,不用写代码。(15分) 注:所有操作都是在内存中进行的,不进行涉及I/O操作的存储。