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 + "<br />")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面试官-非专业人士的前期准备相关推荐

  1. 一个合格的技术面试官是怎么样的?

    作为技术面试官,面试过程很少考虑候选人的感受.上来就是问,不合适就送走.虽然技术环节我很专业,但是其他细节我却知之甚少. 从来没觉得这样会有什么问题,直到有一天,我参加了一场面试官培训,才意识到自身的 ...

  2. 艾伟也谈项目管理,如何做一个合格的项目经理

    项目经理这个角色说大不大,说小也不小.在大公司,项目经理这样的角色可能存在不计其数,他们很多都是寄托于项目的存在而生,项目的完成而终:但对于一些小作坊的软件公司,项目经理一职很多时候是一个长期持有的过 ...

  3. 自媒体怎么做搬运?怎样做一个合格的自媒体视频搬运工?

    今天不聊什么别的东西,就聊一聊自媒体视频,怎样才能更好的搬运更有利于我们操作与赚到自己想要的那部分钱. 股神巴菲特曾经说过一个非常经典的话:人生就像滚雪球一样,重要的是发现构思的雪和一道够长的山坡,如 ...

  4. 要怎么样做一个合格点的程序猿呢?

    要怎么样做一个合格点的程序猿呢? 把编程当做人生来看,磨刀不误砍柴工.看完设计模式以后,就算以后设计不出很精巧的模式,我也会先仔细想好,仔细研究透了需求,分析透了设计,再写代码,不然的话,后期的维护, ...

  5. 论坛软文撰写技巧之做一个合格的标题党

    论坛软文撰写技巧之做一个合格的标题党 好的标题是论坛营销成功的关键 好的标题是论坛营销成功的关键,这话不是空穴来风. 2008年四川地震后全国人民都在心系灾区的同胞并踊跃的捐款,而王石和他的万科集团因 ...

  6. 公开课:如何做一个合格的网络编辑

    摘要 互联网的高速发展,催生了许多热门职业.如常规的编辑岗位,因为加上了互联网的标签而多了更多属性.本季<腾讯职播间>倾力打造互联网热门职位揭秘课程,为想要进入互联网工作的你,提供最有力的 ...

  7. 做一个合格的技术总监

    做一个合格的技术总监 1.       技术总监的定位 企业内负责技术的最高负责人, * 长期技术方向(战略性) * 短期技术方向(战术性) * 管理研究对公司经营活动和营利的影响 * 公司中使用的软 ...

  8. 做一个合格的前端,gulp资源大集合

    承接前一篇<做一个合格的前端,gulp自动化构建工具入门教程>故而整理了如下gulp插件资源大全. **[我的新作观点网:http://www.guandn.com (观点网是一个猎获新奇 ...

  9. 做一个合格的男友,用python制作每天定时给女朋友发送邮箱问候

    做一个合格男友 需要用到的头文件 获取天气 发送邮件 定时发送 每日一语 完整项目代码 需要用到的头文件 import requests import datetime import time imp ...

最新文章

  1. 【uiautomator】UiDevice
  2. 关于.NET中的Server push技术
  3. 【Linux系统编程学习】 静态库的制作与使用
  4. 【C++深度剖析教程26】父子间的冲突
  5. linux nm 和ar命令
  6. 演练 小米商城 手机版块 0920
  7. mysql update多个字段_常见的MySQL命令大全fourth
  8. OGG-01433 Oracle GoldenGate Capture for Oracle, EXXX.prm: Failed to validate table <SCHEMANAME.TABLE
  9. CCSK云安全认证-M2-云基础设施安全
  10. 定义一个类描述分数,并提供加减乘除运算 以及分数化简
  11. Win10真正好用之处
  12. Elasticsearch顶尖高手系列:高手进阶篇(二)
  13. 【教你如何在Win7上安装lls】
  14. win10强制关闭飞行模式_win10笔记本突然连不上wifi怎么办?
  15. MarkdownPad2注册码——亲测有效
  16. 从前世看今生,从JavaEE到微服务
  17. 多功能流媒体播放器实现网页无插件直播之EasyPlayer.js如何实现播放完自动循环播放
  18. Python——组合数据类型的应用_1.英文句子中的词频统计
  19. 关于ddk环境的配置
  20. SKY19225-001单刀四掷(SP4T)开关设计

热门文章

  1. form表单的onsubmit事件中调用方法时为什么前面加return
  2. Ubuntu查看某端口是否开放
  3. ShardingSphere分库分表实战
  4. 【算法】 AOV网与AOE网
  5. Python 主动抛出异常、自定义异常
  6. android 开源框架mvvm,relight: A light MVVM framework for Android. 一个轻量级的安卓MVVM框架...
  7. hdu 6072 Logical Chain Kozaraju+bitset
  8. jQuery-slimScroll控制滚动条样式的插件
  9. 水产行业S2B2C系统平台:赋能水产产业链价值释放,数字化变革驱动水产品新零售
  10. 成都盛铭轩:产品描述怎么写