1. 什么是面向对象?

答:C#中面向对象是一种编程思想

  • 封装:所谓封装也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性
  • 继承:继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;
  • 多态:所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们可以通过相同的方式予以调用。

2. 线程和进程的区别?

答:1.进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位)

2.进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,一个进程包含多个线程

3. Public static const int a=1;这段代码错在哪里?

答:const不能被修饰为static ;因为定义为常量 (const )后就是静态的(static )

扩展:C#—static静态类

4. 在.net中不想让一个类被继承用哪个单词修饰?序列化一个类用哪个单词标记?

答:1.只需要在定义类时加上 sealed 关键字

  1. public sealed class Room
  2. {
  3. ...
  4. }
  1. 2.在类定义前写上[Serializable()]
  1. [Serializable()]public class User{
  2. ...
  3. }

6. 简单描述Ihtttphandler和Ihttpmodule的区别和各自的作用?

区别:

  1. 先后次序。先IHttpModule,后IHttpHandler。 注:Module要看你响应了哪个事件,一些事件是在Handler之前运行的,一些是在Handler之后运行的。
  2. 对请求的处理上。IHttpModule 是属于大小通吃类型,无论客户端请求的是什么文件,都会调用到它;例如 aspx,rar,html的请求。IHttpHandler则属于挑食类型,只有ASP.net注册过的文件类型(例如aspx,asmx等等) 才会轮到调用它。
  3. IHttpHandler按照你的请求生成响应的内容,IHttpModule对请求进行预处理,如验证、修改、过滤等等,同时也可以对响应进行处理。

7. 随便写出一个json格式串?

  1. [{"age":"18"},{"name":"张三"},{"sex":"男"}]

8. 什么是扩展方法?

  • 一句话解释,扩展方法使你能够向现有类型“添加”方法,无需修改类型
  • 条件:按扩展方法必须满足的条件,1.必须要静态类中的静态方法2.第一个参数的类型是要扩展的类型,并且需要添加this关键字以标识其为扩展方法
  • 建议:通常,只在不得已的情况下才实现扩展方法,并谨慎的实现
  • 使用:不能通过类名调用,直接使用类型来调用

9. int?和int有什么区别

  • int?为可空类型,默认值可以是null
  • int默认值是0
  • int?是通过int装箱为引用类型实现

10. const和readonly有什么区别?

都可以标识一个常量。主要有以下区别:

  • 1、初始化位置不同。const必须在声明的同时赋值;readonly即可以在声明处赋值,也可以在静态构造方法(必须是静态构造方法,普通构造方法不行)里赋值。
  • 2、修饰对象不同。const即可以修饰类的字段,也可以修饰局部变量;readonly只能修饰类的字段
  • 3、const是编译时常量,在编译时确定该值;readonly是运行时常量,在运行时确定该值。
  • 4、const默认是静态的;而readonly如果设置成静态需要显示声明
  • 5、修饰引用类型时不同,const只能修饰string或值为null的其他引用类型;readonly可以是任何类型。

11. a.Equals(b)和a==b一样吗?

不一样,a==b仅仅表示a和b值相等,a.Equals(b)表示a与b一致

12.下面这段代码求值

  1. class Class1
  2. {
  3. internal static int count = 0;
  4. static Class1()
  5. {
  6. count++;
  7. }
  8. public Class1()
  9. {
  10. count++;
  11. }
  12. }
  13. Class1 o1 = new Class1();
  14. Class1 o2 = new Class1();

o1.count的值是多少?

答案:3,静态 构造方法计算一次,两个实例化对象计算两次。

13. 关于构造函数说法正确的是哪个?

a)构造函数可以声明返回类型。

b)构造函数不可以用private修饰

c)构造函数必须与类名相同

d)构造函数不能带参数

答案:c ,构造函数必须与类名相同,可以传递多个传递,作用就是便于初始化对象成员,不能有任何返回类型