unity c#面试_spring面试题及答案

unity c#面试_spring面试题及答案无论是不是C#或者Unity开发者,均可用以下题型锻炼,面试教育你懂的需要注意的是下面都只是个人乱答,想看标准答案的可滚动到最后下载1.请简述值类型与引用类型的区别我是想简述下为什么第一个问题总是这个,因为所有出题的面试官都不走心的,实际项目肯定是引用类型+值类型混用,难道你没写过?intcurrLevel=Game.Instance.LevelCount;值类型包括:数值类型,结构体,b…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

unity c#面试_spring面试题及答案

无论是不是C#或者Unity开发者,均可用以下题型锻炼,面试教育你懂的

需要注意的是下面都只是个人乱答,想看标准答案的可滚动到最后下载

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

我是想简述下为什么第一个问题总是这个,因为所有出题的面试官都不走心的,
实际项目肯定是引用类型+值类型混用,难道你没写过? int currLevel =Game.Instance.LevelCount;
值类型包括:数值类型,结构体,bool型,用户定义的结构体,枚举,可空类型。
引用类型包括:数组,用户定义的类、接口、委托,object,字符串,null类型,类。
2.C#中所有引用类型的基类是什么
C#基类Object 包名System
3.请简述ArrayList和List<Int>的主要区别
Unity3d游戏开发过程中很少见ArrayList,都是用的List<>和[]多,
ArrayList这是老C#人才会用的变量,也可能是从JAVA借鉴过来,JAVA有Hashset做数组变量,
哥一开始学C#1.0对ArrayList的框架很不能理解,ArrayList继承List觉得很多余的?
还有问这个问题的百度一查大把,真心没几个能从历史,当前流行项目,未来趋势等各个方面分析出原因,不过分析出来也没什么乱用,面试官出题的能不能别那么懒?
ArrayList 是一个数组,继承实现了List基类,是比较传统使用的程序数组变量
List<int>是调用List<T>,用了C#的泛型特性
4.请简述GC(垃圾回收)产生的原因,并描述如何避免?
下面是标准答案,其实我倒想问问,你写游戏用String??还用到StringBuilder??
CLR:公共运行时环境,管理托管堆。
CTR:设置引用类型,值类型。
GC:只负责回收托管对象,不负责回收非托管对象。

避免:1)减少new产生对象的次数
2)使用公用的对象(静态成员)
3)将String换为StringBuilder
5.请描述Interface与抽象类之间的不同
抽象类表示该类已经有一些具体的实现,而接口只是定义各方法,并没有具提实现,子类继承抽象父类,可以只是继承部分方法或直接引用父类的方法。类实现接口必须实现该接口所有方法
6.下列代码在运行中会产生几个临时对象?
 
先不论代码书写是否有错,或者命名的,每个new都会产生临时对象,()括号等同于new,那么应该是6
*假如我问面试官,这2年要如何优化,他不看标准答案,能答出来吗?(其实你的思路可能比他还清晰,因为他工作多年,几年来都不会见到这种代码,那他为什么要出这个题?别为难面试官,人家从百度抄题目下来也是不容易的)
7.下列代码在运行中会发生什么问题?如何避免?
 
