好像现在巨人的校招还没有结束,现在写不知道会不会泄露题目...但是过久了总会忘记的,还是总结一下吧。
首先是笔试题目,过了几天,估计有一些题目已经忘记了,不过大概还是记得住的。第一题有两个小题,但是坑爹的是没有写序号,导致我以为是一个题目了。题目是这样的:
设计一个 指向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++运行时内存使用方式
最后一题是考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的删除原理上大致差不多