Unity3d、cocos creator 面试提问

我的面试经历主要是集中在2020年的11月到12月中旬,历经一个半月大大小小的面试也经历了数十场了,下面主要是分享下我面试过程中遇到的问题(只是问题,并没有答案,需要自行google哦)

Unity面试提问

  1. C# 的一些语法基础,我被问到的有数据结构有哪些。数据结构中,链表和数组的区别,他们在增删改的操作中各有什么优点和缺点或者不同。字典的底层原理是什么。
  2. 栈和堆的区别是什么
  3. 值类型和引用类型有什么不同,列举常用的值类型和引用类型。
  4. struct结构体是值类型还是引用类型。
  5. 说说你对out和ref 的理解。
  6. 说说对委托和事件的理解。
  7. 说下你常用的UGUI组件
  8. 2DUI和3D要相互交叉时,怎么合理运用层级(例如一个模型前后都有UI),改变层级的方式有哪几种,列举一下
  9. 写下unity声明周期相关函数,awake和start和onEnable的区别
  10. 说下unity的物理系统(碰撞体,刚体,触发器)
  11. 说下你对Animator和Animation的理解
  12. Unity3D几个特殊的文件路径,他们的读写权限
  13. UGUI事件的原理
  14. AssetBundle整个加载流程
  15. Unity资源加载、卸载流程(包含了Assetbundle,Resources),就是如何做资源管理
  16. Unity网络通信,HTTP和sockets有什么不同,异步通信,异步阻塞是如何实现
  17. Unity主线程问题,如何实现多线程
    徒手写一个冒泡排序。

Cocos Creator 面试提问

  1. creator 声明周期函数,onLoad和start的不同
  2. 对于apply,call和bind的理解
  3. 对于闭包的理解
  4. 数组扁平化
  5. 屏幕适配
  6. cocos creator如何做资源管理

Cocos creator的比较少面试,所有收集的也比较少。主要问的问题也都是项目中的问题,下面的系统问题会提到

一些算法问题

  1. 冒泡排序,快速排序(其实我面试了好多家,只有一家问了十大排序算法,而且问的也不多不深)
  2. 搜索算法(BFS,DFS)
  3. 在场景中,主角在场景中快速找到哪个怪物离自己最近–场景管理算法(四叉树,八叉树)
  4. 一个移动的人物,在其前面有个角度一定的扇形,但这个扇形会一直围绕人物移动,如何去在这个扇形区域内生成一点个。
  5. 背包物体问题,在物品栏了,当你永远大量物品时,如何去生成更新这些物品

系统性提问

这里的问题都是看你个人项目经验,经验积累的问题,通用于所有游戏开发,所有不区分引擎。

  1. 性能优化,内存优化,GC优化(这些百度一大堆)
  2. 如何去定位问题,在项目中遇到问题,或者突然的卡顿,怎么去及时的发现
  3. 如何优化DrawCall,如何优化Label(图文合并)
  4. DrawCall的理解
  5. 对象池是消耗CPU还是GPU
  6. 四元数的理解
  7. 有用过什么框架或者设计模式,说说你对MVC的理解,你在项目中是如何运用框架的
  8. 3D渲染流程
  9. 对于渲染中透明度测试,深度测试、模板测试、混合这几个概念和理解
  10. 会几个光照模型
  11. 齐次坐标的意义和原理,主要是为了解决什么问题
  12. 法线贴图是什么,漫反射
  13. 阴影的原理是什么
  14. 物理系统中的碰撞检测原理是什么,如果让你自己去实现碰撞检测,你会怎么做。

最后说点

有时候面试多了,也就麻木了,对于这些普遍性的问题,大多数是能够信手拈来的。但我想说的是,绝大部分面试官还是看你项目经验的,他会抓住你的做过的项目去寻根问底,探讨你在这个功能上是如何做的,这样做的原因是什么,好处是什么,缺点又是什么,这个地方的原理是什么,会一直深入挖掘你的上限。所有我觉得自己做过一些大型项目是绝对好的优势,如果没有大项目经验,可能连面试的机会都没有(我就经历过)。

在你还有精力的时候,在你还想在游戏开发中发展下去的时候,千万不要为了追求安逸去做小游戏,要做多人开发的游戏,大游戏,积累扎实的项目经验。这样你找工作选择的机会也多很多。

上一篇:Spring系列之JDBC对不同数据库异常如何抽象的?


下一篇:Unity3D 基础自学学习笔记(二) Unity3D 基础控件