.NET测试题总结

C#基础知识

1.值类型和引用类型的区别?
答:①值类型有结构体(数值类型、bool型、用户定义的结构体)、枚举、可空类型等;引用类型有class、数组、interface 或 delegate、object、dynamic 和 string等。
②值类型System.ValueType 中派生的,直接存储数据值,内存是自动释放的;引用类型System.Object类,引用类型存储对其值的引用,内存是.NET中会由GC来自动释放。
③值类型直接存放在栈中;引用类型存放在堆中,声明的变量只是存放指针位置。
2.什么是拆箱和装箱?
答:①装箱:将值类型转换成引用类型----将小的包装成大的
②拆箱:将引用类型转换成值类型----将大的拆分成小的-----前提是先装箱
3.数据类型转换的方式有哪些?简单介绍其中使用到的至少三种方法?
答:隐式转换和显示转换
隐式转换:c#默认的安全的转换,是用户看不到的;
显示转换:用户自定义的通过函数进行的转换;convert点…;int.parse将数字的字符串转换为int类型,as;tostring;(char)XX;装箱:将值类型转换为引用类型;拆箱:将引用类型转换为值类型,拆箱的前提是装箱。
4.说说return丶break丶continue的区别?
答: (1):return:跳出循环直到代码块结束;
(2):break:跳出循环进行循环之后的代码;
(3):continue:跳出当前次循环,进行新的下一次循环.
5.说明事件中两个参数的作用?
答:(1)Sender:是事件源,表示触发事件的那个组件
如(button/label/listview…),比如说你单击button,那么sender就是button
(2)EventArgs:是事件参数,它用来辅助你处理事件
比如说你用鼠标点击窗体,那么EventArgs是会包含点击的位置等等。
6.控制台中的Console对象的Write和WriteLine方法有神魔区别?
答:(1)Console.Write表示向控制台直接写入字符串,不进行换行,可继续接着前面的字符写入。
(2)Console.WriteLine表示向控制台写入字符串后换行。
7.string和stringBuilder的区别是什么?
答:(1):string对象是不可变的。包括长度或者其中的任何字符都是不可以改变的。C#中不能使用new string()来构造一个string对象。
(2):StringBuilder是可变的。它是专门用于对字符串和字符执行动态操作的类。StringBuilder在内部有一个足够长的字符数组用于存放字符串对象, 当字符串长度没超过字符数组长度时,所有操作都是针对同一个字符数组。 当长度超过时,StringBuilder将自动创建一个更长的数组,把原来的数据复制到新数组中。
8.介绍下静态(Static)的用法?
答:使用static修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器和析构函数或类以外的类型。
9.方法的参数out丶ref有什么作用?
答: ①out:输出参数,方法中的out参数在方法结束时,需要准备一个相同类型的变量接受out的结果,并且必须带out关键字。
②遇到方法中形参是out类型,则在调用方法的时候实参也必须带有out关键字。
③ref:引用传参,使用前要进行初始化,传进方法中的参数,如果在方法内发生改变,那么这个参数变量将会永久性发生改变。
10.方法参数数组和数组参数有什么区别?
答:(1):数组参数
在 C# 中,您可以传递数组作为函数的参数。您可以通过指定不带索引的数组名称来给函数传递一个指向数组的指针。
(2):参数数组
有时,当声明一个方法时,您不能确定要传递给函数作为参数的参数数目。C# 参数数组解决了这个问题,参数数组通常用于传递未知数量的参数给函数。
在使用数组作为形参时,C# 提供了 params 关键字,使调用数组为形参的方法时,既可以传递数组实参,也可以传递一组数组元素。params 的使用格式为:public 返回类型 方法名称( params 类型名称[] 数组名称 )
11.什么是可选参数?
答:可选参数,是指给方法的特定参数指定默认值,在调用方法时可以省略掉这些参数。
但要注意:
(1)可选参数不能为参数列表的第1个参数,必须位于所有的必选参数之后(除非没有必选参数);
(2)可选参数必须指定一个默认值,且默认值必须是一个常量表达式,不能为变量;
(3)所有可选参数以后的参数都必须是可选参数。
12.详细介绍一下C#中的异常捕获机制?
答:try…catch…catch…finally…
尝试执行try里面的代码,如果某段代码报错则立即进入catch中,如果没有报错,执行完try中代码即可。
发生错误时层层上抛,直到找到匹配的catch为止,finally最终执行的代码。
13.C#中的结构和类的区别?
答:(1)值类型和引用类型
①结构是值类型,值类型在堆栈上分配地址,所有的基类型都是结构类型,通过使用结构可以创建更多的值类型。
②类是引用类型,引用类型在堆上分配地址。
③结构之间的赋值可以创建新的结构,类之间的赋值只是赋值引用。
(2)继承性
①结构:结构不能从另一个结构或类继承,本身也不能被继承。
②类:可以继承其他类和借口,自身也能被继承。
(3)内部结构
①结构没有默认的构造函数,但可以添加构造函数,没有析构函数,初始化可以不使用new
②类有默认的构造函数,有析构函数,必须使用new初始化。
14.什么是可空类型,需要时如何声明?
答:可空类型:可以为null的类型赋其基础类型正常范围的值和null值。在处理数据库和其他包含可能未赋值的元素的数据类型时,将 null 赋值给数值类型或布尔型的功能特别有用。
int? num1 = null;
15.说出XML丶HTML丶XAML的意思?
答:(1):XML:可扩展标记语言;(2):HTML:超文本标记语言;(3):XAML:可扩展应用程序标记语言
16.说明C#类中两个特殊函数的用法?
答:(1):构造函数:构造函数的名字必须与类同名, 构造函数没有返回类型,它可以带参数,也可以不带参数。 声明类对象时,系统自动调用构造函数,构造函数不能被显式调用, 构造函数可以重载,从而提供初始化类对象的不同方法, 若在声明时未定义构造函数,系统会自动生成默认的构造函数,此时构造函数的函数体为空, 构造函数分为实例构造函数、私有构造函数和静态构造函数
(2):析构函数: 析构函数是实现销毁一个类的实例的方法成员。析构函数不能有参数,不能任何修饰符而且不能被调用。由于析构函数的目的与构造函数的相反,就加前缀‘~’以示区别。
17.面向对向的三大特征是是什么?
答:封装丶继承丶多态
18.详细说出C#中五个访问修饰符的访问权限?
答: private : 私有成员, 在类的内部才可以访问。
 protected : 保护成员,该类内部和继承类中可以访问。
 public : 公共成员,完全公开,没有访问限制。
