(1)private、protected、public、internal修饰符访问权限
private:私有成员,类内部
protected:保护成员,该类及继承的子类
public:公共成员,完全公开
internal:同一程序集(同一命名空间)
(2)override和重载的区别
重载是指方法名相同,但参数个数或参数类型不同,是基于同一类中
overide是重写基类的方法
(3)分层开发关系及优劣
表示层、业务逻辑层、数据访问层
优点:代码结构清晰,具有较好的扩展性
缺点:增大开发成本
(4)装箱与折箱
装箱:将值类型转为引用类型的过程,反之是拆箱
(5)CTS、CLS、CLR解释
CTS(Common Type System),通用系统类型,解决不同语言的数据类型不同的问题
CLS(Common Language Specification)通用语言规范
CLR(Common Language Runtime)公共语言运行时,包括CTS和CLS
(6).NET的编译技术
先编译为微软中间代码(MSIL),再通过JIT(Just In Time)编译成相应的平台(操作系统)代码(机器代码),这种编译方式,
实现了代码托管,能提高程序的运行效率
(7).NET读数据库需要哪些类及分别的作用
DataSet:数据存储器
DataCommand:执行语句命令
DataAdapter:数据集合,填充数据
(8)抽象类与接口的异同
异:
抽象类声明关键字是abstract,接口为interface
只能继承一个抽象类,但可以实现多个接口
需用overide实现抽象方法,接口则是直接实现
同:
不能实例化
包含未实现的方法
派生类必须实现未实现的方法
(9)堆和栈区别
栈是编译器自动分析,如定义的变量
堆是由程序员分配,如new一个对象时
(10)GAC的含义
全局程序集缓存(Global Assembly Cache)
(11)DataReader和DataSet的区别
DataReader只能向前的只读游标
DataSet是内存中的表
(12)软件开发的几个阶段
需求分析---架构设计---编写代码---测试---部署
(13)using和new关键字意义
using引用命名空间或使用非托管资源
new新建实例或隐藏基类方法
(14)什么是反射
动态获取程序集信息
(15)C#中的三元运算符
?:
(16)ASP.NET生命周期
页面请求--开始--页面初始化--加载--验证--回发事件处理--呈现--卸载
(17)&与&&
&是位运算符,&&是逻辑运算符
(18)面向对象的特征及特性
封装:保证对象自身数据的完整性、安全性
继承:建立类之间的关系,实现代码重用,方便系统扩展
多态:相同的方法调用可实现不同的实现方式(不同对象执行同一方法,方法处理细节不同,而导致最终结果不同)
(19)虚方法与抽象方法区别
虚方法virtual修饰,抽象方法用abstract
虚方法要有方法体,抽象方法不允许有方法体
虚方法可以被子类override,抽象方法必须被子类override
虚方法除了密封类(sealed)都可以写,抽象方法只能在抽象类中
(20)类与对象关系
类是对象的抽象,对象是类的具体实例;类是抽象的,不占用内存,而对象是具体的,占用储存空间
(21)能用foreach遍历访问的对象需要实现IEnumerable接口或声明GetEnumerator方法的类型
(22)析构函数 ~ClassName,一个类只能有一个析构函数,没有修饰符、参数,不能继承、重载,无法调用,是被自动调用
(23)向服务器发送请求有几种方式? get/form/head
(24)请解释asp.net中的数据绑定与传统数据绑定有什么区别?方便、简单、减少手工代码编写,显示效果也很美观
(25)Web控件?有哪些优势?实现了System.Web.UI.WebControls这个命名空间的类,包括ASP.NET服务器控件、用户控件、自定义控件;提高代码复用性,提高开发效率
(26)正则表达式的意义?善用正则表达式可以高效的处理字符串
(27)ASP.NET相对ASP的优势?定义Web Form模型提高了开发速度,编译执行的模式,提高了运行效率
(28)怎样理解静态变量?静态变量在类的多个实例之间共享。可以用来完成类的实例数统计等工作
(29)请解释转发与跳转的区别?
转发:HttpServerUtility.Transfer(); 对于当前请求,终止当前页的执行,并使用指向一个新页的指定URL路径来开始执行此新页。可以清除QueryString和Form集合;跳转:HttpResponse.Redirect(); 将客户端重定向到新的URL并指定该新URL,默认不终止当前页的执行
(30)请解释接口的显式实现有什么意义?显示实现是通过使用接口的完全限定名来实现接口成员的。如果类或者结构继承了多个接口,那么接口中相同名称成员就要显式实现
(31)请解释ASP.NET中button、linkbutton、imagebutton及hyperlink这四个控件之间的区别
HyperLink控件立即转向目标,表单不需回发到服务器端;Button,LinkButton,ImageButton都属于服务器端的按钮类控件,它们的点击操作都会有一次PostBack
(32)请解释什么是上下文对象,在什么情况下要使用上下文对象?上下文对象是指HttpContext类的Current 属性,当我们在一个普通类(一个不是继承自Page类的类)中要访问ASP.NET服务器对象(Response, Request, Session, Server, Appliction等)时就要使用此对象。
(33)虚方法使用情况?虚方法与接口区别
基类的方法子类可以覆盖重写(有相同的功能写至虚方法中,但因某些子类处理各异,也允许重写该方法);虚方法要有方法体,可以覆盖重写,也可以直接调用,而接口必须实现
(34).net Remoting 的工作原理:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置
(35)C#中的委托是什么?事件是不是一种委托?
委托可以把一个方法作为参数代入另一个方法,委托可以理解为指向一个函数的引用。事件是一种特殊的委托
(36).NET 构架下remoting和webservice两项技术的理解以及实际中的应用。
WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率
(37)私有程序集与共享程序集有什么区别?
一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集通常存储在全局程序集缓存 (Global Assembly Cache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如.NET Framework类
(38)enum,string是值类型还是引用类型?enum是值类型,string引用类型
(39)String s = new String("xyz");创建了几个String Object?两个对象,一个是“xyx”,一个是指向“xyx”的引用对象
(40)在C#中,string str=null 与 string str=""区别 string str=null 是不给他分配内存空间,而string str=""给它分配长度为空(为0)字符串的内存空间
(41)是否可以继承String类? String类是final类,故不可以继承
(42)用Singleton如何写设计模式?static属性里面new ,构造函数private
(43)强命名程序集:强命名程序集有一个发布者的公钥/私钥对签名,其中公钥、私钥对唯一的标识了程序集的发布者。通过公钥私钥标识对我们可以对程序集进行唯一的标识、安全策略、版本策略;可以全局部署和私有部署。非强命名程序集只能进行私有部署。(.NET 框架支持两种程序集:强命名程序集(strongly named assembly)和非强命名程序集)
(44)C#中 property 与 attribute的区别
property是属性,存取类的字段;attribute是特性,是标识类、方法等附加特性
(45)Heap和stack区别
heap是堆,是手动操作分配内存和释放;stack是栈,是由系统自动分配和释放内存内容
(46)HashMap和Hashtable区别
HashMap是Hashtable的轻量级实现,非线程安全的实现他们都实现了map接口,主要区别是HashMap键值可以为空null,效率可以高于Hashtable
(47)托管代码与非托管代码
托管代码:使用CLR编译语言编辑器开发编写的代码就叫托管代码,由公共语言运行库环境执行的代码
非托管代码:在公共语言运行库环境外部,由操作系统直接执行的代码