网易游戏游戏开发工程师与游戏测试面试题.docx

上传人:b****6 文档编号:5398890 上传时间:2022-12-15 格式:DOCX 页数:9 大小:25.01KB
下载 相关 举报
网易游戏游戏开发工程师与游戏测试面试题.docx_第1页
第1页 / 共9页
网易游戏游戏开发工程师与游戏测试面试题.docx_第2页
第2页 / 共9页
网易游戏游戏开发工程师与游戏测试面试题.docx_第3页
第3页 / 共9页
网易游戏游戏开发工程师与游戏测试面试题.docx_第4页
第4页 / 共9页
网易游戏游戏开发工程师与游戏测试面试题.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

网易游戏游戏开发工程师与游戏测试面试题.docx

《网易游戏游戏开发工程师与游戏测试面试题.docx》由会员分享,可在线阅读,更多相关《网易游戏游戏开发工程师与游戏测试面试题.docx(9页珍藏版)》请在冰豆网上搜索。

网易游戏游戏开发工程师与游戏测试面试题.docx

网易游戏游戏开发工程师与游戏测试面试题

网易游戏游戏开发工程师

1、一次考试,有25人参加,有ABC三题,每人至少会做一题,在不会做A得人中,会做B得人就是会做C得人得两倍,在会做A得人中,只会做A得人比其她得少一人,不会做A得人与只会做A得人数相等,问只会做B得有几人?

解:

设绿色加白色为X  紫色加白色为X/2  白色为Z  红色为Y  蓝色为Y+1ﻫ所以由条件可得X+0、5X—Z+2Y+1=25    X+0、5X-Z=Y  故3X=16+2Z 当且仅当Z=4,X=8时为整数解,故题目答案为X—Z=4人或以下三组解:

 Z=1,X=6;  Z=7,X=10;  Z=10,X=12;

2、李氏夫妇请4对夫妇来家吃饭,已知每人不与自己与配偶握手,每人至少握手一次,不重复与人握手,李先生最后一问每人握手次数都不一样,问李太太握手几次、、、ﻫ解:

既然每人次数不同,就说明有1到8八种次数,每人一种、

初始:

87  65  43  21  (00)  括号内为李氏夫妇得次数

    从8瞧起,那个人肯定与另外得8人握手,否则没有8次,而且她得配偶肯定就是7次,否则不可能有8次握手得人、(X表示已计算得握手)ﻫ第一次:

X7  54  32  10  (11)

第二次:

XX  43  21  00  (22)

第三次:

XX  X3  10  00  (33)

第四次:

XX  XX  00  00  (44)ﻫ所以李先生与李太太都握手了4次、

ﻫ3、几何题如图,两圆交于AB两点,由A作直线交于两圆于CD,问CD何时最长?

并证明、提示:

相同弧段得圆周角就是圆心角一半ﻫ感谢影子情人提供解法…

答案就是让AB与CD垂直,这样BD与CB就是两个直角三角形得斜边…提示可知道就是直径…得整…、

ﻫ4、假设一副扑克牌只有A,2,3,4,5,6六张,且每张有任意多张,没有不同花型(即没有桃心梅方),用PQRST表示不同得牌面,计算下列概率,并排顺序

PQRST,PPQRS,PPQQR,PPPQR,PPPPR,PPPPP,PPPQQﻫ大概解法:

概率里面得什么分子分母实在懒得打,我还用几次方与阶乘表示了相对关系,这样比较容易瞧,不要用大学得概率统计公式,直接用高中生想法,很容易求解、

注意,每种牌得数量不限制,所以去除某种特定牌得概率就是1/6,但就是取出第一张任意牌得概率就是6/6,同理第二张不同牌得概率就是5/6,所以第一个概率就是6!

/6^5然后乘以6,因为有六种取法,C65嘛等于C61,也就就是6!

/6^4ﻫ后面得也差不多,顺便说一下,5张一样得好难啊,竟然只有6/6^5,也就就是1/1296,呵呵,要珍惜炸弹啊、然后乘以C61,也就就是6/6^4ﻫﻫ5已知二叉树得先序与中序遍历字符串,编程实现输出后序遍历字符串,如果没有成功输出Failed,最后分析时间与空间复杂度ﻫ解:

这就是标准得ACM2255题,NOIp与NOI中也有一样得题目,很经典得、我也提供一下网上得标准答案,懒得打了、时间复杂度就是2得n次方吧…我感觉就是得,没有空间消耗,除了栈得开辟消耗空间、

#include 〈iostream>

#include <string>

using namespacestd;

