2015巨人游戏开发工程师笔试题以及初面经验

好像现在巨人的校招还没有结束,现在写不知道会不会泄露题目...但是过久了总会忘记的,还是总结一下吧。

首先是笔试题目,过了几天,估计有一些题目已经忘记了,不过大概还是记得住的。第一题有两个小题,但是坑爹的是没有写序号,导致我以为是一个题目了。题目是这样的:

设计一个 指向void fun1(pram* var)的变量pfun1
建立一个数组,数组的类型是p1变量的类型
使用typedef优化你的代码

第一行就是说要做一个函数指针 

<pre name="code" class="cpp">void (*pfun1)(pram*);
pfun1 = &fun1;

 
当然,如果需要typedef进行优化的话,可以这样 

typedef void (*tfun1)(pram*);  //这样做的话tfun1就是一个类型
tfun1 pfun1 = &fun1;

第二行说的是动态类型编程,在不知道p1类型的情况下,要创建一个p1类型的数组,可以使用C++11标准中的关键字decltype,下面是代码

decltype(p1) array[5];

第二题考的是SQL中的多表合并,题目是这样的:

在游戏中经常会遇到合区的情况,合区的时候需要把db1中的表user和db2中的表user合并到db3中的表user中,请问我们需要如何操作(假设user表的列完全一致)

关于sql我已经很久没用了,大概写了一下,不知道对不对,希望大神指点一下:

insert (select * from db1.user,db2.user) into db3.user

第三题是网络编程的简单题目,但是因为好久没接触这一块了,基本上都忘完了,所以我是写不出的,题目是这样的:

请写出OSI七层网络和TCPIP五层网络中各层的名称以及其含义
百度上很多,这也是基础题,虽然我不会。

第四题是给出一小段代码,说出其中的含义,大概记得其中几题的代码,下面列出来吧。

第一小题

#ifndef __MOMOSCENE_SCENE_H__
#define __MOMOSCENE_SCENE_H__
//....
#endif

这个的含义当然是为了防止重复引用头文件。


还有一题是这样的:

template <typename T>
void fun()
{
    T t;
    // doSomething
}

这题当前是考的是泛型编程,值得注意的是typename可以替换成class,两者在大部分情况下使用的效果是一致的,其中极少情况是只能用class的


    还记得最后一题,是考stl中的map。题目是这样的(代码有点多,记不太全了)

struct my_struct {
	int a;
	float b;
};

struct my_less{
	bool operator() (my_struct const & my_str1,my_struct const & my_str2) const
	{
		return my_str1.a > my_str2.a; 
	}
};

std::map<my_struct,void*,my_less> my_map;

这个就是一个map类型变量,其插入的数据是严格通过my_less排序的


当然这题还有两题记不清楚了。


下一题是考继承的时候虚函数的调用顺序,代码过多,就补贴上来了,直接跳过吧。


再下一题是这样的

请说出C++运行时内存使用方式


这题可以看C++ primer ,上面有这块的分析,大体是分成三个区,一个是静态存储区,这部分在程序开始的时候就分配好了,程序结束的时候收回,提供给全局变量,static变量使用。另一个是给局部变量,类成员变量使用,特点是作用域结束收回,还有一部分是堆分配的,给new出来的对象使用,delete的时候收回


最后一题是考vector和set的删除方式

<pre name="code" class="cpp"><span style="white-space:pre"></span><pre name="code" class="cpp"><span style="white-space:pre">	</span>std::vector<int> vec;
	auto ita = vec.begin();
	while(ita != vec.end())
	{
		if((*ita) == 5)  ita = vec.erase(ita);
		else ita++;
	}

 
 

set的删除原理上大致差不多

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值