综合指导

当前位置 /首页/职场人生/综合指导/列表

网游公司的笔试题大集合

(转)

网游公司的笔试题大集合

1 上海乐升笔试:

冯诺依曼机的体系结构

各种RAM的名词解释

递归求5!

C程序优化

翻译有关windows资源处理的文章

上机:

写api 进行分数的四则运算

写api 针对2个8位的数的四则运算 该平台不支持16位

写api 对一个10个元素的数组排序 并且支持检索

老师教过的放10个球到盒子问题

2 扬讯科技(手机)写个MIN(a, b)的宏

函数指针

指针数组等

游戏程序的特点

游戏程序的结构

链表的'插入 索引

typedef 和 #define 的优点和缺点

你最熟悉的游戏算法

3 巨人网络

s String

{

public:

String(const char *cp = NULL);

String(const String & cp);

~String();

String& operator = (const String & cp);

operator const char *() const;

private:

char *m_data;

}

1) 完成类的方法;

String::String(const char *str)

{

if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断

{

m_data = new char[1] ;

m_data[0] = ;

}

else

{

m_data = new char[strlen(str) + 1];

strcpy(m_data,

String::String(const String &another)

{

m_data = new char[strlen(another.m_data) + 1];

strcpy(m_data,other.m_data);

}

String& String::operator =(const String &rhs)

{

if ( this == &rhs)

return *this ;

[]m_data; //删除原来的数据,新开一块内存

m_data = new char[strlen(rhs.m_data) + 1];

strcpy(m_data,rhs.m_data);

return *this ;

}

String::~String()

{

[]m_data ;

}

operator const char *() const

{

return str;

}

2) operator const char *() const 后面的const的作用.

和malloc/free的区别,什么时候需要建立自己的内存分配机制。

ic和volatile的用途。

static:

4.什么是深拷贝?什么是浅拷贝?举例说明。

#include

#include

class Base

{

private:

char * name;

public:

Base(char * className)

{

name = new char[strlen(className)+1];

strcpy(name, className);

}

~Base()

{

name;

}

char *copyName()

{

char newname[256];

strcpy(newname, name);

return newname;

}

char *getName()

{

return name;

}

static void print (Base base)

{

printf("name: %sn",);

}

};

class Subclass : public Base

{

public:

Subclass(char * className) : Base(className)

{

}

};

int main()

{

Base *pBase = new Subclass("test");

Base::print(*pBase);//用后会被释放掉,下面的指向将为空指针,应改为引用

printf("name: %sn", pBase->getName());

printf("new name: %sn", temp);

return 0;

}

对上面程序进行编译不报错,但是程序不能执行.

下面是改正后的:

#include

#include

class Base

{

private:

char * name;

public:

Base(char * className)

{

name = new char[strlen(className)+1];

strcpy(name, className);

}

~Base()

{

name;

}

char *copyName()

{

char *newname = new char[strlen(name)+1];

strcpy(newname, name);

return newname;

}

char *getName()

{

return name;

}

static void print (Base base)

{

= Name(); //深度拷贝

printf("name: %sn",);

}

};

class Subclass : public Base

{

public:

Subclass(char * className) : Base(className)

{

}

};

int main()

{

Base *pBase = new Subclass("test");

Base::print(*pBase);//用后会被释放掉,下面的指向将为空指针,应改为引用

printf("name: %sn", pBase->getName());

char *temp = pBase->copyName();

printf("new name: %sn", temp);

temp;

return 0;

}

5.一个自定义类String的改错题。

GetMemory(char *p)

{

p = (char *)malloc(100);

}

void Test(void)

{

char *str = NULL;

GetMemory(str);

strcpy(str, "hello world");

printf(str);

}

请问运行Test函数会有什么样的结果?

如果函数的参数是一个指针,不要指望用该指针去申请动态内存。示例7-4-1中,Test函数的语句GetMemory(str, 200)并没有使str获得期望的内存,str依旧是NULL,为什么?

void GetMemory(char *p, int num)

{

p = (char *)malloc(sizeof(char) * num);

}

void Test(void)

{

char *str = NULL;

GetMemory(str, 100); // str 仍然为 NULL

strcpy(str, "hello"); // 运行错误

}

示例7-4-1 试图用指针参数申请动态内存

毛病出在函数GetMemory中。编译器总是要为函数的每个参数制作临时副本,指针参数p的副本是 _p,编译器使 _p = p。如果函数体内的程序修改了_p的内容,就导致参数p的内容作相应的修改。这就是指针可以用作输出参数的原因。在本例中,_p申请了新的内存,只是把 _p所指的内存地址改变了,但是p丝毫未变。所以函数GetMemory并不能输出任何东西。事实上,每执行一次GetMemory就会泄露一块内存,因为没有用free释放内存。

如果非得要用指针参数去申请内存,那么应该改用“指向指针的指针”,见示例7-4-2。

void GetMemory2(char **p, int num)

{

*p = (char *)malloc(sizeof(char) * num);

}

void Test2(void)

{

char *str = NULL;

GetMemory2(&str, 100); // 注意参数是 &str,而不是str

strcpy(str, "hello");

cout<< str << endl;

free(str);

}

i;

std::list list1;

for(i = 0; i < 8; i++)

_back(i);

for(std::list::iterator = n(); iterator != (); iterator++)

if (*iterator % 2)

e(iterator);

这段代码在运行时会产生什么错误,怎么改正。

erase之后iterator失效

就加一个就完了。

#include

int main()

{

std::listlist1;

for(int i=0;i < 8;i++)

_back(i);

for(std::list::iterator it=n();it!=();++it)

{

if(*it%2 == 0)

{

it = e(it);

it --;

}

}

return 0;

}

8.对Gcc编译选项做些介绍。

中如何设置中断点,逐步调试程序。

10.游戏编程中如何对显存进行管理。//这是唯一的一道和游戏直接有关题目。

ows中的内存分配方式有哪些,他们的优缺点是什么。

TAG标签:网游 笔试 题大 #