答:会产生运行时错误,因为foreach是只读的。不能一边遍历一边修改。
8.请简述关键字Sealed用在类声明和函数声明时的作用
答:类声明时可防止其他类继承此类,在方法中声明则可防止派生类重写此方法。
关键字Seal既然可以声明类,也可以声明方法
9.请简述private,public,protected,internal的区别
10.反射的实现原理?
(以下英文纯手打,无百度)
Assembly – 程序集
Class – 类(type)
Method –方法(methodinfo)
Property – 属性(proinfo)
但是我好像不知道反射原理是什么, 有一个方法是Invoke(“Function_name”)在Unity3d的部分游戏源码见得比较多,作用和普通Call方法一样,虽然有些炫技,但是却是在用反射实现一些游戏逻辑,而且这个游戏逻辑在Android|IOS等平台也是运行正常,反射的作用主要是跨程序集调用,作为一个基本抽象思维的程序员,应该要理解跨当前运行时的程序集本身当然也一个程序集,C#反射能广泛应用,并且出错几乎是0的原因,应该就是C#程序集的开放,格式不变和不加密(微软本身反而不支持开源)
11,.Net与Mono的关系?
有人说.net只能在 windows上面跑,Mono能跨平台,是.net的扩展,这说法肯定是不正确的,C#(.Net)自诞生那天起就为了超越JAVA(应该黑丝2003年,.NET一出就硬抄了JAVA所有的特性,还强调所有新特性超越JAVA),C#的GC就是对应JAVA的垃圾回收机制,可惜的是长期以来C# Framework的体积比现在2018年的JVM虚拟机jre8还大
JVM是一次书写代码,所有平台通用
那么C# Framework(.Net)肯定也是支持跨平台
嗯,MONO是?官方一大段英文其实只要看最后2个就知道based on the ECMA standards
ECMA是什么鬼?你现在只要知道来自欧洲的标准就可以了
由于微软的不开源,加上.NET的体积比较大,所以开源程序员都希望找到一种可以用C#或者其他书写,却是极度简化版的.NET,结果当年欧洲某小国某程序员秘密组织找到了微软的内核CIL(Common Intermediate Language通用中间语言,也叫做MSIL微软中间语言)的一种代码指令集,CIL可以在任何支持CLI(Common Language Infrastructure,通用语言基础结构)的环境中运行
(微软一开始心比较大,目标是所有语言书写,在所有平台书运行,开发web,app等所有应用,都通过visual studio,结果被Google和乔布斯打的头低低,Google在语言性和跨平台功能一直强调领先,乔布斯主张程序即艺术,iphone1,2狠狠打了Bill Gate2下,国内的c#程序员一直以来是最低下收入的一种程序员)
当时欧洲小国的程序员,优化了CLI并做出了MonoDeveloper这个IDE工具,后来他们成立了一个Xamarim公司,现在已经被微软收购,开源的MONO也没有继续下去
Unity现在应该是基于ECMA这个协议才能得以继续使用旧版本的开源MONO而不需要和微软杠上
最近中兴被美国状告事件,类比一下MONO和微软的关系你就懂了,政治在这里不能多说,我就不提了,但学习程序以外难道你学校就没有政治课?难道你志愿不是考公务员报效国家?你不理政治,政治会来修理你。
我的推论是,mono是一种中间语言,而内核还是.net的一个简化版的虚拟机,能跨平台运行,这个虚拟机类似于jvm虚拟机,提供各种框架,API和程序执行和调用功能,但明显支持的最强语言还是C#
12.简述Unity3D支持的作为脚本的语言的名称
C#
JS
Boo – 这个我也不清楚
13.Unity3D是否支持写成多线程程序?如果支持的话需要注意什么?
Unity仅提供携程,让你可以安心订机票
14.Unity3D的协程和C#线程之间的区别是什么?
线程不安全
同一个时刻只有一个coroutinue运行,但线程可以并行执行,所谓多线程。而coroutinue可以让出当前执行权限,让其他coroutinue插队执行
golang里面是goroutinue
lua里面也是携程,可以订机票
Python既提供携程,也提供现成
理论上来说:
携程在服务器开发过程中比较合适,golang这种专为服务器开发的语言就提供携程让你可以预定景点门票;
线程真的很不稳定,不安全,不同的系统,例如windows vs Mac , windos vs Linux, Linux vs Unix都是实现不同的,程序员甚至需要按不同系统平台分别处理和调试;
要是你用的好,线程能订机票,而携程能做出线程的花样
15.U3D中用于记录节点空间几何信息的组件名称,及其父类名称
Transform, 父类Component
16.简述四元数的作用,四元数对欧拉角的优点?
交通大学研究生,乐乐姐的文章必须要去看一下
1)增量旋转
2)避免万向锁
3)给定方位的表达式有2种,互为正负(欧拉角有多种)
17.向量的点乘、叉乘以及归一化的意义?
1)点乘描述了2个方向的相似程度
2) 叉乘得到垂直于这2个的向量的一个向量
3)标准化向量,在一些方向,角度求解中应用,只关心相互间的方位,不考虑长度
18.矩阵相乘的意义及注意点
意义在于向量的变换,旋转,投影,平移
左乘和右乘,不满足交换律(这个答法比较高校书本式,缺少经验的说法)
19.为何大家都在移动设备上寻求U3D原生GUI的替代方案
这是Unity3.5的问题?现在Unity2018都快出了,你还问,面试官你到底有几年Unity经验?
20.请简述如何在不同分辨率下保持UI的一致性
UI适配,如果你曾经很长一段时间用过flex,和cocos2dx,甚至需要你自己去写适配框架
一般的方法有,布局适配,等宽,等长,这几种方法
NGUI在UIRoot提供了这3种适配方法
21.为什么dynamic font在unicode环境下优于static font
使用动态字体时,Unity将不会预先生成一个与所有字体的字符纹理, 静态字体体积会很大
22.Render的作用?描述MeshRender和SkinnedMeshRender的关系与不同
Render就是对象在3D世界的绘制
SkinnedMeshRender都提示未来可能被放弃了,面试官这份题真的很旧了,拜托换一下,但SkinnedMeshREnder在换装插件比较流行,SkinnedMeshRenderer需要骨骼、材质、Mesh才能发挥作用,难道Unity要放弃骨骼??
23.简述SkinnedMesh的实现原理
根据骨骼,动态整体实现表层Mesh,相对普通mesh由不同面片堆砌,根据骨骼结构,对顶点的变换计算出不同的蒙皮,最终进行模型的渲染
24.在场景中放置多个Camera并同时处于活动状态会发生什么?
受Camera覆盖各场景物件均同时实时绘制,主Camera视场里有多个Camera的渲染合集
25.Prefab的作用?如何在移动环境的设备下恰当地使用它?
Prefab在实例化的时候用到,主要用于经常会用到的物体做成一个集合方便反复使用,在移动环境中,由于Prefab一般体积比较大,常需要实例化,拆分成合适大小的AssetBundle,离线下载比较恰当
26.如何销毁一个UnityEngine.Object及其子类
Destory
如果是Editor自定义开发需要用DestoryImmediate
27.为什么Unity3D中会发生在组件上出现数据丢失的情况?
对象在Editor外部被删除或者移动位置
28.如何安全的在不同工程间安全地迁移asset数据?三种方法
将Assets目录和Library目录一起迁移
导出包
用unity自带的assets Server功能
29.MeshCollider和其他Collider的一个主要不同点?
答:Meshcollider再快也是基于V3顶点~~ 建议还是用boxcollider,boxcollider本身是基于算法,没有面的概念。
30.当一个细小的高速物体撞向另一个较大的物体时,会出现什么情况?如何避免?
可能出现碰撞检测失败,解决方法无外乎3个
增加高速物体体积
碰撞检测判断时间缩短(Physics.SimulationStep)
控制速度
31.OnEnable、Awake、Start运行时的发生顺序?哪些可能在同一个对象周期中反复的发生?

OnEnable
\
Awake
\
Start
反复发生的是Start,这个问题实际意义不大,好像只有DontdestoryOnload下面的对象会反复调用,但实情如何笔者表示怀疑

谢谢评论区指正,

反复发生的应该是:OnEnable,尽量不要在Update()写代码,所以我现在OnEnable也用的少,毕竟会多次触发的,代码最好还是一次写成,少调试,少踩坑(当然,OnEnable 一般写初始化代码,机会没在这上面踩坑过就是了)

gameObject.SetActive(true);//运行时可反复设置

而Awake()是在实例化时触发,不可能实例化多次

GameObject.Instatiate()

而Start()在场景运行时,场景内的每个对象都只会触发一次

SceeneManager.Start()

32.请简述OnBecameVisible及OnBecameInvisible的发生时机,以及这一对回调函数的意义?
答:当物体是否可见切换之时。可以用于只需要在物体可见时才进行的计算。
33.Unity3D如何获知场景中需要加载的数据?
Resource.Load
AssetBundle
34.MeshRender中material和sharedmaterial的区别?
修改sharedMaterial将改变所有物体使用这个材质的外观,并且也改变储存在工程里的材质设置。
不推荐修改由sharedMaterial返回的材质。如果你想修改渲染器的材质,使用material替代。

(在Editor自定开发中,只能用sharedMaterial,sharedMaterial自动等于material)

最近机缘巧合,居然在看Unity Editor的旧版本的源码

内核用了c++的智能指针,里面的一个share指针,shared_ptr<>,所以有sharedMaterial一说

还有sharedMesh,sharedShader

指针不就是内存,指向同一内存的还不是一同修改,shared_ptr<>又有什么用?又一世纪难题

对于面试教育,如果你记性比较好还是比较有优势的,可当你记住所有标准,又有什么用呢?

当然记住总比记不住要好,记住好像是要有那么点优势,人生和职业生涯其实大家都差不了多少,这点笔者就不在这里展开说

这是电视机电路

unity c#面试_spring面试题及答案

这是手机电路

unity c#面试_spring面试题及答案

或者里面每个晶体管,每个放大器,电容你都能看懂,但你能做个手机吗?就算你能做手机,美国会给你CPU你做手机吗?所以关键是环境,和你努力与否真没什么关系

标准答案下载:

Unity面试题30题含答案——C#基础._unity面试题,unity试题-Unity3D文档类资源-CSDN下载

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/174519.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 清除挖矿脚本 minerd[通俗易懂]

    清除挖矿脚本 minerd[通俗易懂]症状:cup占用率飙高原因:这次入侵是由于redis没有设置用户名密码,没有限制访问ip导致 解决方法:ps-eopcpu,args–sort=%cpu|head  找到飙高的程序是minerdTOP查看minerd的pidkill-s9pid(pid的值每个服务器不同)rm-rf /var/spool/cron/cronta

  • 没有人不为真情所动,你若不流泪,我请你吃饭。[通俗易懂]

    没有人不为真情所动,你若不流泪,我请你吃饭。[通俗易懂]我是哭了好几场啊,难道我神经脆弱?告诉我你哭了几场,我脸都洗不过来啊。不是我不懂爱情,没有爱心,不相信真情,确是这世界忙碌得很,谁与我共行?科学探索:英国一位农夫在自家花园内发现了三只瑟瑟发抖的小狐狸,于是给了它们一个毛绒玩具。没想到小家伙们把它当做了自己的妈妈,不但和它形影不离,吃饭的时候还会留下部分食物,把盆子推到它跟前好友爱的一幕!给饿了的小北极熊食物。在蛮荒之地,气候恶劣。食物不足时,白熊…

  • 高并发的解决方案「建议收藏」

    高并发的解决方案「建议收藏」1.应用和静态资源分离刚开始的时候应用和静态资源是保存在一起的,当并发量达到一定程度的时候就需要将静态资源保存到专门的服务器中,静态资源主要包括图片、视频、js、css和一些资源文件等,这些文件因为没有状态所以分离比较简单,直接存放到响应的服务器就可以了,一般会使用专门的域名去访问。通过不同的域名可以让浏览器直接访问资源服务器而不需要再访问应用服务器了。架构图如下:2.页面缓存

  • Activiti初学者教程

    Activiti初学者教程http://wenku.baidu.com/view/bb7364ad4693daef5ff73d32.html1.初识Activiti1.1.工作流与工作流引擎工作流(workflow)

  • 计算机用户名和密码怎么查_计算机名在哪看

    计算机用户名和密码怎么查_计算机名在哪看有时外人随意使用翻看办公电脑的问题,特别是当电脑里面存储了一些保密文件的时候,是不能随便让人看的,所以小设置电脑开机密码是有发要的。下面是学习小编给大家整理的有关介绍windowsxp电脑设置、修改开机密码的方法,希望对大家有帮助!windowsxp电脑设置、修改开机密码的方法首先,点击【开始】菜单,然后选择”控制面板“选项。在控制面板的对话框中找到”用户账户“选项,并点击进入。在用户账户对话…

    2022年10月14日
  • Winform 界面 美化 界面库

    Winform 界面 美化 界面库官网[url=http://www.gotrance.com][/url][img=http://img.bbs.csdn.net/upload/201502/07/1423310141_531797.jpg][/img][img=http://img.bbs.csdn.net/upload/201502/07/1423310172_452400.jpg][/im

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号