网游公司的笔试题大

时间:2021-03-17 18:50:40 综合指导 我要投稿

网游公司的笔试题大集合

  (转)

网游公司的笔试题大集合

  1 上海乐升笔试:

  冯诺依曼机的体系结构

  各种RAM的名词解释

  递归求5!

  C程序优化

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

  上机:

  写api 进行分数的四则运算

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

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

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

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

  函数指针

  指针数组等

  游戏程序的特点

  游戏程序的结构

  链表的插入 索引

  typedef 和 #define 的优点和缺点

  你最熟悉的游戏算法

  3 巨人网络

  1.class 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] = \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的作用.

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

  3.static和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: %s\n",base.name);

  }

  };

  class Subclass : public Base

  {

  public:

  Subclass(char * className) : Base(className)

  {

  }

  };

  int main()

  {

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

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

  printf("name: %s\n", pBase->getName());

  printf("new name: %s\n", 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)

  {

  base.name = base.copyName(); //深度拷贝

  printf("name: %s\n",base.name);

  }

  };

  class Subclass : public Base

  {

  public:

  Subclass(char * className) : Base(className)

  {

  }

  };

  int main()

  {

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

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

  printf("name: %s\n", pBase->getName());

  char *temp = pBase->copyName();

  printf("new name: %s\n", temp);

  temp;

  return 0;

  }

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

  6.void 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);

  }

  7.int i;

  std::list list1;

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

  list1.push_back(i);

  for(std::list::iterator = list1.begin(); iterator != list1.end(); iterator++)

  if (*iterator % 2)

  list1.erase(iterator);

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

  erase之后iterator失效

  就加一个就完了。

  #include

  int main()

  {

  std::listlist1;

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

  list1.push_back(i);

  for(std::list::iterator it=list1.begin();it!=list1.end();++it)

  {

  if(*it%2 == 0)

  {

  it = list1.erase(it);

  it --;

  }

  }

  return 0;

  }

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

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

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

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


【网游公司的笔试题大集合】相关文章:

苹果公司的面试题03-23

公司面试笔试题目03-22

求职故事:苹果公司的面试题03-25

苹果公司英文面试题03-20

给学弟学妹的求职笔面试总结09-02

微软公司面试智力测试题03-21

世界知名公司英文面试题目03-20

2017笔试各题型答题技巧07-10

有关面试的笔试题09-03

简单的职场的语录大集合99条11-08