游戏服务器开发面试题(游戏服务器开发简历)

面试题: 如何对一个游戏进行设计测试用例.

一、游戏软件与通用软件的区别 a) 通用软件的需求明确,游戏软件需求理想化 i. 通用软件中用户每步操作的预期结果都是明确且有规范可参考的,而网游中并 不是所有的需求都有一个明确的预期结果,拿技能平衡性来说,我们所谓的平衡也只是相对的平衡,而非绝对的平衡。没有什么明确的参考参数。只能根据以往游戏的经验获得一个感知的结果。 ii. 网络游戏中的某些功能是有预期结果可参考的。例如组队、交易,而另外一些 带有策划创意的功能,却是根据策划个人的理解,来确定其预期结果的。人的思考力都是有限的,所以不能保证在他的创意中会考虑到各种各样复杂的细节。也不能够保证这个创意就可以完全被用户所接受。 当你作为游戏测试人员时,很多时候你需要做的不仅仅是验证功能。也需要帮助开发者和用户找到一个互相容忍的平衡点。游戏软件的测试员带有对策划需求的怀疑,力求通过自己的努力在玩家和开发者之间将可能产生的矛盾减小。 b) 通用软件开发过程中需求变更少,游戏软件开发过程中需求便更快 i. 通用软件的使用人群和软件的功能针对性,决定软件从开始制作就很少再有新 的需求变更。而游戏软件,为了满足玩家对游戏的认可度,策划需要不断的揣摩玩家的喜好,进行游戏功能的改进。加之网游制作本身就是一个庞大复杂的工程,开发者不可能做到在开发的前期,就对游戏架构及扩展性做出最好的评估。所以导致为了满足用户的需求而不断的进行一些基础架构的修改,基础架构的修改必然导致某些功能的颠覆。所以就出现了,游戏开发过程中的一个恶性循环,当基础架构修改到满意了,玩家的需求又有了新的变化,随之而来的又要进行新的调整,再进行新的修改。最终导致了游戏软件的开发周期不断加长。任何一个有经验的团队,对于每一个影响基础的改动都应该做出正确的评估。 二、网游有哪些测试内容 a) 性能 i. 客户端性能 ii. 服务器端性能 1. 服务器 2. 数据库 iii. 网络 b) 功能 i. 从运行完game.exe打开游戏界面后可进行的各种操作、玩法 ii. 界面 iii. 音乐 c) 自动化 i. 测试工作组织实施中需要的工具、软件、平台的开发 ii. 自动化的回归测试作用:游戏中基础的、变动不大的、出错率高的、可进行 checklist重复测试的功能、性能等自动化是一个好方法 iii. 任何时候自动化都取代不了人脑,它只是将一些重复性的劳动从我们测试人员 身上去掉,让我们有更多的时间做更有意义的事情,如果你觉得你做一件事情是重复的,且有规律可行的,不防考虑自动化 三、游戏中针对功能性测试测试用例编写浅谈

国际体验设计协会IXDC 历届大会精彩集锦

游戏用户体验大会 互联网产品大会 交互设计体验周

作者:sunli 制作时间:2008年10月份 个人空间地址:

[url][/url] 本文档仅供学习参考,请误擅自转载

2 / 3 先了解下游戏中有哪些功能: 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) 场景测试法协助功能点细分 游戏测试中,场景测试方法是经常用到的一种方法,什么是场景测试法,及按照功能设计要求,在脑中模拟出来的一个功能使用时的操作流程。按照每步操作的针对点,将针对点划分为所用例设计时的小功能点。划分时需每步针对点的各种检查点分到该功能点内设计为该功能点的检查点。再根据检查点进行测试输入(及操作过程)的编写。用例编写过程中的思考方式就如上了。讲起来比较抽象,希望对

作者:sunli 制作时间:2008年10月份 个人空间地址:

[url][/url] 本文档仅供学习参考,请误擅自转载

