本文献给,想踏入3d游戏客户端开发的初学者。

毕业2年,去年开始9月开始转作手机游戏开发,从那时开始到现在一共面的游戏公司12家,其中知名的包括搜狐畅游、掌趣科技、蓝港在线、玩蟹科技、天神互动、乐元素。开始做虚幻3游戏程序开发,现在转作unity3d。面试了12家公司大概总结一下面试的常考方向(以下排名不分先后,红色是需要着重了解的,但不仅限于此,如果有错,望指正)。

1、面试方式:所有面试,只有3家有面试题,蓝港是其中之一,题量2-4页不等;其他都是1对1,2对1,或者3对1直接面试;主要考C#、unity基础,大公司问的不难,但问得深,基础必须扎实。

2、3D图形学、渲染:渲染管道流程、3D渲染优化,延迟渲染、Shader编程。

3、数学、数据结构:二维矩阵、三维矩阵相乘、转置;向量点乘和叉乘方法和意义;四元数、欧拉数;二叉树、堆栈;线性表、链表。

4、unity3d:熟悉NGUI(原理机制);物理引擎;DrawCall优化;AI、自动寻路;做unity3d遇到的坑(unity吭特多,只有亲手做过才知道),协同程序,动画系统;光照烘培;Trigger; 异步加载(AssetBundle.LoadAsync)。多看API(用户手册、组件手册、脚本手册)

 

5、C#语言:Event和委托;抽象类和接口;垃圾回收器,多线程。

6、英语能力:外语文档阅读能力顺畅,因为很多时候要去国外网站了解新技术,所以这个是做的好的关键。面试的时候,也会给你一篇英文技术文档给你翻译。

7、思想:MVC思想、代码耦合性;代码编写风格(代码头部注释、方法注释);爱玩的游戏以及对它的评价(缺点,怎么改进更好);如果让你设计一个MMO,你应该怎么做等。

下面举几个面试的具体例子:

1、一个物体,它顶上有个摄像机,摄像机离他越来越远,最后让物体消失(不是隐藏它)。

2、鼠标点击一个物体,然后屏幕上显示他的坐标和名称信息。

3、TCP/UDP区别

参看面试题:

http://www.cnblogs.com/zhibolife/p/3680621.html

http://www.cnblogs.com/zhibolife/p/3624916.html

其他参考资料:

NGUI机制:http://www.cnblogs.com/zhibolife/p/3642000.html

网上找到一张unity3d知识体系大纲图,可以对照着学习,有利于形成思维体系。

蓝港在线面试Unity3D的笔试题。难吗?知道答案的在评论里写出来分享

 

前一阵子去蓝港面试unity3d程序,在前台登记以后被领到一个吧台前面填2张个人信息表,之后有人送来笔试题,做了1个小时,感觉挺难的。之后被带到下面面试,面试的是一个年龄稍大的(可能是项目经理或者技术总监),和另一个较为年轻的unity主程,人都比较随和,面试过程没有感觉压抑,想说什么就说什么。除了问一些技术问题,就是下面面试题的一个拓展,还问了有没有玩过蓝港的游戏,看我的手机是windowsphone的,就问了我之前有没有把自己做的东西发布到自己wp手机上。虽然自己技术还很欠缺,但是去蓝港面试一回还是很有收获的。下面是这次的笔试题,拿出来分享,希望大家遇到自己会的能把答案在评论里贴出来,和大家一起分享探讨

1、请简述值类型与引用类型的区别。

值类型传递的是值本身,引用类型传递的是地址。

2、C#中所有引用类型的基类是什么?

object

3、请简述ArrayList和List<int>之间的主要区别。

  LIST是接口类,ArrayList类实现了这个接口,可以这样用:List a=new ArrayList();

4、请简述GC(垃圾收集)产生的原因,并描述如何避免。

      GC一般是回收在堆上的内存,所以一般new的话 只new在栈上就好了 ,适当的做些objectpool,也会减轻gc的压力。

5、请描述interface和抽象类之间的不同。

网上很多

6、下列代码在运行中,会产生几个临时对象?

1
2
string a=new string(“abc”);
a=(a.ToUpperCase()+“123”).SubString(0,2);

  

7、下列代码在运行中会发生什么问题?如何避免?

1
2
3
4
5
6
List<int> Is=new List<int>(new int[]{1,2,3,4,5});
foreach(int in Is)
{
Debug.Log(n*n);
Is.Remove(n);
}

 foreach会产生大量临时对象 直接 Is.Clear()多好

  8、请简述sealed关键字用在类声明时与函数声明时的作用。

   作为类别的时候 不能有子类 作为函数的修饰符的时候 在子类里不能重写函数

