- Unity 面试篇⚠️ | 学好C#基础,上手编程事半功倍
-
-
- 1\. 面向对象的三大特点
- 2\. 简述值类型和[引用类型](https://so.csdn.net/so/search?q=%E5%BC%95%E7%94%A8%E7%B1%BB%E5%9E%8B&spm=1001.2101.3001.7020)
- 3.重载和重写的区别
- 4.C#中引用类型和值类型的基类是什么
- 5.请简述ArrayList和 List的主要区别
- 6.GC 相关知识点
- 7.结构体和类
- 8.C#中四种[访问修饰符](https://so.csdn.net/so/search?q=%E8%AE%BF%E9%97%AE%E4%BF%AE%E9%A5%B0%E7%AC%A6&spm=1001.2101.3001.7020)是哪些?各有什么区别?
- 9.修饰符 简述private,public,protected,internal的区别
- 10.堆和栈的区别\?
- 11.静态构造函数
- 12\. C# String类型比 stringBuilder 类型的优势是什么\?
- 13.C#函数 Func\(string a, string b\)用 Lambda 表达式怎么写\?
- 14.虚函数实现原理
- 15.指针和引用的区别
- 16.C#中有哪些常用的容器类,各有什么特点。
- 17.C#中常规容器和泛型容器有什么区别,哪种效率高?
- 18.有哪些常见的数值类?
- 19.泛型是什么
- 20.C#中unsafe关键字是用来做什么的?什么场合下使用?
- 21.C#中ref和out关键字有什么区别?
- 22\. For,foreach,Enumerator.MoveNext的使用,与内存消耗情况
- 23.foreach迭代器遍历和for循环遍历的区别
- 24.Foreach循环迭代时,若把其中的某个元素删除,程序报错,怎么找到那个元素?以及具体怎么处理这种情况?\(注:Try…Catch捕捉异常,发送信息不可行\)
- 25.JIT和AOT区别
- 26.给定一个存放参数的数组,重新排列数组
- 27.当需要频繁创建使用某个对象时,有什么好的程序设计方案来节省内存?
- 28.C#的委托是什么\?有何用处\?
- 29.C#中 委托和事件的区别
- 30.C#中委托 和 接口有什么区别?各用在什么场合?
- 31.接口Interface与抽象类
- 32.函数中多次使用string的+=处理,会产生大量内存垃圾(垃圾碎片),有什么好的方法可以解决。
- 33.C#和C++的区别\?
- 34.反射的实现原理?
- 35.C#中基本类型占用的字节数
- 36.Mock和Stub有何区别\?
- 37.简述StringBuilder和String的区别?(字符串处理)
- 38.字典Dictionary的内部实现原理
- 39.using的作用
- 40.Mathf.Round和Mathf.Clamp和Mathf.Lerp含义?
- 41.能用foreach遍历访问的对象需要实现\_\_\_接⼝或声明\_\_\_⽅法的类型(C#遍历)
- 42.什么是里氏替换原则?(C#多态)
- 43.想要在for循环中删除List(或者vector,都行)中的元素时,有可能出现什么问题,如何避免?
- 44.概述c#中代理和事件?
- 45.New的实现逻辑
- 46.请简述关键字Sealed用在类声明和函数声明时的作用
- 47.下列代码在运行中会发生什么问题?如何避免?
- 48.什么是装箱拆箱,怎样减少操作
- 49.MVC
- 50.非托管代码与不安全代码
- 51.Heap与Stack有何区别\?
- 52.栈溢出一般是由什么原因导致
- 53\. Stack栈和Queue队列
- 54.链表相关
- 55.链表与数组的对比
- 56.二叉树相关
- 57.字典相关
- 58.哈希表与字典对比
- 59.关于List与字典的遍历与查询效率
- 60.Stack底层如何实现的?
- 61.Dictionary与Hashtable的区别?
- 62.遮挡剔除原理?
- 63.接口与抽象类区别?
- 64.Const和ReadOnly的区别?
- 65.nt\?和int有什么区别\?
- 66.数制转换,将任意整数转换成8进制形式
- 67.找出200以内的素数。
- 68.打印杨辉三角形
- 69.中国有句俗话“三天打鱼两天晒网”,某人从2000年1月1日起开始“三天打鱼两天晒网”,问这个人在今后的某天中“打鱼”还是”晒网”
- 70.什么是面向对象,和面向过程的区别
- 71.五大基本原则
- 72.深拷贝和浅拷贝的区别
- 73.代码里检测文件是否存在,如果不存在,则创建文件时:
- 74.冒泡排序(手写代码)
- 75.在类的构造函数前加上static会报什么错\?
- 76.LinkedList是什么?优缺点是什么?用途是什么?
- 77.stack,Array,List,Queue,Hashset,Dictionary分别说明他们的特点,区别以及应用场景。
- 78.使用两个stack来实现一个Queue
- 79.位运算有哪些?举例说明用途?
- 80.装箱和拆箱的区别\?
- 81.string str = null 与 string str = “”,说明区别。
- 82.class和struct的异同
- 83.如何选择结构还是类。
- 84.c#解释代码编译\?
-
Unity 面试篇⚠️ | 学好C#基础,上手编程事半功倍
1. 面向对象的三大特点
- 封装(Encapsulatio):
- 封装是将对象的属性和方法结合成一个独立的单元,并尽可能隐藏对象的内部细节(即属性和方法的实现细节),只对外提供公共的访问方式。
- 通过封装,可以保护对象的状态信息不被外部随意修改,同时确保对象的操作得到正确的执行。
- 封装通常通过访问修饰符(如 public、private、protected)来实现,这些修饰符决定了类成员(属性和方法)的可见性和可访问性。
- 继承(Inheritance)
- 继承是面向对象编程中实现代码重用的一种重要手段。它允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法。
- 通过继承,子类可以重用父类的代码,同时添加或覆盖父类的属性和方法,以实现特殊化或扩展化的功能。
- 继承具有传递性,即子类可以继承父类的父类的属性和方法。
- 继承还可以实现接口继承,即子类实现父类定义的接口,从而遵循某种规范或约定。
- 多态(Polymorphism)&#