3 / 3 大家有所帮助。 f) 用例的设计原则——一直有人问到底要详细到什么程度 i. 我们不期待用例编写到任何人都可以执行,也没有这个必要 ii. 我们针对的是网游的测试人员,至少是玩过网游的人,这些人对于游戏中的基 础设定都有认识,我们不可能对着一个不知道任务界面是什么的人大讲怎么测试任务。所以我们用例编写的原则就是针对我们测试组内的测试人员。 iii. 但是,请不要简略到别的测试人员看不懂,特别是当你是专职的用例编写人员 时,编写时请多考虑下语言描述的方式。请让你的同伴可以看懂,你所要表达的意思。 iv. 用例是没有固定格式的,它的主要原则就是,测试中所需所有信息,我通过你 的文档都能够获取到。所以不要再执着的像别人要模板。模板你自己都可以设计,发挥你的创意。 四、编写过程注意事项 与设计人员的沟通 拿到一份文档时请不要急于编写,在这之前很多事情需要做,请先将文档阅读至少三遍,然后思考下,你自己大脑中是否有你所看文档功能点的一个流程图,当确认已经准备好了。开始设计用例,用例设计的过程就是与设计人员不断沟通,深入了解功能的过程。你会发现,或许跟你之前流程图中想像的并不完全一样。这个时候不必惊讶,去找他们核对就好。不怕发现问题,就怕没有发现问题,最终做了很多无用功。编写过程中发现的没有预期结果的内容,请及时与策划人员、程序人员核对,必须三方核对。核对完毕提醒策划人员及时更新设计案,提醒程序人员设计案新修改内容。这样你会发现,设计测试用例过程的本身就是发现策划案不完善的过程。 请运用你的思维,采用边界法、等价类划分法、错误推断法、以及以往的经验,将每一个测试点的所有需检查点进行充分的设计。发挥你的主动性,和测试组内其它人探讨你认为可能存在风险的测试点,以便得到更多有价值的信息

define可以和schedule

知乎

下载 APP

关于C++中一个#define和#typedef的用法的问题?

路人甲

游戏服务器端开发,最近比较粘python

typedef void (SelectorProtocol::*SEL_SCHEDULE)(ccTime);

声明了一个成员函数指针类型SEL_SCHEDULE

其原型对应SelectorProtocol类中形如下列声明特征的成员函数

void 成员函数名(ccTime)

根据

#define schedule_selector(_SELECTOR) (SEL_SCHEDULE)(_SELECTOR)

schedule_selector(getTarget)的调用将被展开为

(SEL_SCHEDULE)(getTarget)

也就是取得getTarget的函数指针

编辑于 2011-11-26 · 著作权归作者所有

赞同 1

评论

查看全部回答

大家还在搜

编程define什么意思

c语言typedef是什么意思

c++中#define什么意思

c++中define的用法

单片机define的用法

typedef c++的用法

c语音typedef

c++ define

c++里的define

#define什么意思类型

c语言#define什么意思

#defind和typedef

结构体typedef作用

c语言typedef和define

#define的用法

结构体typedef

#define是什么意思

typedef和define区别

define在c++语言中的用法

define在c++中是什么意思

define在单片机中的意思

c语言typedef struct用法

#define m

#define什么意思

#define 后面没有参数

c语言#define用法

#define是不是c语句

c语言的typedef的用法

c 中define是什么意思

typedef struct是什么意思

#define是什么意思

typedef和define区别

define在c++语言中的用法

define在c++中是什么意思

define在单片机中的意思

c语言typedef struct用法

#define m

#define什么意思

#define 后面没有参数

c语言#define用法

#define是不是c语句

c语言的typedef的用法

相关推荐

Linux C++ 服务器端这条线怎么走?一年半能做出什么?_知乎

C++等2个话题下的优秀答主 关注 6,522 人 赞同了该回答 既然你是在校学生,而且编程语言和数据结构的基础还不错,我认为应该在《操作系统》和《计算机体系结构》这两门课上下功夫,然后才去读编程...