9、请简述private,public,protected,internal的区别。

private:私有成员,在类的内部才可以访问。

public:公共成员,完全公开,没有访问限制。

protected:保护成员,该类内部和继承中可以访问。

internal:当前程序集内可以访问。

10、请简述反射的实现原理。

11、请简述.Net与Mono之间的关系。

  mono是.net的一个工具,.net只能在windows平台下跑,mono可以跨平台,可以运行于Linux,FreeBSD,Unix,OS X和Solaris

12、请简述Unity3D支持的3种脚本语言的名称。

  C#、JS、BOO

13、Unity3D是否支持写成多线程程序?如果支持的话要注意什么?

支持:如果同时你要处理很多事情或者与Unity的对象互动小可以用thread,否则使用coroutine。

注意:C#中有lock这个关键字,以确保只有一个线程可以在特定时间内访问特定的对象

14、Unity3D中的协程(coroutine)和C#线程之间的区别是什么?

Unity3d没有多线程的概念,不过unity也给我们提供了StartCoroutine(协同程序)和LoadLevelAsync(异步加载关卡)后台加载场景的方法。 StartCoroutine为什么叫协同程序呢,所谓协同,就是当你在StartCoroutine的函数体里处理一段代码时,利用yield语句等待执行结果,这期间不影响主程序的继续执行,可以协同工作。而LoadLevelAsync则允许你在后台加载新资源和场景,所以再利用协同,你就可以前台用loading条或动画提示玩家游戏未卡死,同时后台协同处理加载的事宜asynchronous[e ɪˈ s ɪŋ kr ə n ə s] .synchronous同步。

15、请说出Unity3D中勇于记录节点空间几何信息的组件名称,及其父类名称。

transform,父类component 

16、请简述四元数的作用以及四元数相对欧拉角的优点。

17、请简述向量的点乘,向量的叉乘以及向量归一化的意义。

18、请简述矩阵相乘的意义以及注意点。

19、请简述为何大家都在移动设备上寻求Unity3D的原生GUI系统的替代方案。

20、请简述如何在不同分辨率下保持UI的一致性。

21、请简述为什么dynamic font在unicode环境下优于static font。

22、请简述Renderer的作用,并描述MeshRenderer与SkinnedMeshRenderer之间的关系 
与不同。

23、请简述SkinnedMesh的实现原理。

24、在场景中Prefab的作用,并描述如何在移动设备环境下恰当的使用它。

26、如何销毁一个UnityEngine.Object及其子类。

27、请简述为什么Unity3D中会发生在组建上出现数据丢失的情况(missing)。

28、请简述Unity3D下如何安全的在不同工程间迁移asset数据,请举出三种方法。

    1.可以把assets目录和Library目录一起迁移

    2.导出包

    3.用Unity带的assets Server功能 

29、请简述MeshCollider和其他Collider的一个主要不同点。

30、当一个细小的高速运动的物体(如子弹)撞向另一个较大的物体时,可能出现什么 
情况?如何避免?

31、请简述OnEnable,Aawake和Start在运行时的发生顺序。哪些可能在同一个对象的生 
命期中发生。

32、请简述OnBecameVisible及OnBecameInvisible的发生时机,以及这一对回调方法的 
意义。

  当renderer(渲染器)在任何相机上都不可见时调用:OnBecameInvisible 

  当renderer(渲染器)在任何相机上可见时调用:OnBecameVisible

33、请简述Unity3D如何获知场景中需要加载的数据。

34、请简述MeshRenderer中material和sharedmaterial的区别。

认认真真一字一句看到这里,点“推荐”、评论的都能找到一份满意的高薪unity3d工作。*^◎^*

