Q1:结构体和类有什么区别?
-
最大的区别结构体是值类型,而类是引用类型 这就造成了如下区别:
- 结构体是栈储存,类产生的对象由堆储存
- 结构体相对小访问效率高,类(对象)大访问效率低
- 结构体赋值为直接赋值,类(对象)的赋值是指针指向目标地址
- 结构体变量使用完自动解除内存分配,对象需要GC机制来保证内存回收
-
结构体只是一种包含了具体数据的包装,而类是反应现实的一种抽象,具有继承和多态特性 -
结构体中的字段不可以有初始值,结构体也不可以有无参构造函数且构造函数必须赋值所有字段。
Q2:你提到了值类型和引用类型,他们具体有哪些?有什么区别?
值类型包含:整形,浮点型,bool,枚举,null
引用类型包含:数组,类,接口,委托,string
他们的区别或特性:
- 值类型直接存储值,引用类型存储对其值的引用
- 值类型派生自ValueType,引用类型基类为Object
- 值类型声明后编译器为其分配内存,引用类型声明类的时候旨在栈上分配一个地址的内存,new 实例的时候分配堆上的空间,并把堆上的地址保存到栈上分配空间中。
- 值类型的实例通常都在栈上分配,作为引用类型的成员时,分配在堆中。引用类型的对象总是在堆中。
- 值类型不受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
|