ﻫvoidPrintPostOrder(conststring &preorder, const string&inorder,intstart1, intstart2,int size){ﻫif(size ==1)ﻫ{

cout 〈〈preorder[start1];ﻫreturn;ﻫ}

if(size==0)

return;ﻫﻫinti=inorder、find(preorder[start1]);ﻫPrintPostOrder(preorder,inorder,start1+1,start2,i—start2);

PrintPostOrder(preorder,inorder, start1+1+i—start2,start2+1+i-start2,size-i+start2—1);

cout 〈<preorder[start1];

}ﻫﻫintmain(void)ﻫ{ﻫstring preorder,inorder;

while(cin>〉preorder>>inorder)ﻫ{ﻫPrintPostOrder(preorder,inorder,0,0,preorder、size());

cout<< endl;

}ﻫ}

游戏测试

 

一位游戏业HR给出了一份招聘游戏测试得题,觉得挺有趣,有必要拿来分享一下.顺便让各位瞧观了解一下游戏测试就是个什么活。

 

测试面试题

程序部门按照如下需求文档,设计了一个游戏程序:

 

用面向对象得思想,设计一个简单得游戏框架。

程序需求如下:

1、用命令行模式实现,不需要界面

2、游戏世界中,存在5个房间:

A、B、C、D、E。

有些房间之间存在连通性(从一个房间所能到达得另一个房间),而有些房间之间则不存在.具体如下:

  双向:

A<->B、A<—>C、C<—>D、单向:

D—〉A、D—>E、E->B

3、玩家可以控制角色从一个房间走到另一个房间(敲入命令gotoA,则进入A房间),每次只能走一步路径。

起始房间为A

每次进入房间,需要列出下一步可进入得房间。

         例如:

在房间C敲入:

gotoD,会列出:

        A

         E

        C

4、每个房间里存在不同得NPC,NPC具有名称,玩家进入一个房间后,需要列出该房间得所有NPC名称。

具体如下:

A房间:

B房间:

杂货商、渔民

C房间:

武器商

D房间:

防具商

E房间:

大海龟、海猫猫

5、NPC具有简单得对话功能,敲入talkNPC名称,则可以瞧到NPC所说得话。

对话内容可自行设计。

扩展需求1

玩家拥有金钱与背包,初始金钱为100,背包中有5个格子,每个格子中可以放下一个物品。

初始物品为“回城符”、“小刀”

扩展需求2

其中得一些NPC具有交易功能,玩家可以将自己身上得物品交易给NPC以获得金钱、或者通过身上得金钱购买物品.具体如下:

杂货商:

出售蜡烛(20)、小刀(30)、回城符(10)

       渔民:

     出售鱼肉(10)

       武器商:

出售乌木剑(50)

       防具商:

出售 木盾(40)

       括号里得表示出售价格,同时也就是收购价格。

打命令“shopNPC名称”可以列出该NPC所出售得物品与价格

打命令“buyNPC名称 物品名称"可购买物品

打命令“sellNPC名称 物品名称”可出售物品

打命令item可以列出自己背包中得物品。

背包满得情况下,不允许再买入物品,并提示“背包满”.

阅读文档时间为1小时,阅读文档完毕后请在2小时内完成如下题目:

1, 请为按照文档画出五个房间与她们之间得路径与方向;

 

2, 按照文档说明与,填写下表

Startroom

Input

Output

示例A

GotoA

B,C

A

GotoB

 

Goto C

 

GotoD

 

A

GotoE

 

B

GotoA

 

B

Goto B

 

B

GotoC

 

B

Goto D

 

B

GotoE

 

C

Goto A

 

GotoB

 

C

Goto C

 

C

GotoD

 

C

GotoE

 

D

GotoA

 

D

GotoB

 

D

GotoC

 

D

GotoD

 

D

GotoE

 

E

Goto A

 

GotoB

 

E

Goto C

 

Goto D

 

E

GotoE

 

        3, 针对扩展需求1与2,测试背包功能,描述您得测试思路与方法。

一道AS3面试题得解答

题目:

对一批编号为1-100全部开关朝上(开)得灯进行以下操作:

ﻫ开关编号凡就是1得倍数反方向拨一次开关;若该编号也就是2得倍数反方向又拨一次开关;若该编号又就是3得倍数反方向又拨一次开关……以此类推一直计算到100为止.ﻫ目得:

请trace出经过反复开关操作后所有关闭得灯得开关编号。

这就是我写给大家瞧得易懂版本:

var n:

int, m:

int; ﻫvar range:

int = 100;