【C++】C++常见面试题汇总_持续更新中..._知乎

区别是(union和class同理): (1)一个union类型的变量,所有成员变量共享一块内存,该内存的大小有这些成员变量中长度最大的一个来决定, struct中成员变量内存都是独立的. (2)un...

常见C++笔试面试题整理_知乎

c cc cpp hpp inl 这些后缀名都有什么区别?C中:头文件后缀名: .h源文件后缀名: .cC++中:头文件后缀名: .h, .hpp, .hxx... 它是在自己的作用域内给已经存在的类型一个别名typedef (int*) pINT;#define pINT2 int*效果相同?实则不同!实践中见差别...

一句话帮你理解typedef的用法_知乎

前言 在C语言中typedef用来给复杂声明定义别名非常的方便,不过有时候typedef在复杂声明中不好理解.本文关键的一句话帮你理解ytpedef的用法. typedef常见应用场景 在这之前,我们...

c语言 malloc函数详解,学习使我快乐..._知乎

关于:void*,表示未确定类型的指针,c,c++规定void*可以强转为任何其他类型的指针,关于void还有一种说法就是其他任何类型都可以直接赋值给它,无需进行强转,但是反过来不可以 学习从来不是一...

相关搜索

#define的用法

结构体typedef

#define是什么意思

typedef和define区别

define在c++语言中的用法

define在c++中是什么意思

define在单片机中的意思

c语言typedef struct用法

#define m

#define什么意思

#define 后面没有参数

c语言#define用法

#define是不是c语句

c语言的typedef的用法

游戏测试面试题

