限时删,腾讯、米哈游疯传的面试题!!!

本文汇总了腾讯、网易、米哈游等游戏公司常考面试题目,涉及C#基础知识、Lua编程、Unity3D光源、C#特性以及Lua面向对象原理等内容,旨在帮助求职者更好地应对春招面试,提升技能和求职竞争力。
摘要由CSDN通过智能技术生成

限时删,腾讯、米哈游疯传的面试题!!!

金三银四马上就要来了,针对近几年腾讯、网易、米哈游、莉莉丝等游戏大厂的面试题目,小编也是特意整理出了一些面试中常问的问题,涵盖了大厂面试真题 、 C#基础题 、 Lua面试题等。希望能帮助到那些即将面试的同学们,让大家轻松面对大厂的面试套路,拿到心仪offer。 建议同学们速速收藏!

点击领取游戏开发教程

Unity面试集锦

一. 大厂面试真题

1.MonoBehaviour的脚本生命周期介绍
请添加图片描述Awake:对象首次实例化后,仅会被调用一次

OnEnable: 对象每次被激活后调用

Start:仅会在第一次启用实例后的,第一帧更新前调用

FixedUpdate(物理Physics):固定更新频率,执行物理计算和更新。

Update:每帧调用,执行业务逻辑。

Update 函数返回后将执行协程更新。

协程的不同用法:

Yield null 下一帧继续执行当前协程

yield WaitForSeconds 在指定的时间(秒)后继续执行当前协程

yield WaitForFixedUpdate 等待下一次Fixed Update更新后继续当前协程

yield WWW 在 WWW 下载完成后继续当前协程

yield StartCoroutine(MyFunc) 将协程连接起来,并会等待 MyFunc 协程完成后,再执行当前协程。

LateUpdate:每一帧在Update调用完毕后,调用LateUpdate。LateUpdate常用用途是跟随第三人称摄像机,保证角色在Update中的移动和旋转,在LateUpdate中执行所有摄像机的移动和旋转计算。

OnDisable:对象每次被设置为非激活状态时,调用此函数。

OnDestroy:对象存在的最后一帧完成所有帧更新之后,调用此函数

OnApplicationQuit:当应用程序退出时,调用此函数。

2.纹理加载进内存以后占用内存如何计算?

纹理Texture加载进内存后,大小计算公式如下:

纹理内存大小(字节) = 纹理宽度 x 纹理高度 x 像素字节

像素字节 = 像素通道数(R/G/B/A) x 通道大小(1字节/半字节)

举例:比如一个1024 * 1204的RGBA 32bit的纹理占用多大内存?

占用总位数:allbits = 1024 * 1024 * (4*8bit)

占用总字节数:allbytes = allbits / 8bit

注:1个byte = 8bit

点击领取游戏开发教程

3.装箱和拆箱的区别
装箱:值类型转换成引用类型

装箱操作:托管堆分配内存,值类型拷贝数据,object地址指向托管堆对象。

拆箱:引用类型转换成值类型

拆箱操作:根据object引用地址找到托管堆上的数据,栈上数据拷贝。

避免装箱操作,可以采用重载或泛型来解决。

4.public、private、protected、internal、sealed的区别

public全局、private类内部、protected派生类、internal本程序集
sealed声明类就不能继承,声明方法就是不能被重写

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

接口是一种行为,抽象类是一种不能实例化的对象。

接口interface可以声明方法

抽象类abstract可以定义字段、静态字段和方法、抽象方法、属性、构造函数

接口可以继承多个接口,抽象类只能继承一个类

继承接口的类,必须实现所有接口;抽象类需要重写override抽象方法

接口和抽象都不能被实例化

抽象类可以派生自另一个抽象类,接口可以多重继承,抽象类只能单一继承。

6.Unity3d提供了几种光源? 分别是什么?
共4种,DirectionalLight、PointLight、SpotLight、AreaLight

7…Net和Mono的关系?

