`

GameLoft面试题目

    博客分类:
  • C++
阅读更多


1、  求下列代码执行以后expr的值

a)         int a = 8,b = 4;

int expr = a++%++b*2

答案:6

注意:++运算符在变量前后的区别

b)         int expr = 20 / 8 * 8;

答案:16

注意:整数和整数运算结果还是整数

c)         int expr = 4 << 2 + 1;

答案:32

注意:+的优先级高于<<

d)         int expr = -4321 >>>30;

答案:3

e)         int expr = 123 ^ 321 ^ 123;

答案:321

注意;换算成int进行位运算

f)         int a = 255;

int expr = (byte)a + (((byte)a) & 0xff);

答案:254

注意:byte运算的结果是int类型

g)         int expr = “123454321”.charAt(4) + 2;

答案:55

注意:字符进行四则运算时是使用字符编码进行运算

h)         Integer a =   new Integer(1234);

Integer b =   new Integer(1234);

boolean expr = a == b;

答案:false

注意:==比较的是是否指向同一内存地址

i)           String func(String s){

return s.length() > 0 ? func(s.substring(1)) + s.charAt(0) : “”;

}

String expr = func(“Gameloft”);

答案:tfolemaG

注意:这是一个递归实现

2、  知识题

a)         什么是垃圾回收?什么时候触发垃圾回收?如何降低垃圾回收的触发频率?它能保证程序有足够的可用内存吗?

答案:垃圾回收(GC)是Java语言的一个重要特性,作用是释放不再被使用的内存。垃圾回收由系统进行管理。在系统认为需要的时候自动启动一个线程进行处理。

尽量减少垃圾内存,也就是新建对象,的数量,可以降低垃圾回收的频率。

垃圾回收机制无法保证有足够的内存。

b)        请写出short的取值范围。

答案:-215~215-1

c)         什么是混淆(obfuscate)?有什么好处?有哪些工具可以混淆jar文件?

答案:混淆是指通过对class文件中的变量名和部分方法名进行处理,来提高代码反编译的难度。

好处主要有2个:1、提高反编译以后代码阅读的难度 2、降低class文件的大小。

常见的混淆器有Proguard和RetroGuard两种。

d)        什么是状态机?游戏开发中有那些地方能用到状态机?

答案:状态机(State Machine)是根据对应状态进行处理的一种机制,在游戏开发中最典型的应用是游戏人工智能(AI)等地方。

e)         请根据你的知识,对以下计算机名次进行尽量简单的描述:

                         i.              J2ME

J2ME是一种使用Java语言进行嵌入式设备开发的技术。

                       ii.              Python

Python是一种语法简单的面对对象的程序设计语言

                     iii.              Ant

Ant是一种简化和统一项目编译的工具软件。

                     iv.              Javac

Javac是Java语言的编译程序

                       v.              Subversion

Subversion是新一代的版本工具

                     vi.              OpenGL

OpenGL是一套开发的图形界面开发库标准

f)         请列出你心目中一名优秀员工所应该具备的品质,并按重要程度排序



3、  分析以下程序:

const [j2me1]SCREEN_WIDTH = 176;

const [j2me2]TEXTWORD_SPACE = 3;

public static void DrawString(String strText,int posX,int posY,int flagX){

         int width = GetTextWidth(strText);

         int x,int [j2me3]y = posY;

         if(flagX > 0){

               x = 0;

         }

         else if(flagX == 0){

               x = (SCREEN_WIDTH – width) / 2;

         }

         else{

               x = SCREEN_WIDTH – width;

         }

         x += posX;

byte [j2me4]charTemp;

         for(int i = 0;i <=[j2me5] strText.length();i++){

               charTemp = strText.charAt(i);

               if(charTemp < ‘!’ | charTemp > ‘z’){

                       x += TEXTWORD_SPACE;

                       continue;

               }

               x += DrawCharacter(charTemp,x,y);

         }

}

问题:

1)        请尽量找出程序中的错误,直接标注在上面。

2)        请解释参数flagX的作用

flagX的作用是决定对齐方式,大于0左对齐,等于0居中,小于0右对齐

3)        请推测函数DrawCharater的返回值有什么意义?

字符charTemp的宽度

4、  应用题

a)         写一个函数判断两个圆是否相交,并尽量优化运行速度。

bool IsOverlapped(int x1,int y1,int r1,int x2,int y2,int r2)

/**

         * 判断两个圆是否相交

         * @param x1 第一个圆圆心的x坐标

         * @param y1 第一个圆圆心的y坐标

         * @param r1 第一个圆的半径

         * @param x2 第二个圆圆心的x坐标

         * @param y2 第二个圆圆心的y坐标

         * @param r2 第二个圆的半径

         * @return

         */

       boolean IsOverlapped(int x1,int y1,int r1,int x2,int y2,int r2){

               //两个圆心之间的距离的平方

               int l = (x1 - x2)*(x1-x2) + (y1 - y2) * (y1 - y2);

               if(l < (r1 + r2) * (r1 + r2)){

                     return true;

               }else{

                     return false;

               }

       }

b)        写一个函数去掉一个字符串中单词间多余的空格,使得相邻两个单词间有且只有一个空格。例如当输入字符串是“Hello!_ _Game_programming_ _world!”时,调用该函数后字符串变为“Hello!_Game_programming_world!”。

/**

         * 去除字符串中多余的空格

         * @param s 需要处理的字符串

         * @return 处理后的字符串

         */

       String doString(String s){

               String temp = "" + s.charAt(0);

               for(int i = 1;i < s.length();i++){

                     char c = s.charAt(i);

                     //如果当前字符是空格

                     if(c == ' '){

                             //判断前一个不是是空格则添加,否则不添加

                             if(s.charAt(i- 1) != ' '){

                                   temp += c;

                             }

                     }else{

                             temp += c;

                     }

               }

               return temp;

       }

c)         假定屏幕的像素宽度为screenWidth,写一个函数计算一个字符串需要分成几行显示。

要求:

1、每行应尽可能多地显示字符,但不能有字符部分或完全显示在屏幕外。超过部分的字符换下一行显示。

       2、每个字符的像素宽度不一样,每个字符的像素宽度不一样。用int GetCharWidth(char c)获得每个字符的像素宽度。

/*

         * 计算一个字符串可以分多少行进行显示

         * @param s 原始字符串

         * @param screenWidth 屏幕宽度

         * @return 行数

         */

       int calcLineNum(String s,int screenWidth){

               int length = 0;

               //行数

               int n = 0;

               //统计长度

               for(int i = 0;i < s.length();i++){

                     //当前字符的宽度

                     int charLen = GetCharWidth(s.charAt(i));

                     //总长度增加

                     length += charLen;

                     //如果达到屏幕宽度

                     if(length > screenWidth){

                             n++; //行数+1

                             length = charLen; //重新计算长度

                     }

               }

               //最后一行处理

               if(length > 0){

                     n++;

               }

               return n;

       }

5、  把以下段落翻译成中文

a)         An integral approach to code documentation is to write the code so that it documents itself.In other words,the code should be naturally readable in such a way as to make it easy to understand .This is accomplished by proper naming conventions and statement formatting.

一份完整的代码文档是编写可以说明自身的代码。换句话说,代码应该是可读性好,便于理解的,这些是由恰当的命名规则和语句格式实现的。

b)         Collections are the data structures that are most easily altered for performance-tuning purposes. Using the correct or most appropriate collection class can improve performance with little change to code. For example, if a large ordered collection has elements frequently deleted or inserted throughout it, it usually can provide better performance if based on a linked list rather than an array. On the other hand, a static(unchanging) collection that needs to be accessed by index performs better with an underlying implementation that is an array.

集合是为了性能调整目的很容易进行更改的数据结构,使用恰当的集合类可以在对代码进行很小更改的前提下改变程序的性能。例如如果有一个需要经常添加和删除的有序集合,使用链表可以比数组提供更好的性能,在另一方面,一个需要通过索引进行访问的静态集合,使用数组实现将更好一些。[j2me1]final static int

[j2me2]final static int

[j2me3]删除int

[j2me4]char

[j2me5]去掉=号
分享到:
评论

相关推荐

    GameLoft面试题目(含答案)

    以下是一些可能在GameLoft面试中出现的知识点,结合描述中的"GameLoft面试题目(含答案)",我们可以推测这些文档可能包含了这些问题及其解答。 1. **Java基础知识**:GameLoft作为游戏开发商,可能会考察应聘者的...

    GameLoft面试题目及答案

    【GameLoft面试题目解析】 1. 代码执行题 a) `int expr = a++%++b*2;` 答案:6 在这个表达式中,`++b` 先自增,变为5,然后 `a++` 后自增,先计算 `a%b` 得到2,再将a加1。接着乘以2得到6。 b) `int expr = 20 / ...

    gameloft(智乐)面试题

    【gameloft(智乐)面试题】是针对游戏开发巨头——Gameloft公司的一系列求职测试题目。Gameloft是全球领先的移动游戏开发商之一,以其高质量的游戏产品和丰富的游戏库而闻名。对于想要进入这家公司的求职者来说,了解...

    gameloft 游戏集(nokia)

    【标题】"gameloft 游戏集(nokia)" 涉及的主要知识点是游戏开发商 Gameloft 为诺基亚手机平台开发的经典游戏集合。Gameloft 是一家国际知名的游戏开发公司,以其高质量的移动游戏而闻名,尤其在功能手机时代,...

    gameloft车类游戏大全

    在IT行业中,手机游戏开发是其中一个非常活跃的领域,尤其对于知名的游戏开发商 Gameloft 来说,他们为全球玩家提供了无数精彩的游戏体验。"gameloft车类游戏大全"这个主题聚焦于 Gameloft 出品的以汽车为主题的手机...

    gameloft精灵编辑器

    【标题】"gameloft精灵编辑器"是一个专用于游戏开发的工具,由著名的游戏公司Gameloft开发。在游戏行业中,“精灵”通常指的是2D游戏中的静态或动态图像,它们是游戏场景的重要组成部分,包括角色、物品、背景等元素...

    Gameloft 公司及产品介绍

    Gameloft是一家开发和发行基于移动设备的视频游戏的跨国公司,其总部位于法国,分公司遍布全球。其股票在欧洲证券交易所(原为巴黎证券交易所)挂牌。是UBI SOFT集团旗下的专业游戏软件公司。目前在10个国家有分支...

    GameLoft(智乐)面试题

    本篇文章将深入解析GameLoft全国三个工作室的C++面试题,旨在帮助求职者更好地准备面试,理解并掌握C++编程的核心知识点。 1. **C++基础知识** - **变量与数据类型**:理解基本数据类型如int、float、char等,以及...

    gameloft公司介绍

    gameloft instuction.

    gameloft智乐软件(成都)游戏测试笔试及面试题

    在Gameloft的笔试中,可能会有题目要求你模拟用户操作,检查功能是否正常。 2. 性能测试:关注游戏运行时的性能表现,如帧率、内存占用、加载速度等。测试者需要理解不同平台的性能指标,例如在移动设备上,优化...

    gameloft c++笔试题

    【gameloft c++笔试题】是一场针对C++编程能力的测试,涵盖了语言基础、程序优化、类的...这些题目旨在检验应聘者的C++基础知识、程序设计技巧和问题解决能力,是游戏开发公司gameloft评估候选人技术水平的重要环节。

    gameloft笔试题gameloft笔试题

    在准备Gameloft的笔试时,你需要对编程基础知识有扎实的理解,尤其是Java语言。以下是根据提供的题目内容解析的相关知识点: 1. **字符串处理**: - `String.trim()` 方法用于去除字符串两端的空白字符。不使用该...

    gameloft C/C++ 笔试题 2011年

    【gameloft C/C++ 笔试题 2011年】是一份针对C和C++编程语言的面试或笔试题目集,旨在测试应聘者的基础知识和编程能力。这份试卷涵盖了一系列核心概念,包括类型转换、内联函数、内存分配、参数传递、对象构造与析构...

    超越GameLoft的动画编辑器

    完全兼容GameLoft动画编辑器,输出数据为XML格式,所以解析类用你之前的就可以 可直接替换之前你所用的GameLoft动画编辑器,动作生成GIF文件,方便沟通交流,在拼接动画时做了人性化的修改,多图块反转,对齐方式等 ...

    gameloft测试用例模版表

    gameloft的测试用例

    xyhuman1656

    ### Gameloft(智乐软件)游戏测试面试笔试题解析 #### 1. 表达式计算 - **a)** `int expr = a++ % ++b * 2 + 6;` 其中 `a = 8`, `b = 4`。 - 解析:首先进行 `++b` 操作,`b` 变为 `5`;然后 `a++` 使得 `a` 的值...

    gameloft手机游戏通用测试用例

    GAMELOFT内部手机游戏通用检测标准

Global site tag (gtag.js) - Google Analytics