腾讯公司的面试题 1 、对 MMORPG 的 CLIENT/SERVER 使用白盒和黑盒的方法进行集成和系统测试; 2 、编写测试计划完成测试任务。 工作要求: 1、了解C/S结构,并熟悉TCP/IP、UDP协议; 2、掌握常用的软件测试工具、测试流程 ,熟悉软件工程; 3、熟悉C++或Delphi Windows编程; 4、了解游戏客户端程序设计和服务器架构方式; 此题是腾讯招聘游戏测试人员的题目! 通知偶去面试! 今天上午偶p点p点的就去坐了公交,一个半小时后到了公司总部,(附:公司总部是受其他城市的委托来面试我的) 主考是北方人,我也是北方人,于是很快就出题了!如下! 1,网络游戏交易的流程,用Oracl,sql,叙述出来 2,找到交易这个流程之间的测试点 然后问偶,能写出来吗? 偶说,能, 问:需要多久? 偶:20分钟 然后对表! 关门, 偶开始狂写狂画,之后偶觉的思路没理清, 换张纸,慢慢画,急切间服务器的英文---server忘记了,而且字体超级烂,偶本来字很好看的,,,毕业至今没写过几个字哈,生疏了,也紧张。 终于在20分钟内大概画了个流程图针对于第一题,并附上测试用例! 第二题,偶只写出了两个测试点! 门开,主考进来,看偶的纸,说,我要的就是这个,然后问:软件测试最重要的是什么? 偶觉的哪个阶段都重要啊,不厌其烦也很重要,于是偶就头晕晕的很笃定的说功能测试最重要! 又问些对游戏的感受和了解,就ok了!最后问偶愿意去另外的城市工作吗?给偶一个考虑的机会, 偶呆了一秒说:您知道,我刚来这里,是自己来的,无牵无挂,只要是xx公司,哪个城市都行! 于是结束了面试! 偶本来以为不会这么良好吧,偶的第一次面试! 刚刚从公交上下来,准备回住的地洗澡澡,电话响了,是那个城市的分部打来的电话,说是要电话面试我,由于大街上很嘈杂,狂跑到小区的里面蹲在草坪上接受面试,呵呵! 问的问题跟上午面试的题一样,不过交易变成了组队,偶还照我上午的思路说了下,但是人家说那不对,然后自己说了下去,可惜我没听清楚他说的什么,因为那会信号不好,然后我跟他口风说对对,是那样,然后继续问我第2个问题:玩过什么游戏,对游戏的熟悉程度,以及你认为的游戏测试包括那些? 我的回答:因为本人接触游戏很早,从传奇到奇迹,到现在的3d,天堂2,魔兽世界,英雄,热血江湖,只要是rpg的基本上都玩过,不管是q版的还是武侠魔幻的,还有休闲类的,比如泡泡堂,疯狂坦克等等,强调了我的测试经验是休闲类的游戏,包括大富翁,泡泡龙,主要负责功能测试,立足于用户角度,包括键盘的操作,指令的确认返回,可玩性测试等,[这期间他还问我竞技类游戏呢?比如cs,我说呵呵,cs以前是我的最爱] 然后他问:你对可玩性测试是怎么认识的 偶回答:包括色彩的显示,画面的连接,服务器的流畅度,以及游戏平衡性的设置,举例来说,以前的奇迹比传奇操作简单一点,这是一个方面,奇迹的装备很华丽能够吸引人,泡泡堂的角色造型很可爱,容易吸引女孩子,这些都是可玩性方面的 第三个问题:你认为象早期的超级玛丽游戏上面的按键怎么做测试? 偶回答:超级玛丽的游戏的键盘很简单,手柄上面的跳,走,跑,和四个方向键,四个方向键可以用枚举的方法测试,看其输入跟确认结果是否一样,不一样了就是问题所在,同样的功能键--跑跳走等也是这样! (其实偶回答的应该是属于测试目的,和测试脚本,与测试执行,测试平估之间的联系~渴望高手指点一下偶这样的思路正确与否?) 他问:有没有想到测试时候同时按几个键,或者乱按键会出现什么结果? 偶回答:当然需要这样的测试,站在用户的角度来说,我们做测试应该尽全力的进行全方位的思考和测试! 第四个问题:给你一个测试脚本,你怎么制定测试计划?你的测试目标是什么? 偶回答:测试目标我想应该有个最高测试目的,游戏测试和软件测试的不同也包含有这一点,游戏测试的最终目标是让普通大众去把握和接受,而软件有没这个普遍性,所以制定测试计划的时候也应该跟随脚本向这个目标走。然后就是个人认为测试过程是随着软件游戏的开发过程而进行的,每个阶段都应该有不同的开发过程和测试过程,所以每个阶段的测试计划和测试目的是不同的,我不知你问的具体指哪个方面,而我以前从事的是功能测试,就是黑盒测试! 这时还问偶一个问题:你做的功能测试是怎么发现并提交bug的? 偶的回答:我以前的测试过程是每天的测试内容侧重点是不同的,要根据leader发布的测试计划走,提交bug一般要形成图文并茂,再现bug出现场景,有理有据,形成文档,提交! 然后就是他说:那好,今天就问到这里,有其他联系了会有别的人给你其他的面试。 最后我问一点:我想问一下,我记得你们招收的学历是本科,可是我是大专,所以我想感谢你们给我面试的机会! 他笑到,这个没什么的,学历我们并不看中,老总是想把你外聘的,好的,就这样,一起学习!呵呵 当时我就傻了~~~ 外聘,,,就是打工扫地也好啊,不管是不是正式,有个工作就行!!! 本人第一次面试就这样。

谁有程序员的面试题,例如东软公司,或其他公司的程序员面试题

程序员面试一直是社区乐于讨论的热门话题。

这篇文章是站在面试官角度对于程序员面试问题的一个阶段性反思和经验总结。

【目标】

相信和不少朋友一样,有了几年工作经验成为Senior后就开始了面试别人的经历。作者在最初这个阶段只是按照自己的想象把”找到基础好的程序员“,”找到算法能力优秀的程序员“,”找到有Android开发经验的程序员“等作为面试的目标。但是,实际的经历告诉作者,尤其是按“基础好”,“算法好”这些目标招到的人最终效果并不好。比如,有的面试者基础知识和算法掌握情况不错,进程、线程、内存等概念清晰,基本的Hash,二叉树,快速排序等数据结构和算法也比较熟悉,但是进公司后在实际工作中表现得很糟糕。后来,作者才发现原来是作者的面试目标出了问题,作者原先的面试方法更像是大学的算法或操作系统期末考试,按照这种方法让许多并不合适的人通过了面试,同时也可能错过了许多合适的人。

