学习啦>创业指南>职场>笔试题>

C语言游戏开发笔试题

晓晴分享

  C语言游戏开发是今年来的热门岗位之一,具有很大的发展潜力。下面由学习啦小编为你提供的C语言游戏开发笔试题,希望能帮到你。

  C语言游戏开发笔试题(一)

  1、请写代码打印100之内的素数,讲求效率(请做你的解法的效率分析)

  2、求m,n的最大公约数

  3、输入10个字符串,打印出其中重复的字符串以及重复的次数

  4、请画图例(UML最好),给出windows下的文件目录的设计模式

  5、用OO表示狼吃羊羊吃草

  问答题:

  1、什么是subversion?它与vss,cvs的区别在哪?或者有什么优势?

  2、什么是wiki,关于程序项目的wiki你使用过哪些?wiki对你有什么帮助吗?wiki与程序文挡的差别在哪?

  3、什么是tdd?你使用过吗?tdd的关键在哪?跟传统的单元测试相比,有什么优越性?

  4、什么是单元测试?你用过哪些单元测试工具?他们的区别和好处各有哪些?你主要倾向于哪一种?

  5、什么是编程规范?你倾向于什么样的规范?他的好处在哪?

  6、什么是mfc?你经常使用那些mfc类?那么为什么很多人不主张使用mfc?

  C语言游戏开发笔试题(二)

  1、村子中有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。每个人可以观察其他的49条狗,以判断它们是否生病,只有自己的狗不能看。观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗,而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。第一天,第二天都没有枪响。到了第三天传来一阵枪声,问有几条病狗,如何推算得出?

  2、P先生、Q先生都具有足够的推理能力。这天,他们正在接受推理面试。

  他们知道桌子的抽屉里有如下16张扑克牌:

  红桃 A、Q、4

  黑桃 J、8、4、2、7、3

  草花 K、Q、5、4、6

  方块 A、5

  约翰教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉P先生,把这张牌的花色告诉Q先生。

  这时,约翰教授问P先生和Q先生:你们能从已知的点数或花色中推知这张牌是什么牌吗?

  P先生:“我不知道这张牌。”

  Q先生:“我知道你不知道这张牌。”

  P先生:“现在我知道这张牌了。”

  Q先生:“我也知道了。”3 楼高100层,你有2个玻璃球,在某一层n层扔下玻璃球会碎,而低于n层则玻璃球不会碎。

  1)你会选择在第几层扔第一个玻璃球来得到最少的尝试次数?

  2)假如没有电梯,每次都要上楼下楼,你会选择第几层扔第一个玻璃球来得到最短的路程(爬上爬下的楼层)?

  完美世界2017C++游戏开发笔试编程题

  第一题

  题意:给出一个序列a,需要找到一对位置(i, j)(j > i),使得a[j] - a[i]的值尽量大,同时i尽量大并且j尽量小,如果任意a[j] - a[i]都<=0,则输出-1,-1。

  题解:从1到n扫一遍序列处理即可,i尽量大用>=,j尽量小用>即可。

  代码:

  #include

  #include

  using namespace std;

  #define maxn (1000000)

  int a[maxn], prei[maxn];

  int main()

  {

  int n;

  cin >> n;

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

  {

  scanf("%d", &a[i]);

  prei[i] = -1;

  }

  int g = -1;

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

  {

  if(g == -1 || a[i] <= a[g]) g = i;

  if(a[g] < a[i+1]) prei[i+1] = g;

  }

  int d = 0, o = -1;

  for(int i = 1; i < n; i++) if(prei[i] != -1)

  {

  if(a[i] - a[prei[i]] > d)

  {

  d = a[i] - a[prei[i]];

  o = i;

  }

  }

  if(o == -1) cout << -1 << "," << -1 << endl;

  else cout << prei[o] << "," << o << endl;

  return 0;

  }

  第二题

  题意:给出一个序列,玩家需要跟boss进行博弈,玩家先手。每次只能从序列头或尾取一个值加到自己的得分上,玩家和boss都很聪明,求玩家和boss的最终得分。

  题解:可以发现总分不是很大,可以记忆化搜索。d[i][j]表示当拿到的序列为a[i, j]时,从中的最高得分。转移方程是d[i][j] = max(a[i] + d[i+1][j], d[i][j-1] + a[j]),向下递归并且记录d[i][j]是否已得到即可(应该算是区间dp?)。

  代码:

  #include

  #include

  using namespace std;

  #define maxn (111)

  int a[maxn], d[maxn][maxn], vis[maxn][maxn], sum;

  void dp(int l, int r, int tot)

  {

  if(vis[l][r]) return ;

  if(l == r) { d[l][r] = a[l]; vis[l][r] = 1; return; }

  dp(l + 1, r, tot - a[l]); dp(l, r - 1, tot - a[r]);

  d[l][r] = max(tot - d[l + 1][r], tot - d[l][r - 1]);

  vis[l][r] = 1;

  }

  int main()

  {

  int N;

  cin >> N;

  for(int i = 1; i <= N; i++)

  {

  scanf("%d", &a[i]);

  sum += a[i];

  }

  dp(1, N, sum);

  cout << d[1][N] << " " << sum - d[1][N] << endl;

  return 0;

  }

  面试技巧

  自我介绍技巧

  应聘者到外企或其他用人单位时,求职者往往最先被问及的问题就是“请先介绍介绍你自己”。这个问题看似简单,但求职者一定要慎重对待,它是你突出优势和特长,展现综合素质的好机会。回答得好,会给人留下良好的第一印象。

  回答这类问题,要掌握几点原则:

  1:开门见山,简明扼要,不要超过三分钟。

  2:实事求是,不可吹得天花乱坠。

  3:突出长处,但也不隐瞒短处。

  4:所突出的长处要与申请的职位有关。

  5:善于用具体生动的实例来证明自己,说明问题,不要泛泛而谈。

  6:说完之后,要问考官还想知道关于自己的什么事情。

  为了表达更流畅,面试前应做些准备。而且由于主考喜好不同,要求自我介绍的时间不等。所以最明智的做法应是准备一分钟、三分钟、五分钟的介绍稿,以便面试时随时调整。 一分钟的介绍以基本情况为主,包括姓名、学历、专业、家庭状况等,注意表述清晰;三分钟的介绍除了基本情况之外,还可加上工作动机、主要优点缺点等;五分钟介绍,还可以谈谈自己的人生观,说些生活趣事,举例说明自己的优点等。

    3575345