internal: 在同一程序集(命名空间)内可以访问。
protected internal / internal protected: 在同一程序集(命名空间)内可以访问。
19.详细说明重载和重写的区别?
答:重载:重载是方法的名称相同。参数或参数类型不同(不同的参数类型,不同的参数个数,不同的参数顺序),进行多次重载以适应不同的需要.
重写:Override它表示重写基类的方法,而且方法的名称,返回类型,参数类型,参数个数要与基类相同;
不同点:
重载方法无返回值可以,重写方法的返回值必须一致;所处的位置不同,重载的位置是在同类里,重写的位置时父子类 ;重载编译时多 态,重写运行时多态;重载不需继承,重写必须继承.
20.详细说明虚拟和抽象的区别是什么?
答:抽象函数:
抽象方法必须声明在抽象类中。声明抽象方法时,不能使用virtual、static、private修饰符。在抽象类中抽象方法不提供实现。抽象方法不包含方法主体,必须由派生类以override方式实现此方法。
虚拟函数:
虚拟函数在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行 时期对象实例来动态判断要调用的函数,其中那个申明时定义的类叫申明类,那个执行时实例化的类叫实例类。
21.详细介绍接口的作用以及接口在使用时需要注意的地方有哪些?
答:接口中可以定义方法和属性。方法和属性前不能加任何访问修饰符。
接口的实现可分为显式实现和隐式实现。
  显式实现接口的方法或属性时,方法或属性的名称前必须加上接口的名称。
  显式实现接口的方法或属性时,不能加任何访问修饰符,即使是 private 也不能加(虽然对于类而言,它是私有的)。
 显式实现的接口方法或属性,只能通过接口的实例调用,不能用类的实例调用。
  隐式实现接口的方法或属性时,方法或属性的名称前不能加接口的名称。
  隐式实现的接口方法或属性,访问修饰符必须是 public。
  只有隐式实现的接口方法可以标记为虚方法,因为虚方法不能为 private。这同样适用于 abstract 关键字。
  一个接口中的方法或属性,可以一部分采用隐式实现,另一部分采用显式实现。
  只要基类实现了接口,不论是隐式还是显式实现,其派生类均视为已实现该接口。
 实现接口方法时,方法的签名必须与接口中的声明严格一致,其参数及返回值不可以替换为相应的基类或派生类。
