【原创】如何做一个合格的Cocos面试官-非专业人士的前期准备

Daily Record 面向Cocos面试者的面试官准备 (非深入) - 2020 12.28

只要有面试,我就连载,我,一个Web前端仔~

mvc的开发模式:


MVC模式是软件工程的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)

  • M 模型:封装应用程序状态、响应状态查询、处理业务流程、通知视图业务状态更新。
  • V 视图:解释模型、接受数据更新请求、发送用户输入给控制器、允许控制器选择视图
  • C 控制器:接受用户请求、调用模型响应用户请求、选择视图显示相应结果

目的: M和V实现代码分离。V定义比较清晰(用户界面)

前端方言:

  • V = html页面,
  • M = 处理逻辑,
  • C = 接受用户的输入,调用 M和C去完成用户需求,不输出任何东西,不做任何处理,只是接受请求决定调用哪个模型构件去处理请求,确定哪个视图显示返回数据,有点像路由?

后台CICS端?


客户信息控制系统,是一系列为应用提供联机事务处理和事务管理的产品,为商业应用提供一个事务处理环境,
帮助客户建立三层次结构的联机事务处理应用,CICS 有效地区分应用系统中的表述逻辑层、业务逻辑层和数据逻辑层。

lua+cocos-2dx? c#+unity? c++ +js+cocos-2dx?


lua+cocos2dx & js+cocos2dx:

1、lua比js效率快(密集计算才会感觉到),其余日常游戏逻辑速度几乎没区别,即使有也可以放到C++去做,到目前未知还没有。

2、安全性:js混淆后再进行bytecode转换最大程度保证代码的安全性。

3、面向对象,js一切皆为对象,唯一缺点是没有继承,调用父类方法等原生方法,需要原型链来模拟实现。 cocos2d-jsbinding帮忙实现继承功能。实际用的时候完全可以去实现类的继承,重载,重写,父类调用等功能.

4、调试:网页调试可以debug,打断点,看当前域数据,可以引入脚本作智能提示。

5、网页版:手机app,同事可以在手机浏览器运行。

6、下载体积非常小,lua一般大于1M

cocos-2dx?cocos-creator


cocos2d & cocos2dx

【开发语言】:Cocos2d是Object-C写的,Cocos2dx是C++写的,支持使用 C++、Lua 或 Java 进行开发。

【运行平台】:Cocos2d只能在IOS下运行,Cocos2dx是跨平台的,适配 iOS、Android、HTML5、Windows 和 Mac 系统,功能侧重于原生移动平台。

【国籍】:Cocos2d是外国人搞的,Cocos2dx是中国人搞的。

Cocos2dx是Cocos2d的C++写法,但是游戏架构是一样的,都包含了精灵、导演、场景、动作等概念,他们是一脉相承的东西。你可以直接研究Cocos2dx,没有什么障碍。

虽然是有了Cocos2d才有的Cocos2dx,但是Cocos2dx包含了Cocos2d的主要思想,因此可以直接研究Cocos2dx。

平时说的Cocos,指的是Cocos 2DX

cocoscreator & cocos2dx

Cocos Creator是借用Unity 3D的操作方式,开发的另一个引擎(号称中国版的Unity)。虽然名字里也带Cocos,但和Cocos 2DX是两个不同的引擎。

简单概括,它们是触控科技,开发的两个不同的引擎。唯一的共同点,就是名字里都带Cocos。

相比之下,Cocos 2DX可控性更强一些,使用C++开发,所以性能非常好。可以做一些比较大型的游戏。缺点是学习起来比较费劲。

Cocos Creator界面更简洁,学习更简单一些,套用Unity 的操作方式,也更符合趋势。但由于使用JS作为开发语言。所以性能比较渣。以小游戏为主,不太适合做太大型的游戏。

总结起来,就是引擎不同、性能不同、用途不同。

unity & ue4


不分彼此。 unity: 绝地求生、堡垒之夜、和平精英、黎明杀机; ue4: 王者荣耀、炉石传说、纪念碑谷、PokemonGo

多线程 多进程


1、进程是由多个线程构成的,是线程的集合。

2、线程是操作系统进行运算调度的最小单位。

3、多线程优点: 提高程序效率,将耗时任务放在后台继续执行的同时,同时执行其他操作。(异步,系统不断在各个线程之间来回的切换-极快速)

4、多线程缺点:很耗系统资源,因为线程需要开辟内存,需要更多内存,影响系统性能,操作系统要在线程之间来回切换。

5、计算机同时执行多个进程,一般是同时运行多个软件。

  • 单进程单线程:一个人在一个桌子上吃菜
  • 单进程多线程:多个人在同一个桌子上一起吃菜
  • 多进程单线程:多个人每个人在自己的桌子上吃菜

多线程的问题是多个人同时吃一道菜的时候容易发生争抢,也就是说资源共享就会发生冲突争抢。