[转]unity3d所要知道的基础知识体系大纲,可以对照着学习,不定期更新 ... ... ... ...的更多相关文章

  1. unity3d所要知道的基础知识体系大纲,可以对照着学习,不定期更新

    本文献给,想踏入3D游戏客户端开发的初学者. 毕业2年,去年开始9月开始转作手机游戏开发,从那时开始到现在一共面的游戏公司12家,其中知名的包括搜狐畅游.掌趣科技.蓝港在线.玩蟹科技.天神互动.乐元素 ...

  2. (转载)Unity3D所要知道的基础知识体系大纲,可以对照着学习,不定期更新

    本文献给,想踏入3D游戏客户端开发的初学者. 毕业2年,去年开始9月开始转作手机游戏开发,从那时开始到现在一共面的游戏公司12家,其中知名的包括搜狐畅游.掌趣科技.蓝港在线.玩蟹科技.天神互动.乐元素 ...

  3. Java学习知识体系大纲梳理

    感悟 很奇怪,我怎么会想着写这么一篇博客——Java语言的学习体系,这不是大学就已经学过的课程嘛.博主系计算机科班毕业,大学的时候没少捧着Java教程来学习,不管是为了学习编程还是为了期末考个高分,都 ...

  4. CISP-PTE注册信息安全专业人员渗透测试工程师知识体系大纲

    CISP-PTE注册信息安全专业人员渗透测试工程师知识体系大纲 都是图.. 不足之处,欢迎补充

  5. 【转载】JavaScript基础知识体系

    前言 最近总是有一种感觉,对于知识没有积淀,很多时候都是忘记了哪里就去查一下,比如JS这种语言,很是浪费时间,如果能够把这些知识形成知识体系塞进大脑,做到即用即取就好了,那么就可以借助思维导图来帮助我 ...

  6. 深度学习FPGA实现基础知识10(Deep Learning(深度学习)卷积神经网络(Convolutional Neural Network,CNN))

    需求说明:深度学习FPGA实现知识储备 来自:http://blog.csdn.net/stdcoutzyx/article/details/41596663 说明:图文并茂,言简意赅. 自今年七月份 ...

  7. 基础知识《四》---Java多线程学习总结

    本文转载自51cto 一.线程的基本概念简单的说:线程就是一个程序里不同的执行路径,在同一个时间点上cpu只会有一个线程在执行,Java里的多线程是通过java.lang.Thread类来实现的,每个 ...

  8. java基础知识回顾之java Thread类学习(十二)-- 线程中断

    官方文档翻译: 如果本线程是处于阻塞状态:调用线程的wait(), wait(long)或wait(long, int)会让它进入等待(阻塞)状态,或者调用线程的join(), join(long), ...

  9. java基础知识回顾之java Thread类学习(十一)--join方法的理解

    以下面例子说明下面的源码:main 线程 和 A线程,A线程是main线程创建并且启动的,main线程优先级比较高,正在执行:这个时候main线程调用A.join()之后,main线程一直等待,直到A ...

随机推荐

  1. XPath注入技术综述

    一次完整的 XPath 注入攻击应该包括使用特殊构造的查询来提取一个 XML 数据库内的 数据或者信息.作为一门新的技术,XPath 注入在一定程度上和 SQL 注入漏洞有着惊人的相 似之处,通过下面 ...

  2. 自建Saltstack的repo软件源仓库

    因为Saltstack自己的repo源是在国外,在国内服务器yum安装Saltstack的时候下载软件包就非常慢,很多情况下还经常下载失败,其实软件包总大小只有10M左右,如果这样安装多台minion ...

  3. gcc static静态编译选项提示错误:/usr/lib/ld:cannot find -lc

    在学习gcc静态库动态库编译的时候选用静态库编译时出错显示:/usr/lib/ld:cannot find -lc 百度:/usr/lib/ld:cannot find -lc多处给的解决方案为: 然 ...

  4. Android画图系列(二)——自己定义View绘制基本图形

    这个系列主要是介绍下Android自己定义View和Android画图机制.自己能力有限.假设在介绍过程中有什么错误.欢迎指正 前言 在上一篇Android画图系列(一)--自己定义View基础中我们 ...

  5. poj_1284_原根

    一開始看题的时候第一想法就是暴力,可是无奈数据量有点大,看了题解之后才知道原来牵扯到数论上的一个叫做原根的东西,这个题的题意就是,给你一个奇素数,问题他的原根有多少.依据初等数论上所说,此时牵扯到了三 ...

  6. FastGUI for NGUI教程

    原地址:http://blog.csdn.net/asd237241291/article/details/8499430 FastGUI是NGUI的一个扩展,所以必须要有NGUI才能使用.FastG ...

  7. JavaScript逻辑运算符(操作数运算符)

    1.概述 ||(或)和&&(与)都是逻辑运算符.但是或/与叫“逻辑运算符”不太合适,叫“操作数运算符”更合适! 因为||(或)和&&(与)返回的不是布尔值,而是两个操作 ...

  8. openerp编辑与非编辑下隐藏按钮的方法

    在form表单中,有些控件希望在编辑的时候显示,非编辑时不显示,如hr模块的员工表单,在非编辑模式中,姓名的title不显示,而在编辑模式中显示出来.我们可以在xml文件中给控件赋属性值,class= ...

  9. iOS开发-Swift获取手机设备信息(UIDevice)

    使用UiDevice获取设备信息 获取设备名称 let name = UIDevice.currentDevice().name 获取设备系统名称 let systemName = UIDevice. ...

  10. rabbitmqctl 报错

    RabbitMQ 安装成功后,cmd dos命令进入RabbitMQ的安装路径,如 E:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.10\sb ...