22.C#中的委托是指什么?
  答:委托可以把一个方法作为参数代入另一个方法。委托可以理解为指向一个函数的引用
23.事件和委托的区别有哪些?
  答:事件在类外绑定事件只能用“+=”(“-=”解绑),不能使用‘=’绑定;如果在类内部绑定事件可以用‘=’;  
委托在类内类外都可以用"+="、"-="、"=";
事件的调用(执行)只能在类内调用;委托(公有)在类内类外都可以调用;
事件实际上是一个特殊的委托实例,不用事件也没有关系
24.线程的命名空间是哪个?进程和线程的区别?
答:命名空间:Systerm.Threding;
理解:进程是比线程大的程序运行单元,都是由操作系统所体会的系统运行单元,一个程序中至少要有一个进程,有一个进程中,至少要有一个线程,线程的划分尺度要比进程要小,进程拥有独立的内存单元,线程是共享内存,从而极大的提高了程序的运行效率同一个进程中的多个线程可以并发执行。
区别:进程是系统进行资源分配和调度的单位;
线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。
25.线程的同步和异步是指什么?
答:同步方法:
程序运行的时候,在调用其他方法的时候,会等待被调用的方法按顺序执行完,才会继续执行。非常符合开发思维,有序执行;
异步方法:
在程序调用异步方法的时候,主程序不会等待方法执行完,而是主程序调用异步方法后直接继续运行,而异步方法会启动一个新线程来完成方法的计算。
26.C#中的索引器是否只能根据数字进行索引?是否允许多个索引器参数?
答:①索引器为c#程序语言中类的一种成员,它使得对象可以像数组一样被索引,使程序看起来更直观,更容易编写。
②索引器值不归类为变量;因此,不能将索引器值作为ref或out参数来传递。
③索引器不是只能根据数字进行索引,允许多个索引器参数
27.索引器和属性的区别?
答: (1)属性以名称来标识,索引器以函数形式标识
(2)索引器可以被重载,属性不可以
(3)索引器不能声明为static,属性可以

数据库知识