后来,作者的反思是,从公司的角度讲,面试的根本目的是找到\"能够干好工作\"的人,而“高学历”,“算法好”,“基础好”,“有经验”这些都是表象而不是根本,它们并不能直接和“工作好”划等号。

【方法】

目标明确了,但接下来的问题是假设面试者是一个黑盒系统,“工作好”不是直接可观测变量,你所能直接观测的变量是基础、算法、经验、学历、性格、谈吐、年龄等等。所以,实际上,你只能从“基础好”,“算法好”等可以直接观测的量去推测“工作好”的概率,这就是一个在“X好“条件下\"工作好“的条件概率问题:P(工作好 | X好)。

根据这个模型,面试所应该考察哪些方面就很明显了,那就是选择那种最具有区分性的方面来考察。比如,考察面试者的体型特征没有太大意义,因为P(工作好|高),P(工作好|矮),P(工作好|胖),P(工作好|瘦)的概率都差不多;所以,体型特征不具有区分性,这不是面试所应该关注的内容。

面试官应当结合职位的要求明确哪些因素具有比较好的区分性。比如,如果要招一名技术门槛比较高的3D游戏引擎开发工程师,面试者A具有3D游戏引擎开发的经验,但是在基础知识和算法面试方面表现一般;面试者B相反,基础知识和算法面试表现很好,但没有游戏开发经验,而你只能选择其一。你选谁呢?其实,这就是两个条件概率问题P(工作好|经验好,基础一般,算法一般)和P(工作好|没经验,基础好,算法好)。这个问题就留给面试官来判断了,就作者个人而言,对于技术门槛较高需要技术积累的职位,经验更加说明问题,因此,作者更倾向于面试者A。

下面,作者再结合自己的经验谈谈对面试中常见方面的看法。

【算法】

算法是Google和MS等大公司面试所重点考察的内容。作者个人很喜欢算法,曾经参加ACM/ICPC拿过北京赛区的13名。但是,就个人经验来看,作者所接触过的绝大多数开发职位而言,算法都不适合作为考察面试者优劣的主要因素。对于普通的非算法性开发职位,考察面试者的算法就相当于考察他打乒乓球好不好一样,与目标“工作好”的相关性太低。就作者个人的经验来看,差不多P(工作好|算法好)=50%,也就是算法面试没有太大的区分性。

甚至,还有一种很不好的情况特别多地出现在算法好的面试者身上,作者称之为“只磨刀,不砍柴”。什么意思呢?有类人只对什么A*算法,异步编程,JVM类加载机制这种纯技术问题感兴趣,对实现用户需求毫无兴趣。这类人看起来有一定的技术能力,但是对公司来讲贡献十分有限,甚至不如技术一般但认真负责的人。所以,一旦遇到面试者算法好,作者就特别留意考察会不会是这种“只磨刀,不砍柴”的人。

另外,虽然作者个人不了解Google和MS,但作者对于其特别重视考察算法能力的面试策略是持怀疑态度的。即使在这样的世界级大公司,算法虽然重要,但可以想象在项目实施过程所遇到的各种各样问题中,算法问题绝大多数时候不会是主要瓶颈,没有到那种需要每个人都是算法高手的情况。实际上,绝大多数项目真正难点并不是一两个算法瓶颈,甚至也不是单点的技术瓶颈,而是系统性的组织、协调、设计、开发问题,有大量的看起来不是那么有技术含量的脏活累活,也有许多问题是由于信息不足,并不是技术能力强就能克服这些困难。一个团队最好优势互补,有人算法强,有人业务分析能力强,有人擅长后端服务,有人擅长前端界面,有人聪明,有人踏实,这是最好的。如果按照“算法好”的单一标准选材,必定会把许多优秀的人才拒之门外。