1> Windows : 开桌子的开销很大,因此 Windows 鼓励大家在一个桌子上吃菜。因此 Windows 多线程学习重点是要大量面对资源争抢与同步方面的问题。

2> Linux :开桌子的开销很小,因此 Linux 鼓励大家尽量每个人都开自己的桌子吃菜。这带来新的问题是:坐在两张不同的桌子上,说话不方便。因此,Linux 下的学习重点大家要学习进程间通讯的方法。

【开桌子】 -> 创建进程, 【开销】 -> 时间开销

Windows 编程中不建议你创建进程

1> 并行:多个CPU实例或多台机器同时执行一段处理逻辑,是真正的同时。

2> 并发:通过CPU调度算法,让用户看上去同时执行,实际上CPU操作层面不是真正的同时。

并发时如果操作了公用资源,有可能产生安全问题

3> 高并发:短时间内大量操作请求, 主要是web系统集中大量访问或者socket端口集中性收到大量请求。可能导致系统宕机,严重的甚至导致OOM异常,系统停止工作等。

解决高并发,从硬件、网络、系统架构、开发语言的选取、数据结构的运营、算法优化、数据库优化… 不详细说

4> 多线程和高并发的关系: 多线程只是在 同/异步 角度上解决高并发问题的其中一个方法手段,是在同一时刻利用计算机闲置资源的一种方式。

cocos常用优化技巧


1、资源包体大小优化: 资源x,代码模块x,压缩png,压缩声音数据(多声道-单声道,降低采样率),降低图片精度(1920x1080->960x540),不要带字体文件用美术字来替代

2、图集打包:散图->图集,注意不要把不同场景会用到的图片放到图集里。放公共的

3、动画优化:内存大小优化(帧动画、骨骼动画代替帧动画); 运行性能优化:骨骼动画替换掉。

避免动画中绑定代码,动画编辑器动画时,尽量不要使用动画事件来调用代码,避免不必要的代码管理麻烦。

4、资源管理: 场景切换时候,不用的资源,可以卸载掉; 预加载; 使用节点池进行缓存

5、代码优化:
1> 地图数据、路点数据,能离线生成的最好离线生成出来;
2> 在update中避免使用节点查找等,可以考虑初始化的时候把常用节点,组件保存起来。
3> 尽量少用大型框架库,例如物理引擎,能不用就不用。
4> 复杂算法,用空间换时间;
5> 不要做过多的代码绑定;

6、setting.js优化:资源放在resources下,会导致setting.js变大。不用代码加载的资源别放到resources文件夹下。

7、运行时内存优化:分析内存占用情况。 例如节点数目、资源,等等。

手游项目打包流程


目前可以选择的原生平台包括 Android、iOS、Mac、Windows 四个,其中发布到 iOS、Mac 和 Windows 的选项只能在相应的操作系统中才会出现。

其中 Mac/Windows 平台直接在桌面运行预览,iOS 平台会调用模拟器运行预览,Android 平台必须通过 USB 连接真机,并且在真机上开启 USB 调试后才可以运行预览。

分开操作系统打包。

排序算法

太长,请看大佬解说。

点我点我点我!干货,十大经典排序!

递归算法


通过重复将问题分解为同类的子问题而解决问题的方法,函数可以通过调用自身来进行递归,计算理论可以证明递归的作用可以完全取代循环,因此在很多函数编程语言(如Scheme)中习惯用递归来实现循环。

递归算法 和循环算法总结:
1> 一般递归调用可以处理的算法,也通过循环去解决常需要额外的低效处理 。
2> 现在的编译器在优化后,对于多次调用的函数处理会有非常好的效率优化,效率未必低于循环。

<script type="text/javascript">
// 需求: 在body中打印出1-3,用递归解决
function console1_3(n){
     
  document.write(n + "
"
) n++ if(n<=3){ print1_3(n) } } console1_3(1) </script>

游戏项目屏幕适配


从我们准备的分辨率资源目录中查找到与实际屏幕分辨率的宽高比最为接近的一个目录,然后将该目录添加到项目的资源目录容器中。

代码省略,自行度度。

常见的SDK接入


微信SDK、支付宝SDK、友盟/百度SDK、其他SDK

如何选择?


有Java基础 ? 选择Cocos Creator入门是最佳选择。上手快,入门容易,开发速度快,成本低。

之前从事Unity开发,想业余时间开发微信小游戏上线 ? 选择Cocos Creator几乎无缝衔接,因为Cocos Creator就是中国版的Unity。

之前有C++开发基础 ? 选择Cocos 2dx是较好选择。

IOS开发人员(Object-C) ? Cocos 2d是不错的选择。

开发3D微信小游戏 ? 建议选择Laya或Cocos Creator 3D,PC端3D游戏建议选择Unity。

你可能感兴趣的:(cocos-2dx,面试官,面试,cocos2d-js,javascript,mvc,unity3d,cocos)