28.SQL的中文全称是什么?
答:结构化查询语言
29.SQLServer Mysql属于那种类型的数据库?
答:关系型
30.数据库管理系统的登录方式有哪些?
答:Windows:操作系统登陆后,就可以直接登陆数据库软件
SQL Server 权限最高的用户:sa 机房默认密码:用账号密码登录
31.数据库移植可以进行哪些操作?(至少说出两种)
答:(1):数据库的联机丶脱机(数据库的拷贝);(2):数据库的分离丶附加(数据库的拷贝和添加);(3):数据库的备份和还原(数据库的一个保险)
32.数据库的物理文件有哪些?
答:(1):主要数据文件(MDF);(2):事务日志文件(LDF);(3):次要数据文件(NDF)
33.数据库的约束类型有哪些?
答: 主键约束(Primary Key)(确定表中的标识列,(主键字段不能为空,必须唯一))(标识:确定一个对象的唯一表现)
外键约束(Foreign key)(确定表与表之间的联系方式,一般情况下通过从表的标识列进行确定,主表:给哪张表添加约束哪张表就是主表,辅助表为从表)
唯一约束(unique)(确定这个字段中的数据必须是唯一)
非空约束(not null)(确定这个字段中的数据必须不能为空)
检查约束(CHECK)(设置这个字段中的数据的特性)
默认约束(DEFAULT)(设置这个字段在没有手动添加内容时,默认填充值)
34.还原清空表的语法是什么?
答:TRUNCATE TABLE [表名]
35.T-SQL语言的组成有哪些?
答:数据定义语言(DDL):
记用户定义存储数据的结构和组织,以及数据项之间的关系;
数据操纵语言(DML):
SQL允许用户或应用程序通过添加新数据、删除旧数据和修改以前存储的数据对数据库进行更新;
数据控制语言(DCL):
可以使用SQL来限制用户检索、添加和修改数据的能力,保护存储的数据不被未授权的用户所访问。
36.SQL中的聚合函数有哪些?至少说出五个?
答:sum:返回表达式中所有值的和;
AVG:计算平均值;
min:返回表达式的最小值;
max:返回表达式的最大值;
count:返回组中项目的数量;
distinct:返回一个集合,删除重复的组。
37.外链接查询分为哪两种?详细说明区别?
答:左联接:如果左表的某一行在右表中没有匹配行,则在关联的结果集行中,来自右表的所有选择列表均为空值;
右联接:将返回右表的所有行,如果右表的某一行在左表中没有匹配行,则将为左表返回空值。
38.什么是视图?什么是游标?
答:(1):视图:一种虚拟表,具有和物理表相同的功能;(2):游标:一种能够从多条数据中提取到一条机制;
39.什么是索引?有什么优点?
答:索引:一种特殊的查询表;数据库的搜索引擎可以利用它加速对于数据库的检索;
40.什么是触发器?什么是事务?
答:触发器:**触发器是一种特殊的存储过程,主要通过事件来触发而执行的。它可以强化约束,来维护数据的完整性和一致性,*可以跟踪数据库内的操作从而不允许未经许可的更新和变化。
事务:事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就失败,回滚到操作前状态。
41.什么是存储过程?有什么优点?
答:存储过程:存储过程是一个预编译的SQL语句,优点是允许模块化的设计,可以多次调用。
42.什么是SQL注入?如何防止SQL注入?
答:SQL注入就是把SQL命令插入到web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。
(1)用存储过程来执行所有的查询;
(2)限制表单或查询字符串的输入长度;
(3)检查用户输入的合法性,确保输入的内容只包含合法的数据;
(4)将用户登录名称、密码等数据加密保存;
(5)检查提取数据的查询所返回的记录数量。
43.写出一条SQL语句:取出表中第31到第40条数据(已自动增长的ID作为主键,主键可能不连续)
答:select top(10)
from 【表名】 where id not in(select top(30)id from 【表名】)
44.事务的四大特性是神魔?
答:原子性:事务是一个整体的工作单元,事务对数据库所做的操作要么全部执行,要么全部取消。如果某条语句执行失败,则所有语句全部回滚。
一致性:**事务在完成时,必须使所有的数据都保持一致状态。**在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。如果事务成功,则所有数据将变为一个新的状态;如果事务失败,则所有数据将处于开始之前的状态。
隔离性:**由事务所作的修改必须与其他事务所作的修改隔离。**事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。
持久性:当事务提交后,对数据库所做的修改就会永久保存下来。
45.详细介绍ADO.NET的五大内置对象?
答:①connection:建立与数据库的链接。
②command:用来对数据库发出一些指令。
③datareader:读取数据。
④dataadapter:是dataset和数据源之间的桥梁。
⑤dataset:打从数据库中所查询到的数据保留起来。
46.使用用户名:sa和密码:123登录的数据库管理系统的;连接字符串如何写?
答: string strCon = “Data Source=192.168.1.99; Initial Catalog=【数据库名】;User id=sa;pwd=123;”;
47.Command对象的主要方法有哪些?详细介绍
答:**ExecuteNonQuery():
执行一个SQL语句,返回受影响的行数,这个方法主要用于执行对数据库执行增加、更新、删除操作,注意查询的时候不是调用这个方法。用于完成insert,delete,update操作。
ExecuteScalar():
从数据库检索单个值。这个方法主要用于统计操作。ExecuteScalar()这个方法是针对SQL语句执行的结果是一行一列的结果集,这个方法只返回查询结果集的第一行第一列

ExecuteReader用于实现只进行读取的高效数据查询。
ExecuteReader:
返回一个SqlDataReader对象,可以通过这个对象来检查查询结果,它提供了只进只读的执行方式,即从结果中读取一行之后,移动到另一行,则前一行就无法再用
48.三层架构主要有那三层组成?每层都有什么作用?详细说明
答:UI:表现层,主要表示web方式;
BLL:业务逻辑层,主要针对具体问题的操作,也可以理解为对数据层的操作;
DAL:数据访问层,主要对非原始数据的操作层,也就是对数据库操作而不是数据,具体为业务逻辑层或表现层提供数据服务。
49.为什么要分三层?有哪些好处?
答:为了实现高内聚低耦合的思想,降低层与层之间的依赖,标准化。
50.说出B/S和C/S的区别
答:①体积:C/S胖客户端,B/S瘦客户端
②效率:C/S本地运行,B/S服务器端运行
③网络:C/S依赖不强,B/S必须依赖网络
④用户:C/S体验更好,B/S其次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值