IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 从类与结构体问起的Unity面试(杂乱无分类) -> 正文阅读

[游戏开发]从类与结构体问起的Unity面试(杂乱无分类)

Q1:结构体和类有什么区别?

  1. 最大的区别结构体是值类型,而类是引用类型

    这就造成了如下区别:

    1. 结构体是栈储存,类产生的对象由堆储存
    2. 结构体相对小访问效率高,类(对象)大访问效率低
    3. 结构体赋值为直接赋值,类(对象)的赋值是指针指向目标地址
    4. 结构体变量使用完自动解除内存分配,对象需要GC机制来保证内存回收
  2. 结构体只是一种包含了具体数据的包装,而类是反应现实的一种抽象,具有继承和多态特性

  3. 结构体中的字段不可以有初始值,结构体也不可以有无参构造函数且构造函数必须赋值所有字段。

Q2:你提到了值类型和引用类型,他们具体有哪些?有什么区别?

值类型包含:整形,浮点型,bool,枚举,null

引用类型包含:数组,类,接口,委托,string

他们的区别或特性:

  1. 值类型直接存储值,引用类型存储对其值的引用
  2. 值类型派生自ValueType,引用类型基类为Object
  3. 值类型声明后编译器为其分配内存,引用类型声明类的时候旨在栈上分配一个地址的内存,new 实例的时候分配堆上的空间,并把堆上的地址保存到栈上分配空间中。
  4. 值类型的实例通常都在栈上分配,作为引用类型的成员时,分配在堆中。引用类型的对象总是在堆中。
  5. 值类型不受GC控制,作用域结束由操作系统释放,引用类型的内存管理由GC完成。

Q3:那已经定义的值类型可以转化成引用类型吗?

可以,这就涉及到装箱拆箱操作。而且我们可以用泛型来优化避免这类操作:

https://blog.csdn.net/qq_39979037/article/details/99471105?spm=1001.2014.3001.5502

Q4:你提到了类具有继承和多态特性,这些特性怎么体现?

继承体现自子类对父类的继承,我们常常会用到抽象类作为一类事物的基类。多态体现在以父类实例化子类。

Q5:你提到了抽象类,之前还有提到接口,说说他们的特性和区别

抽象类是对事物的抽象,以abstract关键字创建,其中可以包含属性,抽象属性,抽象方法。不可撞见实例。类的继承只能是单继承。

接口时对行为的抽象,以interface关键字创建,其中只由方法定义,不可创建实例。可以多继承。

两者都可以创建子类实例。

Q6:你在引用类型中提到了委托,可以具体说一说吗?

把委托,事件,观察者模式全说了。

https://blog.csdn.net/qq_39979037/article/details/114647397?spm=1001.2014.3001.5501

Q7:前几问中我们不断的涉及到栈和堆,你对这两者的了解?

https://www.jb51.net/article/55306.htm

https://zhuanlan.zhihu.com/p/55003485

Q8:引用类型的内存管理由GC完成,那么C#的GC时怎么实现的?Mono的GC了解吗?Lua的GC呢?

  • C#:https://www.cnblogs.com/nele/p/5673215.html
  • Mono:https://www.jianshu.com/p/0284ca9a2257
  • https://zhuanlan.zhihu.com/p/265217138
  • Lua:https://www.runoob.com/lua/lua-garbage-collection.html

Q9:在说到内存堆时,你说内存堆的大小和虚拟内存有关。那么什么是虚拟内存?

  • https://blog.csdn.net/codehole_/article/details/100892107
  • https://blog.csdn.net/qq_39534402/article/details/108254417?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-10.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-10.control

Q10:你在内存分配中提到了进程,请讲一讲进程,线程,以及Unity的协程

  • https://blog.csdn.net/qq_39979037/article/details/100144239?spm=1001.2014.3001.5501

Q11:关于进程,进程之间如何通信?

  • https://blog.csdn.net/qq_19525389/article/details/81774622

Q12:你提到不同计算机的进程的通信可以通过socket,这是计算机网络的知识,请说一说计算机网络体系结构

  • https://www.cnblogs.com/inception6-lxc/p/9152691.html

Q13:应用层两个协议 HTTP 和 HTTPS ,简述他们的区别

  • https://www.cnblogs.com/wqhwe/p/5407468.html

Q14:传输层你提到了 TCP 和 UDP ,他们有什么区别和特性

  • https://blog.csdn.net/qq_39979037/article/details/94404263?spm=1001.2014.3001.5501

Q15:TCP协议的三次握手和四次挥手请简述

  • https://blog.csdn.net/qq_39979037/article/details/94405323?spm=1001.2014.3001.5501

Q16:Q8中我们提到了Mono,现在unity的打包还有il2cpp,替换后两者的底层实现有什么差异?

Q17:unity的AB的资源管理中,unload时参数为true和false有什么区别?

  • https://www.cnblogs.com/AaronBlogs/p/6837770.html
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-09-01 12:17:16  更:2021-09-01 12:17:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/11 22:58:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码