您的位置:首页 > 职场人生

面试题2

2016-07-08 15:26 330 查看
1、如何避免内存泄漏,如何查找内存泄漏。

-1.减少不必要的全局变量,或者生命周期较长的对象,即使对无用的数据进行垃圾回收,避免创建过多的对象。

-2.使用一些检查内存的工具,例如instrument等。

2、列举cocos2dx内常用设计模式,并举例说明。

-1:单例模式:Director,FileUtils,UserDefaults等等

-2:观察者模式:

-3:工厂模式

-4:二段式模式

3、简述Action的父类及子类继承结构和用途。

-Action的三个子类,FinateAction,Follow,Speed

4、减少内存开销的方法有哪些?图片压缩的方法有哪些?

(1)减少绘制调用。使用CCSpriteBatchNode

(2)按照最大到最小的顺序的加载纹理

(3)避开内存使用高峰、

(4)当不需要的时候释放无用的资源

(5)当有内存警告的时候释放缓存的资源

(6)使用texturePacker来优化纹理尺寸,格式,色彩深度。

(7)小心使用JPG文件

(8)使用16位RBGA4444色彩深度的纹理

(9)避开加载大尺寸图片

(10)使用pvr.ccz纹理图集而不是原生图片

5、cache机制原理是什么?

-将纹理加载到内存,并且有对应的文件名称key,再次使用的时候,首先去查找对应的key,找到直接使用,找不到再去文件加载。

6:cocos2d-x的图形渲染机制是什么?

-从Cocos2d-x3.0开始,Cocos2d-x引入了新的渲染流程,它不像2.x版本直接在每一个node中的draw函数中直接调用OpenGL代码进行图形渲染,而是通过各种RenderCommand封装起来,然后添加到一个CommandQueue队列里面去,而现在draw函数的作用就是在此函数中设置好相对应的RenderCommand参数,然后把此RenderCommand添加到CommandQueue中。最后在每一帧结束时调用renderer函数进行渲染,在renderer函数中会根据ID对RenderCommand进行排序,然后才进行渲染。

7:autorelease和release的区别?

答:在cocos2dx中,内存管理采用的技术机制,并不是new完之后下一步就delete,它的管理方式是在new了之后,我们需要对它进行计数加1直至这个计数为0的时候,我们才delete掉它。

release是在retain后,调用release即刻将计数减1,直至为0的时候, 我们才delete掉它。

autorelease却不是这样的,在调用了autorelease之后,它将该对象添加到AutoReleasePool,当下一针的时候,进行对应的释放。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: