1.lua的类型有哪些?
答:lua的数据类型有:number,string,nil function,table,thread,userdata(用户自定义的类型),boolean(布尔类型) 
2.什么是尾调用,尾调用有什么优点
尾调用:在一个函数的最后一步开始调用另外一个函数,
优点:直接调用一个函数,不需要额外的堆栈空间,防止栈的溢出,节省空间


3.什么是闭合函数,闭合函数有什么作用,handler的作用
答:闭合函数
举例:

function count() 



     local i = 0; 



     return function() 



               i = i + 1; 



               return i; 



            end 



 end




以下是输出的数据




local func = count(); 



     print(func()); 



     print(func()); 



     print(func());


对应的是
1
2
3


闭合函数:一个函数加上该函数所需要访问的所有的“非局部变量”
count() 函数就是一个闭合函数   ,闭合函数可以节省空间,更新变量的值


handler:将lua  对象和其方法包装为一个匿名的函数,然后再特定事件发生时就会掉那个传入的函数
例如触摸、帧事件


4.lua的__index
答:,当我们访问一个表中的元素不存在时,则会除法区寻找__index元方法(可以是函数或者表),
若存在 ,就返回  否则返回nil






5.lua的__newindex
答:访问表中的元素不存在的时候,会触发寻找__newindex元方法()可以是表或者函数,执行该方法进行赋值




6.lua有真正的面向对象的语言吗?
答:不是,是模拟面向对象的语言




7.怎么向table中添加一个元素,使用库函数

t = {4,5,6} 

 table.insert(t,2,100)—-参数依次是  需要添加的表,添加的位置,添加的值 

 for i,v in ipairs(t) do 

print(i,v) 

 end


8.怎么向table中移除一个元素,使用库函数

t = {4,5,6} 

 table.remove(t,1) 

 for i,v in ipairs(t) do 

print(i,v) 

 end






9.quick中定时器怎么使用
答:

local schedule = cc.Director:getInstance():getScheduler() 

 self.id = schedule:scheduleScriptFunc(handler(self, self.createZombies), 1.0, false)










10.物理引擎的碰撞筛选?


答:

local  pl = cc.EventListenerPhysicsContact:create(); 

 pl:registerScriptHandler(handler(self, self.onContactBegan),cc.Handler.EVENT_PHYSICS_CONTACT_BEGIN); 

 d:addEventListenerWithSceneGraphPriority(pl, self);




body:setGroup(-10) 
-- 设置组 

body:setCategoryBitmask(1) 
 -- 类别 

body:setCollisionBitmask(1) 
 -- 碰撞 

body:setContactTestBitmask(1) 
 -- 碰撞监听 

a = A.setCategoryBitmask & B.setCollisionBitmask 

a = B.setCategoryBitmask & A.setCollisionBitmask 

-- a, b都非零 发生碰撞 

a = A.setCategoryBitmask & B.setContactTestBitmask 

a = B.setCategoryBitmask & A.setContactTestBitmask 

-- a, b都非零 监听函数调用





11.Cocos2dx内存管理
答:在堆上分配一块内存,这个对象的引用计数就是1;
当有对象要引用这块内存空间的时候,对这块内存retain一次,引用计数就增加1;
当不再引用这块内存的时候,对这块内存release一次,引用计数就减1;
当这个引用计数减为0的时候就使用delete删除掉这块内存;
当调用了autorelease方法以后,我们的对象就会放到这个内存回收池中而不会进行release,当一帧结束的时候这个自动释放池就会释放掉,这个时候在自动释放池中的所有对象就会被release一下,引用计数就会减一,如果这个时候引用计数为0,就会被删除
12.缓存的作用
以空间换时间,提前加载,减少访问时间
13.为什么将小图合成大图
答:因为计算机的存储方式是以2的n次方为单位,所以将小图合成大图可以节省空间
将小图合成大图还可以减少渲染时间
14.结构体 {

int a;—4 

long b;—4 

char c;—-4 

 }


在32位操作系统占多少内存,写出计算过程
答:12byte


15.网络分层,每层的作用
物理层和链路层:解决相邻节点的单跳接入问题,就是保证相连(有线网络)或者相邻(无线网络)的节点可以相互发送数据比特;
网络层:负责多跳的路由选择问题(也就是收到一个数据包后判断是否是自己的,如果不是应该发往相连的哪个节点);
传输层:只在目的和源两个节点起作用,用于保证传输质量、流量控制、跟上层应用交互等;
应用层:主要是各种应用程序(或者说操作系统中进行通信的进程),比如浏览器浏览网页、qq通信、电子邮件等