补充:在更多地了解了Google和Facebook等一流公司的面试细节之后,作者对这个问题的认识有了一定的改变,实际上这些公司在面试过程中并不完全强调技巧性很强的算法,而是更加注重编码(Coding)能力,只是在进行编码测试的过程中往往是通过一些简单算法题来进行的。作者对于这种面试方法越来越欣赏,并且也作为了作者们公司面试过程中的重点环节,因为编码能力的测试是十分必要的,它有着知识性问题无法取代的作用,如果一个面试者连“判断一个字符串是否是另一个字符串的子串”这样的题目都无法正确并快速地实现,那么基本上可以直接排除了。作者这里所强调的是不必考察高难度的算法问题,并非不重视编码能力测试,请读者不要误解

【基础】

基础面试是指考察诸如指针使用、进程线程概念等基础知识的面试,十分类似于大学期末考试题。作者曾经以为基础面试十分重要,但是现在不这么看了。在工作中基础的确是重要的,但是在面试过程中,它必须具有区分性才有意义,也就是说P(工作好|基础好)的概率要高,那么考察指针使用,进程线程区别这样的基础题目才有它的意义。作者的实际经验是,基础面试并不具有很好的区分性,和算法一样, 差不多P(工作好|基础好) = 50%。同时,基础面试是最容易准备的,中国人有长期的应试教育经验,要准备几个把玩指针题目太容易了。

作者曾经遇到过这样的面试者,他的C语言基础和编译、链接等原理掌握得非常好,给作者留下了深刻的印象,作者给的面试结论是:知识面不宽,只会C语言,但基础很扎实,建议录用。后来的事情证明了那个结论的前半部分是对的,但是”建议录用“错了。他在实际工作中表现得一塌糊涂,不理解需求,不理解整体架构;同时,上班时间不是花在项目上,而是花在阅读诸如《程序员的自作者修养》之类的书籍上。最后,这位同事由于长期“不出活”离开了公司。

基础不是不重要,而是“基础好”不足以说明面试者能干好工作,因为基础是属于局部性知识,而实际工作需要综合性能力,二者有天壤之别。C语言、操作系统能考高分,但是不会写程序的人在大学作者们还见得少吗? 软件开发就像盖房子,综合能力是设计和搭骨架,基础知识是码砖。张小龙原先Foxmail是Delphi开发的,他它不懂C#,你如果要招聘一个开发.NET Email客户端的人,你考察他对CLR掌握得好不好有意义吗? 让张小龙来开发一个C#版的Foxmail真的会有困难吗? 你招一个精通C#但没有Email客户端开发经验的人来真的比张小龙靠谱吗?

作者说基础知识不重要,和古人说的“不积洼步无以至千里”是不是矛盾呢?不矛盾!“洼步”与“千里”是一种可累加关系,但再多的“基础知识”都累加不成“综合能力”。学习软件开发要像持续集成一样,一开始就是一个完整的系统,虽然规模不大,问题很多,但它麻雀虽小五脏俱全,从小系统到大系统,从简单系统到复杂系统逐步演化。

所以,基础好本身不足以说明太多的问题,必须进一步考察综合能力。对于基础面试表现不好的面试者,如果时间允许也要进一步考察,有的面试者其实是有能力的,只是没有进行充分的准备。最理想的状态当然是基础和综合能力俱佳,若不能兼顾,应当综合能力优先。

【经验】

