Cocos2D-X面试题

一、队列和栈有什么区别?

队列(Queue):是限定只能在表的一端进行插入和在另一端进行删除操作的线性表;
栈(Stack):是限定只能在表的一端进行插入和删除操作的线性表。
区别如下:
a)规则不同
1. 队列:先进先出(First In First Out)FIFO
2. 栈:先进后出(First In Last Out )FILO

b)对插入和删除操作的限定不同
1. 队列:只能在表的一端进行插入,并在表的另一端进行删除;
2. 栈:只能在表的一端插入和删除。

c)遍历数据速度不同
1. 队列:基于地址指针进行遍历,而且可以从头部或者尾部进行遍历,但不能同时遍历,
无需开辟空间,因为在遍历的过程中不影响数据结构,所以遍历速度要快;
2. 栈:只能从顶部取数据,也就是说最先进入栈底的,需要遍历整个栈才能取出来,而且
在遍历数据的同时需要为数据开辟临时空间,保持数据在遍历前的一致性。

二、你常用的cocos2d-x工具有哪些?

TiledMap (地图编辑器)ParticleEditor(粒子编辑器)
cocosBuilder(可视化编辑)Texture Packer(图片组合工具) 
plistEditor工具等

三、分别写出int、float、BOOL、指针类型的变量,与“零”值的比较语句。

BOOL :  if ( !a ) or if(a)  
int :   if ( a == 0)  
float : const EXPRESSION EXP = 0.000001  
    if ( a < EXP&& a >-EXP)  
pointer : if ( a != NULL) or if(a == NULL)  

不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。

EPSINON(精度)应该是一个很小的值吧 因为计算机在处理浮点数的时候是有误差的,所以判断两个浮点数是不是相同,是要判断是不是落在同一个区间的,这个区间就是 [-EPSINON,EPSINON] EPSINON一般很小,10的-6次方以下吧,具体的好像不确定的,和机器有关。

剖析:

考查对0值判断的“内功”,BOOL型变量的0判断完全可以写成if(var==0),而int型变量也可以写成if(!var),指针变量的判断也可以写成if(!var),上述写法虽然程序都能正确运行,但是未能清晰地表达程序的意思。
 一般的,如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!var),表明其为“逻辑”判断;如果用if判断一个数值型变量(short、int、long等),应该用if(var==0),表明是与0进行“数值”上的比较;而判断指针则适宜用if(var==NULL),这是一种很好的编程习惯。

注意:

浮点型变量并不精确,所以不可将float变量用“==”或“!=”与数字比较,应该设法成“>=”或“<=”形式。如果写成if(x == 0.0),则判为错,得0分。

你可能感兴趣的:(Cocos2D-X面试题)