.Net只能运行在windows平台,而Mono的出现就是为了解决.Net无法跨平台的问题。Mono为.Net提供集成开发环境,集成并实现了.NET的编译器和基础类库,使得.Net既可以运行在windows也可以运行于 linux,Unix,Mac OS 等。

8.C#函数Func(string a,string b)用Lambda表达式怎么写?
‍Lambda表达式(任意参数)=> { 表达式} ;=> 读作goesto(a,b)=> { } ;

9.在类的函数构造前加上static会报什么错?为什么?

静态构造函数不允许添加访问修饰符,且必须无参数。

原因:无论创建多少类型的对象,静态构造函数只执行一次。类实例化或者首静态成员调用之前,运行库会先调用静态构造函数,静态构造函数优先级高于任何其它构造函数,也无法使用this和base来调用静态构造函数。一个类只能有一个静态函数,如果有静态变量,系统也会自动生成静态函数。

点击领取游戏开发教程

二 C#基础题

1.介绍一下C#的string和String Builder

string是不可变值,当通过string进行拼接时,将导致生成新的堆内存,从而产生GC;

而StringBuilder,内部维护了一个动态数组,只要不超过该数组大小,可复用。注:降GC的前提是,给定一个合理的容量大小,避免频繁resize。

2.C#中常规容器和泛性容器有什么区别?哪种效率更高?
常规容器有拆箱和装箱操作,速度慢,消耗性能;泛型容器效率更高,因为没有拆装箱的操作。

3.有哪些常见的值类型
数值类型(int/short/float/double等)、布尔、结构体、枚举

4.构造函数是否能被重写?
构造器Constructor不能被继承,因此不能重写,但可以被重载。

5.C#中委托和接口有什么区别?各用在什么场合?

委托delegate:Unity事件与委托密切相关,回调机制,减少对象之间数据交互。

接口interface:多人协作,完全抽象,类单继承。

委托是约束方法的集合,接口是约束类具备的功能集合,解决类单继承问题。

6.C#中unsafe关键字是用来做什么的?什么场合使用?
unsafe 非托管代码,配合fixed一起使用 ,用在需要指针操作的场合。项目背包系统的任务装备栏使用到。

三 Lua面试题

1.简述Lua实现面向对象的原理?

  1. 表table就是一个对象,对象具有了标识self,状态等相关操作

  2. 使用参数self表示方法的该接受者是对象本身,是面向对象的核心点,冒号操作符可以隐藏该self参数

  3. 类(Class):每个对象都有一个原型,原型(lua类体系)可以组织多个对象间共享行为

  4. setmetatable(A,{__index=B}) 把B设为A的原型

  5. 继承(Inheritance):Lua中类也是对象,可以从其他类(对象)中获取方法和没有的字段

  6. 继承特性:可以重新定义(修改实现)在基类继承的任意方法

2.Lua支持的数据类型

nil 表示无效值

number 整数

table 表

string 字符

userdata 用户自定义

function 函数

bool 布尔

thread线程

3.print(string.find(“hello hello”," hel"))的结果?
6 9

4.Lua中__index和__newindex有什么用?

__index主要用于table的查询;

__newindex主要用于table的更新

5.Lua如何调用C#
三种方式
第一种:官方不推荐
第二种:如果Resource文件下的Lua文件,使用Lua的Require函数即可
第三种:如果Lua文件是下载的,使用自定义Loader可满足

其实,面试不仅是求职中重要的一环,更是我们知识、技能、沟通等多方面得到全面锻炼的机会!

机会从来都是留给有准备的人。认真对待每一次面试,结束后用心去复盘,就算最后面试没有通过,我们也能从中有所收获。
请添加图片描述
如果你还在为春招发愁,请不要慌,扫码领取游戏开发游戏开发教程!!!
不仅有游戏行业深度解析,还可以自己动手做出游戏DEMO

点击领取游戏开发教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值