这里所说的经验不是通过工作了多少年来衡量的,而主要是指面试者的经历,比如,是否完整地实现过一个软件,或作为主要开发者完成过一个项目。经验的重要性在于它能说明一个人的综合能力。从项目的性质、规模和难度,面试官就可以大致判断出面试者的综合能力。如果一个面试者一直在大公司负责一个小模块的开发维护,那么基本可以判断他不具备独立或作为主要开发者承担一个项目的能力,只适合在另一家大公司做类似的事情。对于门槛较高需要长期技术积累的职位,相关经验更显得尤为重要,比如,Linux内核开发,JVM开发,游戏引擎开发,数据库实现,高级UX等。对于这类职位,没有经验的面试者即使综合素质不错也是需要长时间的学习和积累才能胜任。所以,基本上如果确定了你的职位属于此类,那么相关经验毫无疑问应该成为首选因素,换句话说,P(工作好 | 相关经验好)的概率是非常高的。

通过项目经验判断面试者的优劣比通过基础和算法测试更加靠谱,所以,面试过程中面试官应该花比较多的时间听面试者介绍项目经验,并进行深入地探讨交流,了解面试者的知识面、思维能力、表达能力等。同时,可以结合项目提一些基础知识和算法的问题,比如,如果面试者做过C++相关的项目,那就可以问他如何进行内存管理?是否熟悉智能指针?如果面试者的回答不能令人满意,那么就基本上可以判断他的项目做得不是很好。

要注意的是,经验也是一个多维度的事物。比如,C++股票交易中间件系统,这就涉及(C++,中间件,股票) 3个维度。假如面试者A做过C++股票交易客户端,面试者B做过C的股票交易中间件。从语言角度看,A最匹配,从项目性质看,B最匹配,你如何选择?这就是在多个维度中,哪个维度更重要的问题,就这个例子而言,作者个人更倾向于B,因为作者认为中间件开发经验是主要矛盾,而从C切换到C++并不是问题。所以,面试官需要判断哪一种经验是主要的,而哪一种经验是次要的。比如,作者们招聘Android应用开发,这个职位的Android技术门槛并不高,它的真正难点在于做出好的用户体验(UX)。所以,如果一个面试者没有Android的经验作者们是可以接受的,但是作者希望他在UX方面有经验,至少做过其他平台的移动应用开发。

【性格】

现在,作者来谈作者认为最重要的因素:性格。这可能是许多初为面试官的朋友所难以想象的,怎么会是性格最重要呢?说实话,当作者意识到这一点时,作者自己也很惊讶!说白了,还是 P(工作好|性格好)的概率最高啊。作者的实际经验是,如果一个人的性格好,他能把工作做好的可能性是最高的,性格好远比基础好、算法好要靠谱。

一个人如果技术上有缺陷,经验上有不足,但性格好,在团队中是很容易由其他人来补位的,他自己也很容易逐渐补起来;相反,如果一个人的性格不好,所有的技术优势经验优势都发挥不出来,甚至还会起到负作用,而且性格缺点很难改变。作者一直谈到实际工作所需要的是综合性的能力,这种综合能力的发挥中性格是至关重要的。项目中不止会遇到技术问题,要涉及沟通、协调,不同的人不同的部门既有合作又有磨擦,如何处理这些事情都需要一个良好的性格。可以说,在开发团队里让你与众不同的不是你从哪个学校毕业,也不是你过去的经验,而是你的性格

当然,性格是一个复杂的东西,它包含了很多的方面,并非所有方面都是程序员面试所需要关注的。作者的经验是可以重点考察这些方面:

1) 态度积极还是消极。有的面试者在谈吐中就会自然给你一种积极上进的感觉,或者你可以在他的经历中发现他积极的因素,这些都不是太难看出来的。相反,有的面试者你能明显感觉到他的消极情绪。积极性在工作中是十分重要的,积极的人能给团队带来朝气,也更易于合作。基本上,如果确定面试者属于态度积极的,他通过作者这一关的可能性就会大大增加;相反,如果确定属于态度消极的,即使技术能力不错作者也会十分谨慎。