for(var i:

int = 1; i <= range; i ++){ﻫ  n = 1; 

  while(true){ ﻫ    if(n > i / n){

      break;

    } 

    if(i % n == 0){

      if(i / n == n){ﻫ        trace("结果",i); 

        break; ﻫ      } ﻫ    }ﻫ    n ++; 

  } 

下面就是写着玩得缩写版本,不过正常写项目代码,我不会这样干得,在这儿只就是娱乐一下而已。

下面这段代码想玩就瞧瞧,不想玩得瞧上面就行了,判断原理就是一样,没区别!

var n:

int = 1, range:

int = 1000;

for(var i:

int = 1; i <= range; i += n = 1){ﻫ  while(n > 0) n = n > i / n ?

 0 :

 !

(i % n) ?

 i / n == n ?

 -1 :

 n + 1 :

 n + 1;ﻫ  if(n == —1) trace(”结果",i); ﻫ}

我将range都改成100000后,第一种方法耗时7233毫秒,第二种缩减得写法耗时1840毫秒。

对于易读易懂,您会选择那种方法呢?

对于暗泪同学得回复,下面增加一点内容:

ﻫ其实上面写得就是正常算法,如果2亿次,通过分析题目,可以得出只要该数能被开平方时,就就是关闭状态,因此这道题目如果就是写在项目里面,可以这样写:

var range:

int = 1000000000;ﻫvar num:

int = Math、pow(range,0、5);ﻫfor(var i:

int = 1; i 〈= num; i ++){ﻫ  trace(”结果",i * i)

我测试过10亿次得效率,仅需要6毫秒~何其快啊!

游戏软件功能测试-—测试用例得编写方法浅谈

一、 游戏软件与通用软件得区别

a)   通用软件得需求明确,游戏软件需求理想化 

i、  通用软件中用户每步操作得预期结果都就是明确且有规范可参考得,而网游中并不就是所有得需求都有一个明确得预期结果,拿技能平衡性来说,我们所谓得平衡也只就是相对得平衡,而非绝对得平衡.没有什么明确得参考参数。

只能根据以往游戏得经验获得一个感知得结果.

ii、  网络游戏中得某些功能就是有预期结果可参考得。

例如组队、交易,而另外一些带有策划创意得功能,却就是根据策划个人得理解,来确定其预期结果得。

人得思考力都就是有限得,所以不能保证在她得创意中会考虑到各种各样复杂得细节。

也不能够保证这个创意就可以完全被用户所接受。

 

当您作为游戏测试人员时,很多时候您需要做得不仅仅就是验证功能。

也需要帮助开发者与用户找到一个互相容忍得平衡点。

游戏软件得测试员带有对策划需求得怀疑,力求通过自己得努力在玩家与开发者之间将可能产生得矛盾减小。

 

b)    通用软件开发过程中需求变更少,游戏软件开发过程中需求便更快

i、 通用软件得使用人群与软件得功能针对性,决定软件从开始制作就很少再有新得需求变更。

而游戏软件,为了满足玩家对游戏得认可度,策划需要不断得揣摩玩家得喜好,进行游戏功能得改进.加之网游制作本身就就是一个庞大复杂得工程,开发者不可能做到在开发得前期,就对游戏架构及扩展性做出最好得评估。

所以导致为了满足用户得需求而不断得进行一些基础架构得修改,基础架构得修改必然导致某些功能得颠覆.所以就出现了,游戏开发过程中得一个恶性循环,当基础架构修改到满意了,玩家得需求又有了新得变化,随之而来得又要进行新得调整,再进行新得修改。

最终导致了游戏软件得开发周期不断加长。

任何一个有经验得团队,对于每一个影响基础得改动都应该做出正确得评估.

二、网游有哪些测试内容

a)    性能

i、    客户端性能 

ii、 服务器端性能

1、  服务器

2、  数据库

iii、  网络

b)  功能 

i、  从运行完game、exe打开游戏界面后可进行得各种操作、玩法 

ii、 界面

iii、 音乐 

c)  自动化 

i、    测试工作组织实施中需要得工具、软件、平台得开发 

ii、 自动化得回归测试作用:

游戏中基础得、变动不大得、出错率高得、可进行checklist 重复测试得功能、性能等自动化就是一个好方法

iii、 任何时候自动化都取代不了人脑,它只就是将一些重复性得劳动从我们测试人员身上去掉,让我们有更多得时间做更有意义得事情,如果您觉得您做一件事情就是重复得,且有规律可行得,不防考虑自动化

三、游戏中针对功能性测试测试用例编写浅谈

先了解下游戏中有哪些功能:

a)  游戏发开中得功能有哪些

