美文网首页
Cocos2D-X面试题

Cocos2D-X面试题

作者: diveinljq | 来源:发表于2017-03-02 23:05 被阅读0次

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

    队列(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  
      <span style="white-space:pre">  </span>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面试题

          本文链接:https://www.haomeiwen.com/subject/kfnkgttx.html