2.Cocos2dx面试回顾

经历了一周的面试,终于找到一家还挺满意的公司,但中间也是曲曲折折,遇到了很多公司,碰到了很多面试题,所以在此总结一下,事先声明,因为本人项目经验不足,所以以下总结问题,基本与项目无关。
  1、Cocos2dx的内存管理机制(必考题)
  此题基本是必问,同学们最好是看一下源码,理解的更透彻一些,回答起来才能超级顺畅,我现在呢,把我面试时的原话复述一遍,诸位最好看源码,这样才能更好地理解,死记硬背很容易出错的。
  Cocos2dx的内存管理是通过引用计数来实现的,所有对象继承自Ref类,Ref类中有一个mReference的整型变量,记录着该对象的引用次数,初始值为一,新建对象,例如精灵的时候,一般在create函数中,除了执行new操作之外,还会执行的就是autorelease操作,该操作就是将对象添加至autoreleasepool(自动释放池)中,每一帧结束的时候,都会对autoreleasepool中的对象进行release操作,没有被addChild的,由于引用计数为一,release之后就被delete,而不为一的则被保留,每个对象的release操作结束后,就会对autoreleasepool进行清空,之后留存在内存中的对象都是有addChild后的对象,只需要执行removeChild等操作就可以删除对象了。
  2、如何节省内存开销
  此题我的思路是从两个角度出发,一个是对图片进行压缩,第二个就是通过spriteFrame将碎图拼成大图,除此之外,如果要绘制大量相同的元素要结合spriteBatchNode来做,因为spriteBatchNode可以对绘制进行批处理,减少openGL对图片的open、close操作,以此来提高绘制效率。
  3、你有做过网络那块么
  木有做过,是真的木有做过,但问这个的很多,面的棋牌公司基本有问这个,我当时也是懵逼的,回答的是httpClient,但后来发现有个东西叫WebSocket,同学们可以自行研究一下。
  4、Cocos3.x的渲染机制
  有《我所理解的Cocos2d-x》的童鞋们翻到4.1新绘制系统的特点,然后按着首先,其次,第三,最后,一点点看下去就好了,你都能大致了解3.x的渲染特效,装装逼了,没书的朋友就听我扯一遍吧!
  首先,绘制逻辑不在每个节点的draw函数中了,而是被封装成了一个又一个的render命令,在draw函数中发送到renderQueue,最后在mainloop的drawscene函数中进行绘制。能答上这点基本ok了。
  其次,视口剪裁,也就是显示的精灵在可见区域外,就不会发送渲染命令了。
  第三,由于新的渲染机制是将渲染命令发送到渲染队列后再进行绘制,所以会对渲染命令进行排序,如果渲染命令中有用相同纹理,相同渲染方式的,则自动进行批处理,也就是spriteBatchNode干的事。
  最后,实现绘制的自定义,这个我也不是很理解,不过有前面三点应该就足够了。

好了,以上基本就是我遇到的比较有印象的cocos面试题了,有答得不好的望请赐教,若有其他题目,望请补充,最后附赠两道hr面试题,都是自由开放的题目,木有标准答案,我只是回答我当时说的话:
  1、工作中你觉得哪一类同事不好相处?
  没有不好相处的,大家人都挺好的,只是工作上有些时候沟通不到位,会有些小矛盾,但并不影响同事间的正常相处。
  2、如果策划让你短时间实现一个几近于不可能的任务,如之奈何?
  首先,自我评估,难易度,如果能实现,预估工作时间,询问策划是否满意,若策划不满意,则再寻解决方案,实在思索不出,就找主程协商,询问更优解,若有更优解,则按更优解处理,如果更优解,则如实向策划反应情况,木有办法咯!

你可能感兴趣的:(2.Cocos2dx面试回顾)