当前位置: 移动互联网学院 > Java培训 > JAVA面试题 > 游戏公司java面试题 力荐
游戏公司java面试题 力荐 时间:2017-12-12     来源:游戏公司面试攻略

随着手游受到广大游戏爱好者的青睐,各大游戏软件公司对于游戏开发的力度也在不断的加大,就以近的腾讯旗下的天美工作室的农药,以及网易的吃鸡都是大受好评,在未来的游戏开发来讲的前景还是非常的好的,选择游戏开发的朋友也是也是越来越多。

总结以下的游戏开发中所遇到的大部分面试问题,希望对大家能够有所帮助。

游戏公司java面试题

6:分别以下列构造二叉排序树,与用其他三个序列所构造的结果不同的是【】? A:(100,80,90,60,120,110,130) B:(100,120,110,130,80,60,90) C:(100,60,80,90,120,110,130) D:(100,80,60,90,120,130,110) ans:C

选择C项。

详细解释:

一、二叉排序树的定义

二叉排序树或者是空树,或者是具有如下性质的二叉树: 1、左子树上所有结点的数据值均小于根结点的数据值; 2、右子树上所有结点的数据值均大于或等于根结点的数据值; 3、左子树、右子树本身又各是一棵二叉排序树。二、叉排序树的构造

二叉排序树的构造过程实质上就是排序的过程,它是二叉排序树作媒介,将一个任意的数据序列变成一个有序序列。二叉排序树的构造一般是采用陆续插入结点的办法逐步构成的。具体构造的思路是:

1、以待排序的数据的第一个数据构成根结点;

谈谈MVC,可以结合框架?(不要背书)

2 同步和异步有何异同,在什么情况下分别使用他们?举例说明。

如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进

行同步存取。

当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更

有效率。

2 abstract class与interface的应用(结合实际)。TestCase类是abstract class

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该

类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造

函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行

为的其它类可以在类中实现这些方法。

接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一

个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它

定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量

的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

3 谈谈工作中常用的框架,介绍其优缺点。

Hibernate的缺点:1 若要自己控制SQL语句的生成就不好了。2 数据库特定的性能优化机制无法操纵。3 表的列不固定,列的增减;4 对象

模型里存在关系模糊,不明确的话不利于使用Hibernate(即要求使用的OOA、OOD能力很强);5 Hibernate的批量修改不好,10万

条数据同时修改时会产生问题;6 Hibernate的灵活性差;7 风险性大,若需求经常变动,不好控制。

Spring:

1. 不支持分布式访问,分布式事务和集群, 这些是 EJB3 的优点, 但是 Spring 目前还不支持;

2. 配置使用 XML 文件, 如果文件内容很多的话对维护的人来说是个负担;

3. 提供Spring 容器的只有一家公司(Interface21), 换句话说它是非标准的, 被个别公司垄断的技术, 不能像 EJB 那样可

以换一家厂商的服务器, Spring 不存在第二家公司来做.

Spring的工作基础是Ioc。Ioc将创建对象的职责从应用程序代码剥离到了框架中,通常2种注入方式:setter 和 constuctor参

数。

每个Bean定义被当作一个POJO(通过类名和JavaBean的初始属性或构造方法参数两种方式定义的Bean)。

Ioc,AOP之类的技术,本质上都是将原本位于应用程序代码中”硬编码”逻辑,剥离出来放到了配置文件中(或者其他形式)。主流声音都是认为提高了应

用程序的可维护性。

但如果从以下方面观察,结合项目实际经验,个人感觉这些技术的应用大大降低了应用程序的可维护性,尤其是面对一个陌生的系统,或者项目人员变动频繁的时

候。

1. 中断了应用程序的逻辑,使代码变得不完整,不直观。此时单从Source无法完全把握应用的所有行为。

2. 将原本应该代码化的逻辑配置化,增加了出错的机会以及额外的负担。

3. 时光倒退,失去了IDE的支持。在目前IDE功能日益强大的时代,以往代码重构等让人头痛的举动越来越容易。而且IDE还提供了诸多强大的辅助功

能,使得编程的门槛降低很多。通常来说,维护代码要比维护配置文件,或者配置文件+代码的混合体要容易的多。

4. 调试阶段不直观,后期的bug对应阶段,不容易判断问题所在。

4 谈谈你常用的设计模式(结合框架)。

5 唯一的一道计算题:用有效率的方法求N以内的所有质数。

6 单点登陆如何实现;介绍在理想状态下的实现流程。

7 根据你真实的工作年限,介绍你对Java的认识程度,并说说你的职业目标。

8 谈谈你对WebGame的看法?Java与其他实现技术的优缺点等。

9 Java, .NET, PHP都有什么应用场合?Java相对于其他语言的优势。

1 谈谈MVC,可以结合框架?(不要背书)

2 同步和异步有何异同,在什么情况下分别使用他们?举例说明。

如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进

行同步存取。

当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更

有效率。

2 abstract class与interface的应用(结合实际)。TestCase类是abstract class

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该

类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造

函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行

为的其它类可以在类中实现这些方法。

接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一

个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它

定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量

的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

3 谈谈工作中常用的框架,介绍其优缺点。

Hibernate的缺点:1 若要自己控制SQL语句的生成就不好了。2 数据库特定的性能优化机制无法操纵。3 表的列不固定,列的增减;4 对象

模型里存在关系模糊,不明确的话不利于使用Hibernate(即要求使用的OOA、OOD能力很强);5 Hibernate的批量修改不好,10万

条数据同时修改时会产生问题;6 Hibernate的灵活性差;7 风险性大,若需求经常变动,不好控制。

Spring:

1. 不支持分布式访问,分布式事务和集群, 这些是 EJB3 的优点, 但是 Spring 目前还不支持;

2. 配置使用 XML 文件, 如果文件内容很多的话对维护的人来说是个负担;

3. 提供Spring 容器的只有一家公司(Interface21), 换句话说它是非标准的, 被个别公司垄断的技术, 不能像 EJB 那样可

以换一家厂商的服务器, Spring 不存在第二家公司来做.

Spring的工作基础是Ioc。Ioc将创建对象的职责从应用程序代码剥离到了框架中,通常2种注入方式:setter 和 constuctor参

数。

每个Bean定义被当作一个POJO(通过类名和JavaBean的初始属性或构造方法参数两种方式定义的Bean)。

Ioc,AOP之类的技术,本质上都是将原本位于应用程序代码中”硬编码”逻辑,剥离出来放到了配置文件中(或者其他形式)。主流声音都是认为提高了应

用程序的可维护性。

但如果从以下方面观察,结合项目实际经验,个人感觉这些技术的应用大大降低了应用程序的可维护性,尤其是面对一个陌生的系统,或者项目人员变动频繁的时候。

1. 中断了应用程序的逻辑,使代码变得不完整,不直观。此时单从Source无法完全把握应用的所有行为。

2. 将原本应该代码化的逻辑配置化,增加了出错的机会以及额外的负担。

3. 时光倒退,失去了IDE的支持。在目前IDE功能日益强大的时代,以往代码重构等让人头痛的举动越来越容易。而且IDE还提供了诸多强大的辅助功

能,使得编程的门槛降低很多。通常来说,维护代码要比维护配置文件,或者配置文件+代码的混合体要容易的多。

4. 调试阶段不直观,后期的bug对应阶段,不容易判断问题所在。

4 谈谈你常用的设计模式(结合框架)。

5 唯一的一道计算题:用有效率的方法求N以内的所有质数。

6 单点登陆如何实现;介绍在理想状态下的实现流程。

7 根据你真实的工作年限,介绍你对Java的认识程度,并说说你的职业目标。

8 谈谈你对WebGame的看法?Java与其他实现技术的优缺点等。

9 Java, .NET, PHP都有什么应用场合?Java相对于其他语言的优势。

X