C#面试知识题目
1、简述 private、 protected、 public、 internal 修饰符的访问权限。
private:表示私有的,只有在类的内部访问。
protected:受保护的,在类与继承中可以访问。
public:公开的,没有访问权限限制。
internal:当前程序集可以访问。
2、ADO.NET中的五个主要对象
Connection :主要用于连接数据库
Command:主要用于执行SQL语句
DataSet:是全部把数据一次读出来啊,想当于一个临时仓库。
DataReader:是一行一行的循环读,只会向前,不会后退
DataAdapter:主要是在数据源和DataSet之间进行数据传递工作
3、列举ASP.NET 页面之间传递值的几种方式。
Session,Cookie,QueryString "Index.aspx?id=6",Server.Transfer("地址");数据库
4、C#中的委托是什么?事件是不是一种委托?事件和委托的关系。
(dalegate)委托是一种类型,可以理解一个函数指针,就是把一个方法的签名,做为一个参数进行传递到另一个方法。
我觉得委托和事件没有可比性,因为一个是委托类型,事件一个是对象。
事件用(event)表示,
5、override与重载(overload)的区别
override:就是子类重写父类的方法,是面向对象慨念
overload:是重载,就是方法名相同,参数不同,根据不同的调用执行不同的操作。是面向过程慨念
6、C#中索引器语法?
class suoyi //声明一个类
{
int[] num = { 5, 6, 7, 3, 2, 2, 4, 5, 6, 7, 90 };//数组
public int this[int index] //索引
{
get { return num[index];}
set { num[index] = value;}
}
}
7、属性和public字段的区别是什么?
属性是通过GET和SET提供给外界访问的,字段只在类的内部,储存数据。
8、三层架构
数据访问层(DAL),业务逻辑层(BLL),表现层(UI)。。。关系BLL引用DAL,UI引用BLL。。。。
10、关于拆箱装箱:
装箱:值类型转引用类型 拆箱:把引用类型转成值类型
object o=null;
o=1; //把引用类型封装成值类型
int i=(int)o; //把引用类型转换成值类型
12、CTS、CLS、CLR分别作何解释(*)把英文全称背过来。
CTS:common type system 通用类型
CLS: common Language system 通用语言
CLR: common Language Runtime 公共语言运行库
13、在dotnet中类(class)与结构(struct)的异同?
首先,从类型上,类是引用类型,结构是值类型,类可以继承或被继承,结构不可以,但是它们都可以实现接口。
14、堆和栈的区别?
堆是程序运行是动态分配的内存空间。。栈是程序编译期间就分配好的内存空间,因此你代码中,必须就栈的大小有明确定义。局部值类型变量,值类型参数都存在栈内存中。
16、GC是什么? 为什么要有GC?
Gc是垃圾回收处理机制,它可以为内存释放资源,垃圾回收机制是自动管理,但是有的还是需要程序员自己手动释放,比喻FileStream 和SqlConnection
18、值类型和引用类型的区别?
值类型相当于复制文件,和原来的文件没有任何关系,两个完全分离,引用类型相当于创建快捷式,一个被改变另一个跟着变。。
19、C#中的接口和类有什么异同。
不同点:类可以被实例,接口不能,类只能单继承,接口可以多继承,接口不能包含方法的实现,类可以。 相同点:它们都包含,方法,属性,事件和索引。接口可以定义了行为,不能实现,所以也就不能有字段。
20、abstract class和interface有什么区别?
相同点:首先abstract calss 和interface都不能被实例化,都可以通过继承实现抽象方法。不同点:abstract calss 可以包含字段,和提供实现方法,interface只能定义行为,不包含实现方法。
抽象类只能单继承,接口可以多继承。接口可用作于值类型 和引用类型。但是抽象类只能用于引用类型。
21、是否可以继承String类?
不能,因为string类是不可变的。
22、
static void Main(string[] args)
{
Console.WriteLine(GetIt());
Console.ReadKey();
}
static int GetIt()
{
int i = 8;
try
{
i++;
Console.WriteLine("a");
return i;//把返回值设定为i,然后“尽快”返回(没啥事就回去吧)
}
finally
{
Console.WriteLine("b");
i++;
}
}
上面的程序执行结果是:ab9
28、int、DateTime、string是否可以为null?
int ,dateTime是strut类型,也就是值类型,值类型是编译期间都要定义明确的大小,string是引用类型,所以可以定义为空,因为引用类型是程序运行时动态分配的内存空间。
29、using关键字有什么用?什么是IDisposable?
using可以用来非托管的资源释放,实现了IDisposable类中的using创建,在using结束时,会自动调用Dispose方法执行资源释放。我认为using相当于,try--finally...
31、string str = null 与 string str = “”说明其中的区别。
string str=null表示什么也没有啊, string str=""表示已经开辟了内存为空的空间,
32,写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。
解答一
select top 10 * from TblArea where AreaId not in(select top 30 AreaId from TblArea)
解答二
select *from(select ROW_NUMBER()over(order by Areaid)as num,* from TblArea)as t where num>30 and num<=40
33,33.面向对象的语言具有________性、_________性、________性
答:封装、继承、多态。
封装:就是把字段,方法,属性封装在类里面,提供给外界访问的方法。为了安全
继承:一个类如果继承了另一个类,就可以调用该类的,属性,方法,构造函数、
多态:就是建立在继承上,就是同一个类不同实例,执行结果不同。
34.在.Net中所有可序列化的类都被标记为_____?
答:[serializable] serializable serializable serializable serializable serializable
36、接口是一种引用类型,在接口中可以声明(a),但不可以声明公有的域或私有的成员变量。
a) 方法、属性、索引器和事件;
b) 索引器和字段;
c) 事件和字段;
解答:接口中不能声明字段,只能声明方法,属性,事件,和索引最后都被编译生成方法。字段属于实现层东西,只有存取值才用。
38. 下列关于C#中索引器理解正确的是(c)
a) 索引器的参数必须是两个或两个以上
b) 索引器的参数类型必须是整数型
c) 索引器没有名字
d) 以上皆非
43.StringBuilder 和 String 的区别?
string每次处理字符串(如赋值,拼接)的时候,都会产生一个新的实例,stringbuilder不会,所以在大量处理字符串时,尽量用stringbuilder不要用string,
stringbuilder执行效率高。
49、您在什么情况下会用到虚方法?它与接口有什么不同?
在基类的方法需要子类来重写的时候,需要用到虚方法。 接口的方法不能有方法体,如果一个类继承接口就必须实现它的方法。而基类的方法,子类可以不用重写。
57、通过超链接怎样传递中文参数?
通过queryString 传递,urlencode编码,urldecode解码
59、Server.Transfer和Response.Redirect的区别是什么?(常考)
Server.Transfer:只和web服务器交互一次,它在客户端浏览器不会显示转向后的地址。(完全在服务端执行,浏览器根本不知道)
Response.Redirect:这个就是完全跳转,浏览器会得到(服务器发来的新地址302重定向)跳转地址,重新请求连接,这样客户端就可以看到跳转地址。
60、不是说字符串是不可变的吗?string s="abc";s="123"不就是变了吗?(传智播客.Net培训班原创模拟题)
这段代码的字符串,确实是不可变的,首先s="abc",然后将s="123",其实s指向原来的对象并没发生改变,而是存在内存里,只是s这个引用变量不在指向它了。
63、说出一些常用的类、接口,请各举5个
常用类:SqlConnection ,list<int>,File,FileStream,Regex ,StreamRead,StringBuilder
常用接口:IDisposable,IList,IDictionary,IDbConnection,IColletion,IEnumerable.
65、编写一个单例(Singleton)类。
public class Singleton
{
private Singleton()
{
}
private static Singleton st=null;
public static Singleton ST()
{
if (st == null)
{
st = new Singleton();
}
return st;
}
}
第二种考虑了线程安全,不过有点烦,但绝对是正规写法,经典的一叉
public class Singleton
{
private volatile static Singleton _instance = null;
private static readonly object lockHelper = new object();
private Singleton(){}
public static Singleton CreateInstance()
{
if(_instance == null)
{
lock(lockHelper)
{
if(_instance == null)
_instance = new Singleton();
}
}
return _instance;
}
}
72、post、get的区别
post可以提交大量数据,get只能提交少量数据,get提交的参数会显示在浏览器地址栏,post不会显示,相对来安全。get提交会被搜索引擎抓取,post不会。
73、AJAX解决什么问题?AJAX有什么问题需要注意?
Ajax解决页面无刷新问题,提高了用户体验度,ajax最大的问题,就是无法跨域请求,也就是无法在当前页面中向和当前不同域名的页面发生请求,可在当前页面所在域的服务端做代理页面的方式解决。
//不用任何框架编写一个AJAX程序。XHR:XmlHttpRequest。
84、Application 、Cookie和 Session 两种会话有什么不同?
Application是全局是用来存取整个网站的全局信息,session是用来存取某个访问者的关联信息,存在服务端,相对安全,cookie是存在客户端,只能存在少量数据。机密信息不能用cookie保存。
86、你对.net的GC的理解
Gc是垃圾回收器是对内存资源的自动释放。但是对于非托管资源的释放,需要程序员调用dispose手动释放,比喻FileStream和SqlConnection
附(托管跟非托管的区别):托管就是在.net框架下,能被CLR管控的,比喻程序分配的对象,变量名。反之则是非托管比喻文件流操作,数据库连接。
87、请写一个SQL语句:从user表中取出name列中的起始字符是“北京”的全部记录
select * from [user] where name like '北京%'
88、请你简单的说明数据库建立索引的优缺点
首先优点是,查询速度快,缺点是,每次插入数据的时候的,都会建一个索引,相对来说,效率低,,而且占用磁盘空间。。
89、如何提高.NET性能?
第一,尽量不要再循环体里面声明变量。
第二,使用 try -catch -finally 的时候如果有资源需要释放,一定更要在finally里面释放。
第三,不要使用ArrayList集合
90、什么是事务。
事务包括:
原子性:就是对数据库的操作要么全部执行,要么全不执行。
一致性:就是数据库前后的数据要一致。
隔离性:一个事务执行不被其它事务干扰。
持久性:数据一旦被提交,将永久写入硬盘。
107、Http状态码各是什么意思。
301:永久重定向 302:重定向 404:找不到页面 500:服务器内部错误
110、Session有什么重大BUG,微软提出了什么方法加以解决?(常考)
iis服务器有回收机制,和系统繁忙也回丢失Session,这样用户就要重新登录,添加购物车。解决这一办法,提供了Sql server,和state server 。state server还解决Session共享问题。
state server:首先开启asp state server服务。然后在web.config里面设置state server model="state server" 设置ip端口,
sql server:就是把session存在数据库,也是在web.config里面设置state server model="sql server"
111,ajax中get和post的区别
首先get只能传送少量数据,但是它执行效率高,安全低,会被缓存。反之post 可以传送大量数据执行效率慢,安全高,不会被缓存。
112,asp.net中身份验证的方式
windows验证,Forms验证和Passport验证.
113,.net什么是配件
程序集。(中间语言,源数据,资源,装配清单)
114,什么事应用程序域
应用程序域的本质的一种隔离,就是应用程序中运行的代码不能访问其他应用程序的代码和资源。
115,O/R Mapping原理
ORM指的是面向对象的对象模型(实体)和(数据库中的表)关系型数据库的数据结构之间的相互转换。
116,c#中const与readonly区别
readonly 允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值。
const 的概念就是一个包含不能修改的值的变量。
117,ASP.net mvc的好处
mvc是一种思想,就是把相关代码分开写而已,比喻界面,模型,逻辑分开写而已,这样代码就不会很乱,也好维护,我觉得MVC最大的好处就是方便管理代码
118,你采用什么样的方式和策略实现系统缓存
缓存分为:页面缓存,数据源缓存,自定义缓存
页面缓存:就是一个页面的内容不经常变的情况,我们采用页面缓存。(<% OutputCache Duration="15" VaryByParam="none"%>)
数据源缓存:就是有的SQL语句执行耗时,对数据的及时性,要求不高的,我们可以采用数据源缓存。
自定义缓存:就是设置Cache.add();参数包括键,值。依赖关系,相对过期时间。
缓存好处,减轻服务器压力。
119,xml中的xmlDocument跟xmlReader有什么区别?
xmlDocument用于读取操作和修改文档,xmlReader类也读取XML,但是它无法编辑属性值,或元素内容,或无法插入和移除节点。
120,什么叫反射?
第一:可以读取物理文件程序集中的代码内容
第二:可以根据类名动态创建类的对象。
第三:可以在程序运行时,动态获得对象的信息(方法.属性.字段,索引)
第四:可以根据成员名称(字符串)来调用对象里,对应的成员。
121,datalist 和gridview 还有datagridview什么区别 在线等
gridview :功能很强大,提供分页,编辑,删除,缺点:占用资源,它的分页把整个表的数据都读出来了。
datagridview:多种数据显示方式。
datalist:比较好控制样式。没有自带分页。
122,常用调用webservice的方法有哪些
1,用wsdl.exe;
123,存储过程跟函数的区别
--储存过程需要单独执行,函数可以随处调用。。
函数有限制只能返回一个变量,而存储过程可以返回多个。并且函数是可以嵌入在SQL中使用,可以在select等SQL语句中调用,而存储过程不行。

浙公网安备 33010602011771号