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出现场景,有理有据,形成文档,提交!
然后就是他说:那好,今天就问到这里,有其他联系了会有别的人给你其他的面试。
最后我问一点:我想问一下,我记得你们招收的学历是本科,可是我是大专,所以我想感谢你们给我面试的机会!
他笑到,这个没什么的,学历我们并不看中,老总是想把你外聘的,好的,就这样,一起学习!呵呵
当时我就傻了~~~
外聘,,,就是打工扫地也好啊,不管是不是正式,有个工作就行!!!
本人第一次面试就这样。
java 程序员常用面试题- -Java程序员面试三十二问
Java程序员面试三十二问
作者:佚名来自:未知
第一,谈谈final, finally, finalize的区别。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以
implements(实现)interface(接口)?
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
第四,&和&&的区别。
第五,HashMap和Hashtable的区别。
第六,Collection 和 Collections的区别。
第七,什么时候用assert.
第八,GC是什么? 为什么要有GC?
第九,String s = new String("xyz");创建了几个String Object?
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
第十二,sleep() 和 wait() 有什么区别?
第十三,Java有没有goto?
第十四,数组有没有length()这个方法? String有没有length()这个方法?
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()?
它们有何区别?
第十七,给我一个你最常见到的runtime exception.
第十八,error和exception有什么区别?
第十九,List, Set, Map是否继承自Collection接口?
第二十,abstract class和interface有什么区别?
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是
synchronized?
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体
类(concrete class)?
第二十三,启动一个线程是用run()还是start()?
第二十四,构造器Constructor是否可被override?
第二十五,是否可以继承String类?
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它
方法?
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行
,什么时候被执行,在return前还是后?
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对
?
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后
的结果,那么这里到底是值传递还是引用传递?
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
第三十二,编程题: 写一个Singleton出来。
以下是答案
第一,谈谈final, finally, finalize的区别。
final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父
类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,
可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能
读取,不可修改。被声明为final的方法也同样只能使用,不能重载finally?再异常处理时提供 finally
块来执行任何清除 *** 作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入
finally 块(如果有的话)。
finalize?方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去
之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是
在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执
行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以
implements(实现)interface(接口)?
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口
,由另一个内部类实现。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套
类最大的不同就在于是否有指向外部的引用上。具体可见http:
//www.frontfree.net/articles/services/view.asp?id=704&page=1
注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2
不能从一个static内部类的一个对象访问一个外部类对象
第四,&和&&的区别。
&是位运算符。&&是布尔逻辑运算符。
第五,HashMap和Hashtable的区别。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步
的。
第六,Collection 和 Collections的区别。
Collections是个java.util下的类,它包含有各种有关集合 *** 作的静态方法。
Collection是个java.util下的接口,它是各种集合结构的父接口。
第七,什么时候用assert。
断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为
false,那么系统会报告一个 AssertionError。它用于调试目的:
assert(a >0)// throws an AssertionError if a <= 0
断言可以有两种形式:
assert Expression1
assert Expression1 : Expression2
Expression1 应该总是产生一个布尔值。
Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。
断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:
javac -source 1.4 Test.java
要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。
要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。
要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。
可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。
不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参
数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任
何方式改变程序的状态。
第八,GC是什么? 为什么要有GC? (基础)。
GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收
集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
第九,String s = new String("xyz")创建了几个String Object?
两个对象,一个是"xyx",一个是指向"xyx"的引用对象s。
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11
第十一,short s1 = 1s1 = s1 + 1有什么错? short s1 = 1s1 += 1有什么错?
short s1 = 1s1 = s1 + 1有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为
s1 =(short)(s1 + 1) 。short s1 = 1s1 += 1正确。
第十二,sleep() 和 wait() 有什么区别? 搞线程的最爱
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。
这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)"醒来"的线程具有更
高的优先级,(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对
象进入等待状态,直到被唤醒或等待时间到。
第十三,Java有没有goto?
Goto?java中的保留字,现在没有在java中使用。
第十四,数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()这个方法,有length的属性。
String有有length()这个方法。
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类
之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其
父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子
类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或
有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改
变返回值的类型。
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它
们有何区别?
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相
等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的
内容和类型相配的话,返回真值。
第十七,给我一个你最常见到的runtime exception。
ArithmeticException, ArrayStoreException, BufferOverflowException,
BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException,
CMMException, ConcurrentModificationException, DOMException, EmptyStackException,
IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException,
IllegalStateException, ImagingOpException, IndexOutOfBoundsException,
MissingResourceException, NegativeArraySizeException, NoSuchElementException,
NullPointerException, ProfileDataException, ProviderException, RasterFormatException,
SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException,
UnsupportedOperationException
第十八,error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能
处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
第十九,List, Set, Map是否继承自Collection接口?
List,Set是
Map不是
第二十,abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基
本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而
可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象
静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代
之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的
接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量
。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即
将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。
由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类
型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是
synchronized?
都不能
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类
(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类
必须有明确的构造函数。
第二十三,启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由
JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
第二十四,构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
第二十五,是否可以继承String类?
String类是final类故不可以继承。
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它
方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行
,什么时候被执行,在return前还是后?
会执行,在return前执行。
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。
2 <<3
第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
不对,有相同的hash code。
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后
的结果,那么这里到底是值传递还是引用传递?
是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数
的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int
、 short、 char 或者 byte。long,string 都不能作用于swtich。
第三十二,编程题: 写一个Singleton出来。
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,
在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton()
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance() {
return instance
}
}
第二种形式:
public class Singleton {
private static Singleton instance = null
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if (instance==null)
instance=new Singleton()
return instance }
}
其他形式:
定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些
第三十三 Hashtable和HashMap
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许
还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为
contains方法容易让人引起误解。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,
不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
不希望你被楼上的误导,毕竟求职不容易所以给你几点必问的东西。1.首先知道自己面试什么类型策划,专业问题专业了解下,不打无准备的仗。
2.去了首先丢给你一份你面试类型策划的笔试题(有的公司会是一份涵盖全面策划问题的面试题),你慢慢回答。
3.答完题,主策划会看看你的笔试还有你的简历(简历一定是你面试时才看的,不需要怀疑)。
4.接下来就是面谈了,让你对你面试类型的策划谈谈对它的见解,譬如它会有什么样的工作,怎么和同时配合。
5.说说你玩过什么游戏,谈谈你最了解游戏的有缺点。这是考你对系统的分析能力。
6.说说展望,也就是你对今后工作的展望。
7.说说你对公司的了解和你为什么来该公司求职。
8.如果上面满意了就是谈谈待遇了,不过不是很详细,以为这是人事的事。
9。你回去等消息。(可能真的让你等消息,不过一般出现这句话70%PASS了。想要录用的回答是你说说对公司的要求,还有你什么时候能来上班,需不需要准备)
就是这样了,应该对你有帮助。以后多给点分啊!呵呵
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)