阅读量:0
目录
- 1. 面向对象的三大特点
- 2. 简述值类型和引用类型
- 3.重载和重写的区别
- 4.C#中引用类型和值类型的基类是什么
- 5.请简述ArrayList和 List的主要区别
- 6.GC 相关知识点
- 7.结构体和类
- 8.C#中四种访问修饰符是哪些?各有什么区别?
- 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#解释代码编译?
1. 面向对象的三大特点
- 封装(Encapsulatio):
- 封装是将对象的属性和方法结合成一个独立的单元,并尽可能隐藏对象的内部细节(即属性和方法的实现细节),只对外提供公共的访问方式。
- 通过封装,可以保护对象的状态信息不被外部随意修改,同时确保对象的操作得到正确的执行。
- 封装通常通过访问修饰符(如 public、private、protected)来实现,这些修饰符决定了类成员(属性和方法)的可见性和可访问性。
- 继承(Inheritance)
- 继承是面向对象编程中实现代码重用的一种重要手段。它允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法。
- 通过继承,子类可以重用父类的代码,同时添加或覆盖父类的属性和方法,以实现特殊化或扩展化的功能。
- 继承具有传递性,即子类可以继承父类的父类的属性和方法。
- 继承还可以实现接口继承,即子类实现父类定义的接口,从而遵循某种规范或约定。
- 多态(Polymorphism):
- 多态是面向对象编程中一种重要的特性,它允许不同的对象对同一消息作出不同的响应。
- 多态的实现通常依赖于继承和接口。在运行时,根据对象的实际类型来调用相应的方法,从而实现不同的行为。
- 多态可以分为方法重载(Overloading)