1. 结构体的使用场合,以及结构体和类的区别
使用场合:
目标类型只是含有一些数据 或以数据为主;
没有抽象和多级别的对象层次
区别:
结构体是值类型,类是引用类型
结构体不能实例属性或字段的初始值
结构体不能声明默认的构造函数
结构体不支持继承
2. 写出5个值类型,和5个引用类型
值类型:
int float double 结构体struct long
引用类型:
class interface delegate object string 各容器
3. 写出4个访问权限修饰符以及它们的含义
public - 公有的 访问不受限制
internal - 内部的 访问仅限于当前程序集,只有当前工程可以访问
protected - 受保护的 访问仅限于当前类或其派生类
private - 私有的 访问仅限于当前类
protected internal - 内部保护访问。只限于本项目或是子类访问,其他不能访问
4. 什么是装箱,什么是拆箱
装箱:值->引用
拆箱:引用 -> 值
5. 简述静态类的特点
静态类中只能有静态成员,不可以有非静态字段
静态类不能被实例化
静态类在整个项目中,资源共享
在程序结束后,静态资源才会被释放
6. 简述构造函数的特点
创建类的新对象时执行
构造函数的名称与类的名称完全相同
无函数(返回)类型说明, 也没有返回值
可以被重载
7. 抽象类和接口的相同点
都可以被继承
都不能被实例化
都可以包含方法声明
派生类必须实现未实现的方法
8. 抽象类和接口的区别
抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段
抽象类适用于同一系列,并且有需要继承的成员。接口适用于不同系列的类,让其具有相同的行为,这个就考虑使用接口
接口解决了类不能多继承问题,一个类只能继承自一个类(抽象类),但是可以同时实现多个接口
接口类中不能有实现成员,而抽象类中可以有未实现成员也可以有实现的成员
接口中未实现的方法必须在子类中[实现],抽象类中未实现的方法必须在子类中[重写]
接口可以作用于值类型(struct)和引用类型,抽象类只能作用于引用类型
9. 简述队列、栈和链表的特点
先进先出
后进先出
通过指针指向下一个节点,内存不连续
10.
a) 通过下标访问数组元素的时间复杂度是?
O(1)
b) 遍历数组查找元素的时间复杂度是?
O(n)
c) 简述在数组中插入元素的最好和最坏情况,以及它们的时间复杂度
插在开头 O(n)
插在末尾 O(1)
11. 简述重载(overload)和重写(override)的区别
静态多态,相同函数名参数类型或者个数不同;
动态多态,重写基类的函数,在子类中有不同实现。
12. 简述委托和事件的定义
可以将方法当作另一个方法的参数来进行传递
一个进行封装的委托类型变量
13. 如何手动释放堆区内存?
将引用类型对象赋值null
手动调用GC
14. 请补完以下单例模式的类
public class Single{
private static Single Instance;
private Single () { }
public static Single Instance
{
get
{
if (instance == null)
{
instance = new Single ();
}
return instance;
}
}
}
15. 请简述一下快速排序的逻辑
未完待续...