一些自己面试unity3D 程序员的面经

最近开始找工作,杭州上海到处跑,3天面了8家(累成狗),

这里只记录网上查到的各种常见unity面试题之外的问题,实际面试的时候面试官会根据你的简历和你的回答进行刨根问底。

 

首先,最重要的还是对底层以及架构的掌握程度。

 

一、功能相关,只能平时多问为什么,深挖底层,多积累。

热更原理,关卡剧情新手皮肤等编辑器,xlua底层,内存cpu性能优化,shader,ugui底层代码与性能优化,项目ui,网络,资源加载等架构如何设计云云。

主要还是根据简历来问的,难点在于对各个知识点的刨根问底,设计方案有没有考虑各种情况(例如编辑器如何实现策划与程序工作的解耦,编辑器如何处理预览功能与实际功能的关系,需求变更时如何应付)等等

底层都摸透才容易拿高薪,例如xlua,ugui的实现原理,一般都主程都要求了解unity的底层,此外的加分项:对显卡内存cpu等进行分析,分析得越透彻越好。

 

二、C#相关(推荐一本书《CLR via C#》基本上都能找到答案

·Dictionary 与 List>的区别是什么,什么时候适合用前者,什么时候用后者。

·struct是值类型,class是引用类型,struct中的引用类型与class中的值类型在内存中是如何分配的(自己写点代码试试就懂了)。

·使用struct与class互相传值在什么情况下会有装箱和拆箱。

 

三、unity相关(很多题目在常见面试题里面都见过了)

·FixedUpdate在低帧率的情况下如何执行的。

·为什么会FixedUpdate适合做物理运算,在Update中做物理运算会出现什么问题。

·二的幂次级图片是如何被压缩的

 

四、算法题,编程题(多去leetcode题库做题,会有很大提升)

算法题最大的难点不在于你能不能实现,在于你能不能使用最好的方法实现,排序类的题目能否用更低时间复杂度的代码来实现,具体时间复杂度是多少。

·各种向量题,最起码叉乘点乘熟练使用,例如计算物体在你左边还是右边多少度,高中数学不多说了。

·一个字符串中包含3种括号{} [] () 判断这个字符串是否符合语法规范,例如:"()({[]}([]))" true , "({)}" false , "([]" false,来不及写代码可以先写思路

https://leetcode-cn.com/problems/valid-parentheses/solution/you-xiao-de-gua-hao-by-leetcode-solution/

·一个二维数组表示的连连看游戏,0表示空,其他数字表示物体,写一个判断两个位置(x1,y1) (x2,y2)是否能连起来的代码。

·整数数组(有正有负)a0 a2 a3 a4 ... an求连续子数组的和为最大的区间

https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/solution/mian-shi-ti-42-lian-xu-zi-shu-zu-de-zui-da-he-do-2/

·a*算法怎么实现,有什么优化方法。

·用顶点着色器写个loge的流光shader

 

五、逻辑题

就一些奇奇怪怪的题,有点像脑经急转弯,一些大厂喜欢考,只能多做了,主要看临场发挥。

你可能感兴趣的:(untiy,面试,unity,unity3d)