2) IQ。作者的经验是,总体来看,聪明的人在工作中的表现更为优秀。在面试中要考察一个人是否聪明并不一定要像Google和MS那样找些专门测试IQ的智力题,其实,你只需要看他讨论问题是不是很有逻辑性,思考和说话是不是反应敏捷就可以做出大致的判断。另外,眼睛是人心灵的窗户,一个人聪明与否,眼睛是会说话的。不过,聪明也不完全是优点,比如,当公司或项目遇到困难时,往往是聪明人先跑掉了,坚守的往往是IQ一般的人。

3) 语言表达能力。语言表达能力也是程序员十分重要的一项素质,它关系到项目中的沟通是否顺畅。面试官可以看看面试者能否用简明的语言介绍清楚曾经做过的项目,能否抓住要点,能否考虑到听者的相关背景。一般来讲,语言表达能力强的人综合能力都不会太差。(面试网 )

4) 是否具有用户意识。有人说程序员是做研发的,哪来什么用户?只有销售、市场人员才会和用户打交道。其实,这是完完全全的错误认识。你写一个模块,甚至一个API,只要有别人用,他就是你的用户。有的程序员设计一个模块或是一个软件总是习惯于从使用者的角度来考虑,尽量地方便使用者,这就是一种良好的用户意识。具有良好的用户意识的人更能考虑别人的感受和整体的需要,而不是单纯地从自己和局部来思考问题。当面试者谈及过去的项目经验时,面试官可以常常站在用户的角度对其进行提问,从这个过程中观察其是否具有良好的用户意识。

5) 如何应对质疑和压力。面试官应该对面试者的回答以及以往项目进行合理的质疑,看看他如何应对。曾经有一位面试者谈到做游戏登录服务器的经历,作者就问:“如果登录服务器挂了,怎么办呢”?他说原先虽然没有考虑这个问题,但是可以怎么怎么改进。其实,大家都理解项目中有各种不完美,这里面原因很多,只要面对质疑和压力能从容应对努力往好的方向思考解决就可以了,不需要掩饰缺陷,更不应该有情绪。作者遇到过有的面试者,一旦你对其项目提出质疑,他马上产生反抗情绪,或不高兴,或不承认有问题,这很容易一下子看出来他在工作中容不得质疑和批评,这种人要想合作就很困难。

6) 个性特点。许多面试者喜欢在简历上写“精通C++/Linux“,这些字眼看得人麻木,如果有人写”喜欢C++/Linux“,作者就会有一种眼前一亮的感觉。“精通”是没有感情色彩的叙述,而“喜欢”包含了面试者的个性,作者更愿意看到面试者的个性。作者相信对某样东西真正的热情远比你当前对它的掌握程度更为重要。其实,N年的经历告诉作者们,同一个班的同学,同一个项目组的同事,虽然每天所学的知识,所接触的工作都是相同的,但其实每个人的成绩和表现差异是十分明显的。那么,到底本质的差异是什么呢?其实,就是每个人的个性。是个性使得有的人业余时间去打球,有的人业余时间去看书,有的人喜欢Linux,有的人喜欢Mac。一个人在团队中扮演的角色也和他的个性有很大的关系。面试官应该引导面试者展现自己的个性,并判断其是否有益于团队。

【总结】

最后总结起来,作者的经验是:

1) 面试官的目标是找到”工作好“的人,一定要围绕这个目标来进行面试,如果把面试当成了算法或操作系统期末考试这就走入了误区;

2) 面试过程是通过学历、性格、基础、经验、算法等可以测试的因素去综合判断面试者“工作好”的概率;

3) 在各种因素中,性格 经验 基础 算法。性格是最重要的,如果性格不好,所有技术能力都会大打折扣,而且技术缺陷容易弥补,性格缺陷很难改变;经验体现了一个人的综合能力,你可以从面试者过去的经历中判断他能从事哪种工作,不能从事哪种工作;基础和算法则主要起到辅助参考的作用,基础好的程序员一般适应性比较强,学新技术更快,但是切忌单纯从基础来判断一个人的能力。

更多程序员面试问题请登陆楚湘人才网

未经允许不得转载:便宜VPS网 » 游戏服务器开发面试题(游戏服务器开发简历)