游戏软件开发工程师笔试题

时间:2022-07-02 15:31:33


游戏软件开发工程师笔试题

第二部分 专业试题(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.______________________

 

四、改错题


五、简答题