当前位置:首页 > C#面试题目答案
1.声明名称空间的关键字?作用?(二点)
namespace声明名称空间。
a.名称空间是一种代码的组织形式,区别不同的代码功能 b.减少命名冲突
使用using给名称空间取别名。名称空间可以嵌套。
2.C#中有那些访问修饰符以及作用范围?其中类有哪些访问修饰符,默认是什么?类成员变量有哪些默认是什么?
private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在当前程序集中可以访问。 类:internal(默认) public 类成员变量:都可以使用
3.静态变量和非静态变量的区别?(四点)
静态变量: 静态变量使用 static 修饰符进行声明 在所属类被装载时创建 通过类进行访问 所属类的所有实例的同一静态变量都是同一个值 非静态变量: 不带有 static 修饰符声明的变量称做非静态变量 在类被实例化时创建 通过对象进行访问 同一个类的不同实例的同一非静态变量可以是不同的值
4.构造函数的特征,在继承的时候其调用顺序?
a.与类同名 b.无返回类型
c.只能由 new 关键字调用,实例化对象时自动调用。
d.如果未定义构造函数,编译器会自动添加一个默认构造函数。如果已经定义了自己的构造函数,就不会提供默认构造函数。
e.构造函数的作用是实例化对象并初始化成员变量 f.构造函数不能被继承
g.子类在创建对象时,先调用父类的构造方法,在调用自己的构造方法
5.什么是重写,什么是重载?尽量详细
重写:父类的方法在子类重写实现,以满足子类需求,父类方法用virtual修饰,子类方法用override修饰。是运行时多态。 重载:在一个类中,方法名相同,参数列表不同(同名不同参,与返回类型,访问修饰无关,由参数个数,顺序,类型有关。作用:实现编译时多态,方便调用) 不同:
a.重载在同一个类中,重写在父类和子类中
b.重载的方法的参数列表不同,重写时子类的方法和父类的方法具有相同的方法签名(访问
修饰符、返回类型、方法名、参数列表)
c.重载不要用关键字,重写:父类方法用virtual修饰,子类方法用override修饰要用关键字 d.重载靠参数来判断调用的方法,重写靠对象的类型来判断调用的方法
共同点:都是多个方法共用一个方法名,都是面向对象中多态的体现形式。
6.什么是枚举?以及枚举作用?
枚举:是一组已经命名的数值常量。 作用:
a.使代码便于维护,确保变量的合法性
b.使代码更加清晰,允许用描叙性的名称表示整数类型,而不是含糊的数来表示 c.枚举是代码便于键入,减少按键次数,便于我们回忆起可选值 好处:避免出错、便于使用、使常量的名称有意义
7.什么是常量?以及常量的作用?
常量:值不会发生变化的量。用const修饰,声明时必须赋值,作为全局变量时默认是静态形式。
作用:给一些不需要改变的值的变量赋值,以便减少出错。常被用来标识、测量和比较。
8.ADO.NET五大对象,以及其作用?
a).Connection连接对象,建立和数据库连接 b).Command执行命令和存储过程 c).DataReader向前只读的数据流
d).DataAdapter适配器,支持增删查询
e).DataSet数据集对象,相当与内存里的一张或多张表
9.什么是值类型和引用类型?C#中那些数据类型是值类型哪些是引用类型?什么是装箱和拆箱?
答:基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。所有的值类型均隐式派生自 System.ValueType。与引用类型不同,从值类型不可能派生出新的类型。但与引用类型相同的是,结构也可以实现接口。与引用类型不同,值类型不可能包含 null 值。然而,可空类型功能允许将 null 赋给值类型。 每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。 值类型主要由两类组成:结构、枚举、基本数据类型
结构分为以下几类:Numeric(数值)类型、整型、浮点型、decimal、bool、用户定义的结构。
引用类型的变量又称为对象,可存储对实际数据的引用。声明引用类型的关键字:class类、interface接口、delegate委托、内置引用类型: object对象、string字符串 装箱:从值类型转变为引用类型 拆箱:从引用类型转变为值类型
10.类和结构的区别?(四点)
1)、类是引用类型在堆上分配。结构是值类型在栈上分配。 2)、类可以继承和被继承。结构不能被继承,但可以实现接口 3)、类可以有默认的无参构造函数和有参的构造函数。结构不能有无参的构造函数,但可以提供带参的构造函数,必须在构造函数里给所有的成员变量给初始值。 4)、类创建对象时必须使用new。结构创建对象可以不用new。 5)、类可以在声明字段时给其赋值。结构不能在声明字段时给其赋值,必须在构造函数中给所有成员赋值。
11,什么是属性?什么是特性?
属性表示对象的一种状态,是对类成员变量的一种封装,保护其成员变量,并限制其读写权限。
特性是被指定给某一声明的一则附加声明性信息。
12.面向对象包含哪些特征?继承有哪些特征(至少四点)?为什么要使用继承? 面向对象的特征:封装、继承和多态 1)、继承是可传递的。 2)、派生类应当是对基类的扩展。 3)、构造函数和析构函数不能被继承。除此以外的其它成员都能被继承。 4)、派生类如果定义了与继承而来的成员同名的新成员,继承来的成员会被隐藏 5)、派生类能够重载父类成员,从而实现类可以展示出多态性。 6)、继承具有具有单根性
继承的作用:代码的重用,减少代码冗余,结构清晰,可以对现实世界进行模拟 继承是在现有类的基础上添加一些新的东西,从而形成一个新的类的过程
13.抽象类和接口的区别?
不同: 1)、抽象类可用于引用类型。接口可用于值类型和引用类型。 2)、抽象类单继承,接口多继承 3)、抽象类关键字abstract class。接口关键字interface 4)、抽象类能声明字段、属性、方法、索引器、事件。接口能声明属性、方法、索引器、事件。 5)、抽象类方法签名有访问修饰符。接口方法签名无访问修饰符 6)、抽象类子类实现用override关键字。接口子类实现用不要关键字。 7)、抽象类描叙类似事物的共有的属性和方法,接口是描叙不相干对象共有的属性和方法 共同:都是类的模板、都不能被实例化、都能被继承
14.三层结构,包括那三层?每层作用是什么?为什么要使用三层(4点以上)以及弊端
三层包括:数据访问层、业务逻辑层、表示层。 数据访问层:实现对数据的保存和读取操作。
业务逻辑层:是表示层与数据访问层之间的桥梁,负责数据处理、传递。 表示层:为用户提供一种交互操作界面。
关系:表示层---依赖---业务逻辑层---依赖---数据访问层。
使用三层可以提高程序的扩展性,高内聚低耦合,便于开发分工,架构清晰。
弊端:增加开发成本。
15.什么是存储过程?使用存储过程的好处以及弊端?
答:存储过程是SQL语句和可选控制流语句的预编译集合。 优点:
1.模块化,可以进行重复调用 2.执行计划(存储过程在首次运行时将被编译,这将产生一个执行计划)可以提高执行效率。 3.存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量T-sql语句的代码流量。 4.增强安全性:
a、通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问;
b、提高代码安全,防止 SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数); 缺点:
1.如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐了。 2.可移植性差
由于存储过程将应用程序绑定到 SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于 RDBMS 的中间层中可能是一个更佳的选择。 3.调试起来相对麻烦
Sql语句灵活,可移植性强,查询速度比存储过程慢些
16.DataReader和DataSet有什么区别?
DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作...
17.谈谈数组,集合,泛型集合特点以及区别?(三点以上)
数组的数据类型相同,存储空间连续。定义时必须指定大小。大小不能改变。不能够随意添加和删除其中的项。
集合是存放数据的容器,可以更具实用情况自动调整大小。存放的数据是object型,要进行装箱拆箱操作。对存放的数据不会进行安全检查。可以在任意位置插入和删除项。 泛型集合具有占位符可以指定存放数据的类型,不需要进行装箱拆箱操作。会进行安全检查,可以调整自身大小。也可以在任意位置插入和删除项。
18.什么是事务?简单描叙事务的四大特性?在ADO.NET中使用事务要用到那个类?
答;数据库事务是指作为单个逻辑工作单元执行的一系列操作,要么全部成功要么全部失败。
共分享92篇相关文档