Unity C#基础面试题(一)
- 1.一个完整的C#控制台程序包括哪些必要的组成部分?
- 2.有哪些主要的数据类型,他们之间是怎样转换的?
- 3.类和对象的区别?
- 4.静态字段和非静态字段的区别?
- 5.接口声明主要有几部分组成?
- 6.在某些场合使用接口而不是类继承,为什么?
- 7.什么是异常?异常有什么用?
- 8.C#中处理异常采用的结构化异常处理语句有哪些?并简要说明?
- 9.内存一般分为什么区域?
- 10.重载的原因
- 11.readOnly和const区别
- 12.类的声明一般形式是什么?
- 13.什么是继承
- 14.什么是多态
- 15.C#定义了几种类的访问修饰符
- 16.override 和 重载的区别
- 17. 面向对象的思想的三个基本特征
- 18. sealed 修饰符有什么特点
- 19.什么是装箱和拆箱
- 20.根据get和set访问器是否存在,属性分为哪几种类型
- 21.属性主要用于哪些情况
- 22.类所包含的成员种类有哪几种
- 23.C#方法有哪4种类型的参数
- 24.如何区别重载方法
- 25.索引器与属性的主要差别是什么
- 26.构造方法有哪些特征
- 27.结构化异常处理捕获异常的原则是什么
- 28.简述变量的命名规则
- 29.简述C#中编译时的多态性和运行时多态性的区别
- 30.什么是构造函数重载
1.一个完整的C#控制台程序包括哪些必要的组成部分?
Properties:属性,在Assembly Info 中可以设置应用程序的版本号,作者信息。
引用:默认情况下,项目引用了System,System.Data和System.XML 3个命名空间,这三个命名空间包括了最常见的类和函数。
Program.cs:项目默认建立,是项目的运行入口。
2.有哪些主要的数据类型,他们之间是怎样转换的?
引用类型和值类型,引用类型转换为值类型是通过拆箱的操作进行转换,值类型到引用类型则是通过装箱操作转换为引用类型。
3.类和对象的区别?
类是对一种事物的定义,对象则是一种具体的事物。对象是类的实例,类不可以直接使用,对象可以。
4.静态字段和非静态字段的区别?
静态字段可以直接以类"."字段直接使用,非静态字段必须通过实例才可以使用。
5.接口声明主要有几部分组成?
访问修饰词,关键字(interface),接口名
6.在某些场合使用接口而不是类继承,为什么?
使用多继承时,可以使用接口。不能使用类继承的时候,则使用接口。不需要从基类继承实现使用接口。
7.什么是异常?异常有什么用?
异常是错误的一种,它的结果是导致程序不能正确运行。当抛出异常后,程序不正常停止。如果可以俘获异常并处理,可以增强程序的健壮性。
8.C#中处理异常采用的结构化异常处理语句有哪些?并简要说明?
try{}cathc 语句,try…finally ,try…catch…finally
try:用来指明可能出现异常的代码
catch:catch块内指明对所出现的异常的处理
finally:指不管有没有异常都会执行的部分,用来清理资源,或者处理try末尾执行的操作。
9.内存一般分为什么区域?
全局数据区:存放全局变量,静态数据,常量
代码区:存放所有的程序代码
栈区:存放为运行而分配的局部变量,参数,返回数据,返回地址。
堆区:存放程序动态分配的内存。
栈内存是由于系统自己分配和释放的,而堆内存要由程序员自己全权控制,否则会出现内存泄漏。
10.重载的原因
1.传递方式
2.参数类型不同
3.参数个数不同
4.参数顺序
11.readOnly和const区别
1.const字段只能在该字段声明的时候初始化,readOnly字段可以在声明时构造函数初始化。
2.const字段时编译时常数,readonly字段时运行时常数。
3.const默认是静态的,而readonly如果设置成静态就必须显示声明。
4.const对于引用类型的常数,可能值只能是string和null,readonly可以是任何类型。
12.类的声明一般形式是什么?
访问修饰符+class + 类明 + {}
13.什么是继承
可以使子类拥有父类的所有功能,在无须更改的情况下对其进行拓展和修改方法
14.什么是多态
一个方法作用于不同对象拥有不同表达方式的多种形态
15.C#定义了几种类的访问修饰符
public : 公开的
protected :受保护的,只当前类与子类可以使用
private : 私有的,在类中访问
internal : 当前程序集
protect internal : 在本类和当前程序集中的子类访问
16.override 和 重载的区别
重载是相同的名称的方法,参数或参数类型不同,进行重载以适应不同的需要
override 是进行方法的重写
17. 面向对象的思想的三个基本特征
封装:用一个框架把数据和代码组合在一起,形成对象
继承:是子类拥有父类的所有方法
多态:一个方法作用于不同的对象,可以有不同的表达方式
18. sealed 修饰符有什么特点
sealed修饰符修饰类,该类不可被继承。密封方法会重写基类中的方法,但其本身不能在任何派生类中进行重写。当应用于属性和方法时,sealed必须与override一起使用
19.什么是装箱和拆箱
从值类型转换为引用类型为装箱,从引用类型转换为值类型为拆箱
20.根据get和set访问器是否存在,属性分为哪几种类型
只读,只写,可读可写
21.属性主要用于哪些情况
C#中提供了属性来实现安全性,C#通过属性特性写入和读取字段,来保护字段,属性是类内部封装的体现
22.类所包含的成员种类有哪几种
字段,属性,方法,构造方法,常量,事件,索引等
23.C#方法有哪4种类型的参数
值类型参数,引用类型参数,输出参数,数组参数
24.如何区别重载方法
参数类型不同,个数不同,顺序不同
25.索引器与属性的主要差别是什么
索引器与属性类型,都可以使用get和set定义索引元素的读写权限,与属性不同的是索引器有索引参数
26.构造方法有哪些特征
与类名相同,没有返回值,系统自动调用
27.结构化异常处理捕获异常的原则是什么
先捕获特殊异常,再捕获普通异常
28.简述变量的命名规则
由字母或下划线开头,可以有数字,字母,下划线,不能使用关键字。使用帕斯卡或驼峰命名规范
29.简述C#中编译时的多态性和运行时多态性的区别
编译时的多态性是由方法重载所实现的,运行时的多态性是根据不同的情况决定哪种操作。C#中运行的多态通过虚方法实现
30.什么是构造函数重载
构造函数可以有参数也可以无参数,有参时根据参数的类型不同,个数不同,顺序不同