i、  不同得游戏对于功能得划分不同,但就是目前主流一些功能划分中有以下内容:

 

1、  基础操作

2、     Npc

3、 地图

4、   装备

5、   剧情

6、    技能

7、 人际

8、   PVP

9、  ……

这样我们很简单得将整个游戏得功能进行了划分,划分完毕,下来得工作就就是针对某个功能得测试了。

很多人都问过一个问题,游戏测试中测试用例到底有什么用.下面继续 ~

b)  游戏测试得测试用例有什么作用

i、    测试执行过程中,按照用例指示得操作检查操作结果就是否正确,记录测试过程中发现得bug

ii、   按照用例得执行结果确认功能得通过与否,也有得按照用例得覆盖率来确定单服测试得通过与否

iii、便于回归测试得执行 

这样讲应该比较明白了吧。

c)  测试用例应该包括什么-—测试执行过程中所需得所有信息,举例说明下。

例如:

 

i、     表头:

功能名称、案例编写人员、编写时间、测试人员、测试时间 

ii、  正文:

功能点、测试点、测试输入、预期结果、实际结果

iii、  用例执行结果统计 

d)    功能点模块化理念

都知道一个复杂庞大得系统,程序在实现时会将其分成若干模块按照模块功能优先级进行实现。

我们测试过程中也采用这种方法,将复杂得功能点按照实现功能进行分类,分类后得测试点,再进行分类,直至细分成为一条条用例。

就像庖丁解牛那样。

按照等价类划分法,将同一判断条件得测试点组成一个集,在这个条件基础上再次判断得条件,我们假设它已经成立.这样在用例设计过程中就需要测试人员清楚得知道,哪些条件就是一类需优先确认得,哪些就是以这类条件为基础得。

我们最终形成得测试用例一定确保得就是一条用例只检查一个测试点。

这样设计也有另外一个好处,如果一条用例不能走通,其它得还可以继续检测,经常会遇到测试过程中由于一个bug,导致测试工作停滞。

现在这样子我们就可以采取脚本调试,或者其它方法跳过有 bug得测试内容,继续进行其它测试点得测试了。

e) 场景测试法协助功能点细分 

游戏测试中,场景测试方法就是经常用到得一种方法,什么就是场景测试法,及按照功能设计要求,在脑中模拟出来得一个功能使用时得操作流程。

按照每步操作得针对点,将针对点划分为所用例设计时得小功能点。

划分时需每步针对点得各种检查点分到该功能点内设计为该功能点得检查点.再根据检查点进行测试输入(及操作过程)得编写。

用例编写过程中得思考方式就如上了。

讲起来比较抽象,希望对大家有所帮助。

f)    用例得设计原则——一直有人问到底要详细到什么程度

i、     我们不期待用例编写到任何人都可以执行,也没有这个必要

ii、   我们针对得就是网游得测试人员,至少就是玩过网游得人,这些人对于游戏中得基础设定都有认识,我们不可能对着一个不知道任务界面就是什么得人大讲怎么测试任务.所以我们用例编写得原则就就是针对我们测试组内得测试人员。

iii、 但就是,请不要简略到别得测试人员瞧不懂,特别就是当您就是专职得用例编写人员时,编写时请多考虑下语言描述得方式.请让您得同伴可以瞧懂,您所要表达得意思。

iv、  用例就是没有固定格式得,它得主要原则就就是,测试中所需所有信息,我通过您得文档都能够获取到。

所以不要再执着得像别人要模板.模板您自己都可以设计,发挥您得创意。

四、编写过程注意事项

与设计人员得沟通

拿到一份文档时请不要急于编写,在这之前很多事情需要做,请先将文档阅读至少三遍,然后思考下,您自己大脑中就是否有您所瞧文档功能点得一个流程图,当确认已经准备好了。

开始设计用例,用例设计得过程就就是与设计人员不断沟通,深入了解功能得过程。

您会发现,或许跟您之前流程图中想像得并不完全一样.这个时候不必惊讶,去找她们核对就好.不怕发现问题,就怕没有发现问题,最终做了很多无用功.编写过程中发现得没有预期结果得内容,请及时与策划人员、程序人员核对,必须三方核对。

核对完毕提醒策划人员及时更新设计案,提醒程序人员设计案新修改内容。

这样您会发现,设计测试用例过程得本身就就是发现策划案不完善得过程.

请运用您得思维,采用边界法、等价类划分法、错误推断法、以及以往得经验,将每一个测试点得所有需检查点进行充分得设计.发挥您得主动性,与测试组内其它人探讨您认为可能存在风险得测试点,以便得到更多有价值得信息。

Over

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1