我正好是面试官,所以现在就来回答一下吧。
一般来说,如果是非管理职位,Unity面试会分为两个级别。
如果你是毕业生或实习生,你将重点学习语言、操作系统、数据结构和算法的基础知识。 如果您正在面试一家海外公司,您还需要良好的英语口语能力。 在此基础上,你还将重点进行测试。 为了适应能力,经常会现场给你一道类似ACM的算法题,现场编码来解决。 这是对你心理承受能力、语言语法熟练程度、算法积累水平、适应能力的极大考验。 这个级别的面试需要花费大量的时间和精力去准备,并且需要在学校打下良好的基础。
如果是非研究生,已经有研发经验的同学会重点关注Unity自身的技能和对引擎的理解,一般会从实际问题开始。 如果您是学生,他们会专注于问您的问题。 语言的掌握程度,这往往需要举例,你对目前已有的框架、正在设计或实现的系统、里面的关键、难点技术的理解,以及这些关键、难点问题的技术指标,你的理解,然后如何解决它们。 这是唯一的解决方案吗? 还有更好的吗? 有时会辅以现场编码和设计回答具体问题来判断你的编码能力。 这个级别往往涉及到网络基础知识和实践技能,包括你是否遇到过网络延迟以及如何优化? 各种多线程锁的设计。 你在使用Unity的动画系统时有没有遇到过什么非常棘手的问题? 您设计过编辑器工具吗? 如何设计呢? 是的,你遇到过什么困难吗? 如果是游戏,会问你是否对卡点进行了优化,然后会要求你举例,然后说明解决思路,最后提炼出该类问题的大致解决思路。 这其实包括经验和语言基础,比如GC。 还会问你这方面的原理、物理系统,甚至包括资源生成到使用过程、内存管理等等,这些都需要具体的实际案例来说明。
对于引擎开发,重点将是可重用性。 这套工具链或者模块,或者定制项,具体解决什么问题,难点是什么,解决方案的性能如何,是否有更好的解决方案。 这条路径本质上是考验你知识的广度和深度,包括你对其他引擎的理解,以及你对当前引擎的掌握和修改能力。 如果你回答说你用Unity做了一款大世界手游,就会被问到技术难点、解决方案、技术细节。 不局限于特定的模块,而是经常涉及到场景管理、资源加载(流式加载),其中会包括资源内存管理及优化方案、渲染(灯光)方案、地形渲染性能效率、物理系统性能优化管理方案、网络同步解决方案等,这些都需要根据实际实践经验不断总结和完善。 只有从下到上组织依赖路径,我们才能非常轻松地回答这些问题。
总而言之,如果您是有一定Unity实践能力的同学,可以尝试回答您在项目或实践中的角色,是“团队”还是“个人”,做过什么,有没有遇到任何困难或具有挑战性的问题。 怎么解决的? 我们看看同行业有没有解决方案的先例。 如果是,请详细说明您是如何与同行业的解决方案进行比较的。 一般来说,你需要列出3-5项来具体描述你的知识和技能水平。
希望能帮助到你。
还没有评论,来说两句吧...