游戏软件开发工程师笔试题
第二部分 专业试题(60分钟)
请勿在笔试题目上答题,答案请写在草稿纸上。谢谢
一、 不定项选择题:
1. 设数组a[5, 10]的元素以行为主序存放,每个元素占用4个存储单元,则数组元素
a[i, j](0≤i≤4,0≤j≤9)的相对地址(对于a[0, 0])计算公式为
A. 10i + j B. 11i +j C. 10j + i D. 11j + i
2. 在一个32位机器上,采用4字节对齐方式,下面C++中结构sizeof(student)为_______
struct student {
int m_id:5;
char m_name[10];
bool m_sex;
int m_age;
};
A. 16 B.18 C. 20 D. 24
3. 下面哪种排序法对123456798在空间和时间上最优
A. 快速排序 B.冒泡排序
C. 插入排序 D.堆排序
4. C++在运行switch判断时(switch: ()),如下不能作为switch类型的是______
A. float B.int C. char D. unsigned char
5. 构造、拷贝构造和赋值运算符的概念
struct C
{
C()
{
cout <<"construct: C()" << endl;
i = 0;
}
C(const C &c) {
cout <<"construct: C(const C &c)" << endl;
}
C(int i) {
cout <<"construct: C(int i)" << endl;
this->i = i;
}
~C() {
}
C& operator = (const C&c) {
cout <<"operator = (const C &c)" << endl;
i = c.i;
return *this;
}
int i;
};
void test()
{
C *c;
c = new C(100);
C c2 = *c;
C c3;
c3 = c2;
}
四行输出的结果依次顺序为:
a. construct: C() b.construct: C(const C &c)
c. construct: C(int i) d.operator = (const C &c)
则输出的正确顺序为________
A. c b a d; B.a c b d C. c a b d D. d b a c
6. 请选择下列程序的输出结果________
class A
{
public:
void PrintOne(){cout<<”A”};
virtual void PrintSecond(){cout<<” A”};
};
class B: public A
{
public:
virtual void PrintOne(){cout<<” B”};
virtual void PrintSecond(){cout<<”B”};
};
void main()
{
A* a= new B;
B* b=new B;
a.PrintOne(); a.PrintSecond();
b.PrintOne(); b.PrintSecond();
}
A. A A B B B. B B B B
C. B B A B D. A B B B
7. 考虑函数原型void test(int a, int b=7, char* p=“test”),下面的函数调用中,属于不合法调用的是_____
A. test(5) B. test(5, 8) C.test(6, “hello”) D. test(0, 0, “hello”)
8. 若有以下类型说明语句
char w; int x; float y; double z;
则表达式 w * x + z - y的结果是______类型。
A.float B.char C.int D.double
9. 在______情况下适宜采用 inline 定义内联函数。
A. 函数体含有循环语句 B. 函数体含有递归语句
C. 函数代码少、频繁调用 D. 函数代码多、不常调用
10. 就排序算法所用的辅助空间而言,堆排序,快速排序,归并排序的关系是 ( )
A.堆排序〈 快速排序〈归并排序 B.堆排序〈 归并排序〈快速排序
C.堆排序〉 归并排序 〉快速排序 D.堆排序 > 快速排序 > 归并排序
E.以上答案都不对
11. 下面哪一个声明是正确的______
A. void print( int arr[][], int size );
B. void operate( int *matrix[] );
C. char * screenInit( int height = 24, int width, charbackground );
D. void putValues( int (&ia)[] );
12. 假设有如下定义:
void *pv;
const string *ps;
则下面哪种强制转化的写法是正确的? ______
A. pv = static_cast<void *>(ps)
B. pv = const_cast<void *>(ps)
C. pv = static_cast<void*>(const_cast<string *>(ps))
D. pv = const_cast<void*>(static_cast<string *>(ps))
13. 下列哪个输出是正确的________
char*a="Hello";
char *b="Hello";
char *c=”HelloWorld!”;
if (a==b)
cout<<"a==b"<< endl;
else
cout<<"a != b"<<endl;
if (a == c)
cout <<” a == c” <<endl;
else
cout <<” a != c” <<endl;
A a==b a==c B a!=b a == c
C a==b a!=c D a!=b a!= c
14. 枚举的概念
enum eEnum
{
eBase,
e1,
e2,
e3= 0,
e4
};
void test()
{
cout<< eBase << endl;
cout<< e2 << endl;
cout<< e3 << endl;
cout<< e4 << endl;
}
输出结果为:______
A. 0 2 0 4 B. 0 2 0 1
C. 0 0 0 1 D. -3 -1 0 1
15. 在网络字节序中,所谓”小端”(little endian)说法正确的是________
A. 高字节数据存放在低地址处,低字节数据存放在高地址处
B. 低字节位数据存放在内存低地址处, 高字节位数据存放在内存高地址处
C. 和编译器相关
D. 上述答案都不正确
16. 在x86平台上,采用_cdcel方式,下列哪个输出是合理的________
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. 0012FE70, 0012FD80, 0012FD7C
D. 0012FD7C, 0012FD80, 0012FE70
17. 下列哪个输出是合理的________
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 00372F48 00372F50
C. 00372F48 00372F4C 00372F48 D. 00372F48 00372F48 00372F48
E. 00372F48 00372F50 00372F48
18. 一株二叉树的以某种遍历方式的序列为A、B、C、D、E、F、G,.若该二叉树的根结点为E,则它的一种可能的前序遍历为____ ,相应的后序遍历为____
A. ECBADFG, BDCAFGE B. ECBADFG, EFACDBG
C. ECBADGF, EACBDGF D.EACBDGF, BDCAFGE
19. 关于图和树,下面说法正确的是________
A. 树和图都允许有环
B. 图的深度遍历和广度遍历结果可能一样
C. 二叉树是每个节点都有两个孩子节点的树
D. 二叉树的前序遍历和后序遍历结果肯定不一样
20. .完成在双循环链表结点p之后插入s的操作是( );
A. p->next=s ; s->priou=p;p->next->priou=s ; s->next=p->next;
B. p->next->priou=s; p->next=s;s->priou=p; s->next=p->next;
C. s->priou=p; s->next=p->next;p->next=s; p->next->priou=s ;
D. s->priou=p; s->next=p->next;p->next->priou=s ; p->next=s;
二、 单项选择题:
21. TCP使用_______进行流量控制。
A. 3次握手法 B. 窗口控制机制
C. 自动重发机制 D. 端口机制
22. TCP/IP层IP协议的服务是_______
A. 可靠服务 B. 有确认的服务
C. 无连接数据报 D. 以上都不对
23. 对于一个没有设置任何套接口选项的阻塞套接口,调用recv接收对方的数据,对方发送数据前突然断电,下列哪种情况将会发生________
A. recv永远不会返回 B. recv立刻返回-1
C. recv立刻返回0 D. recv在等待很长一段时间后返回-1
24. 下列哪些关于套接口选项函数的说法是正确的________
A. SO_DONTLINGER选项是让TCP套接口不对数据进行缓存,调用send函数后立刻将数据发送出去;
B.调用SO_RCVBUF和SO_SNDBUF调整TCP窗口的大小;
C. SO_REUSEADDR选项允许套接口绑定在一个已经在使用的地址上;
D. SO_MAX_MSG_SIZE选项获取每次调用TCP套接口send时,所能发送的最大字节数;
25. 以下哪句说法是正确的。
A 在页式存储管理中,用户应将自己的程序划分成若干个相等的页。
B 所有进程都挂起时,系统陷入死锁。
C 执行系统调用可以被中断。
D 进程优先数是进程调度的重要依据,必须根据进程运行情况动态改变。
三、 填空题:
用链表表示的数据的简单选择排序,结点的域为数据域data ,指针域next ;链表首指针为head ,链表无头结点。
selectsort(head)
p=head;
while (p(1)_______)
{
q=p; r=(2)_______
while((3)______)
{if ((4)_______) q=r;
r=(5)_______;
}
tmp=q->data; q->data=p->data;p->data=tmp; p= (6)_______ ;
}
四、 改错题,请指出下面程序中的错误,并提出修改方法。
1. class Base {
2. public:
3. Base(){}
4. ~Base() {}
5. char * getBuffer(){ return m_pdata;}
6.
7. private:
8. void * m_pdata;
9. };
10.
11. class DataBuffer : Base{
12. public:
13. ~Derived() {if (m_ pdata) delete m_ pdata; }
14.
15. Derived (int v):m_count(v),m_value(m_count){ m_ pdata = newchar[v]; }
16.
17. int PackageLen(intpkgLen ) {
18. int pos=0 ;
19. while (*(m_pdata + pos ) !="0") {
20. pos ++;
21. }
22. & pkgLen = &(pos++);
23. return pkgLen;
24. }
25. int RecvData(int sockid) {
26. return recvfrom(sockid,m_pdata,m_count);
27. }
28. private :
29. int m_value;
30. int m_count;
31. };
32.
33. int main(){
34. Base * b = new Derived(1024);
35. // ......
36. int dataLen = b->RecvData(sockId);
37. int pkgLen ;
38. b->PackageLen(pkgLen);
39. // ......
40. delete b;
41. //……
42. }
五、 简答题:
1) 产生死锁的必要条件是什么?解决死锁有几种方法?
2) 不使用系统库函数,请写一个在一个字符串中查找一个子串的程序。
游戏软件开发工程师答题纸(客观题)
姓名: 学校: 专业:
学历 手机: E-mail:________________
一、不定项选择题
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
|
|
|
|
|
|
|
|
|
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
|
|
|
|
|
|
|
|
|
|
二、单项选择题:
21 |
22 |
23 |
24 |
25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
三、填空题:
1.______________________2.______________________ 3.______________________
4.______________________5.______________________ 6.______________________