从网上收集了一些面试题,发现自己对很多都是半懂不懂的样子,还是要多努力呀!这套也只是初级的东西,看看自己能答对几个。网上的一些参考答案太差劲了,如果按照他们的答案,估计及格都成问题。
1、面向对象的思想主要包括什么?
答:面对对象的思想主要包括封装、继承与多态三个特性。封装是指一个类只对外公开一些(属性与方法)接口,以供调用者可以使用其提供的服务,但其具体的实现却是隐藏的。对调用者而言只需要知道这些接口就可以找到自己需要的服务,而无需得知道服务提供者是如何提供服务的,它反应了事物的相对独立性与实现的隐藏性。继承是指从一个类可以派生出另外一个类,如从A类派生出B类,前者为父类,后者为子类。子类拥有父类的属性与形为,同时可以进行扩展。继承最后表现出结果是一棵树,对父类的修改直接影响其子类。多态性与继承相关,一个类的派生类可以转换为其父类,换句话说如果你有一个类家族,那对这个类家族的顶级类的操作同样适用于这个类家族中的任何一个子类,因为任何一个子类都能转换为其父类,这样最后的结果是因为不同的子类有不同的实现而出现不同的操作结果,这就是多态的概念。
2、什么是ASP.net中的用户控件?
答:用户控件是扩展名为.ascx的文件,其封装了WEB程序页面中的一部分UI与操作并自行提供呈现,其创建方法与页面的创建方法几乎是一样的,所以用户控件创建与使用是足够简单的,别一方面因为用户控件允许创建属性与事件,所以其功能也是强大的。
3、什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
答:应用程序域是一种隔离边界,.net公共语言运行库使用它来对不同的应用程序进行隔离,从而保证一个程序在运行时的行为可知且安全(因为不同应用程序域中的程序不能直接互相通信)。比如,一台WEB服务器通常驻留不只一个WEB应用程序,通过使不同的应用程序处于不同的应用程序域中,可以预防一个WEB程序出现问题而影响其它WEB应用程序的运行。受管制代码指的是以公共语言运行库为目标的代码,即manage code(不知道这两个写的对不对),也被称为托管代码。它基于.net的元数据格式,并运行于.net环境下,之所以称之为安全代码,是因为公共语言运行库在运行托管代码时,运行库除了负责满足程序可能具有的依赖项外,还负责管理内存分配、启动和停止线程和进程,以及强制执行安全策略。强类型系统本人不甚清楚,等弄明白了之后补上。装箱指的是将一个值类型转换为引用类型,拆箱与之相反。重载指的是一个方法在一个类中可以存在不同版本(即方法名可以相同),只要其方法签名不相同即可,调用时根据传递的参数类型与个数进行自动匹配。CTS即通用类型系统,是公共语言运行库支持多语言的一个重要组成部分。通用类型系统支持绝大部分编程语言中存在类型与操作,这为公共语言运行库支持众多不同的编程语言提供了必要的条件。CLS即公共语言规范,它是CTS可以说是.net中不同语言互相集成的基础。简单的说CLS定义了一组规范,该规范规定了不同语言间互相操作时所要遵守的规则。CLR即公共语言运行库,.net的核心东西,也是.net程序员最常听到的术语,公共语言库通过元数据即中间语间为托管代码提供各种服务,如代码访问安全性、对象生存周期管理、调试与分析支持等,这也是为什么说托管代码是基本于.net元数据的原因。
4、列举一下你所了解的XML技术及其应用
答:XML在很多地方都有应用,Ajax、Webservice以及近来的RSS中等。
5、值类型和引用类型的区别?写出C#的样例代码。
答:值类型直接包含其值,引用类型则包含的不是其具体的值,而是其值在内存中位置指针,并且值类型与引用类型其值存储的位置是不一样的:值类型的值存储在堆栈或内联结构上,而引用类型的值存储在堆上。值类型与引用类型是通用类型系统中的两种不同类型。
6、ADO.net中常用的对象有哪些?分别描述一下。
答:ADO.NET中常的对象主要有以下几个:
1、数据库连接对象SqlConnection与OleDbConnection:这两个对象用于连接并打开数据库。
2、命令对象SqlCommand与OleDbCommand:这两上对象表示所要对数据库执行的操作命令,即Sql语句或存储过程。
3、数据读取对象SqlDataReader与OleDbDataReader:以只读方式访问返回的数据集。
4、适匹器对象SqlDataAdapter与OleDbDataAdapter:用于获取或更新数据。
5、数据集DataSet:用于保存获取到的关系数据集及其约束和相互间的关系。
6、数据集DataTable:DataSet中的一个表。
以上东西尽管是最常用的,但本人很少直接使用这些东西。
7、如何理解委托?
答:委托提供了动态调用某些特定方法的接口,只要这些方法的签名与委托匹配。委托可以形成链,这样,可以开启对多个方法的调用,在.net中委托是事件的处理机制。(很多书上都说相当于C++中的函数指针,我就想,如果有人不知道什么是函数指针,那又该怎么理解委托呢?)
8、C#中的接口和类有什么异同。
答:接口是一个标记,自身不提供实现,继承它的类必须实现其定义的属性与方法(除非这个类也是抽象的),且接口内不能定义实例构造函数(因为接口不能被实例化)。一个类则可以自己拥有全部的实现,其定义的成员不一定都要是公共的,并且类可以定义自己的实例构造函数。
9、NET中读写数据库需要用到哪些类?他们的作用
答:这跟第6题有点类似。
10、UDP连接和TCP连接的异同。
答:这个好像问的有点奇怪,UDP(用户数据报协议)不建立连接,TCP在信息传递前要先建立连接。
相比而言,UDP传递的数据量小而快,但不可靠、不安全。
11、ASP.net的身份验证方式有哪些?分别是什么原理?
答:asp.net中有三种身份验证方式(我记得好像就是三个),分别是Windows集成身份验证、Form表单验证与Passport身份验证。Windows身份集成验证是利用IIS设置进行身份验证(通常用于局域网内),Form表单验证是基于Cookie,它利用Cookie存储用户的标识,并将未验证的用户自动重定向到指定的登录页面。Passport身份验证就是Microsoft的集中身份验证服务(要向微软交钱才能使用吧!)。
12、进程和线程分别怎么理解?
答:进程是操作系统进行资源分配与调度的一个基本的独立的单位,拥有独立的内存区域(资源)。每个应用程序都会开启至少一个进程,每个进程中至少包含一个线程,它是进程中的一个执行单元,自身不能独立运行,同时,线程是CPU进行调度和时间分配的基本单位,且多个线程可共享内存。相比而言,线程的速度要更快、所需要资料更少、CPU调度更快,所以线程也被叫做轻型进程。
13、什么是code-Behind技术。
答:在传统asp中,WEB页面的UI与逻辑都是写在一个页面里而无法分开。这种编写代码方式的最大弊端就是一旦UI有所变动,逻辑几乎是不可避免的也要进行修改,或者逻辑有所变动,UI也几乎也是不可避免的要进行改动,同时这种混合的方式暴露了程序的实现逻辑。asp.net解决了这些问题。asp.net中采用了页面“继承”的方式,即前台页面.aspx文件通过其页面指令@Page继承后台.cs文件,这样,不仅将WEB页面的UI与逻辑分开,同时在程序编译后,其实现逻辑也被隐藏,以.dll文件代替。asp.net中的这种程序编写方式就被叫做code-Behind技术。
14.活动目录的作用。
15、net中读写XML的类都归属于哪些命名空间?
答:都属于System.Xml命名空间。
16、解释一下UDDI、WSDL的意义及其作用。
17、什么是SOAP,有哪些应用。
答:SOAP即简单对象访问协议,用于在分布式环境中交换信息的简单协议,基于XML。Web Service就是使用该协议进行信息传递的。
18、如何部署一个ASP.net页面。(不明白该题想表述什么问题)
19、如何理解.net中的垃圾回收机制。
答:.net的垃圾回收机制又被叫做“分代的垃圾回收”。垃圾回收就是从内存中寻找不再使用的对象,将其移除并对内存区域进行重新划分。在.net中被分配在内存中的对象分为三个级别,1、2、3(级)代。处于第1代的是最近被分配的内存的对象,它们通常很小且生命周期很短。经过一轮垃圾回收后,这一代的对象很多都被从内存中移除,还有被引用的对象则移到下一代。再过一轮(假设对第一代内存回收没有得到足够的内存,会对第2代对象进行垃圾回收),继续留在第2代的对象将被移动第3代,这个级别中的对象通常是生命周期很长的对象。很显然,对第1代的对象进行垃圾回收是最有收获的。如果在第1代上已经没有可以被分配的内存,那么就在第1代上引发垃圾回收,在这个级别上的垃圾回收是最快的。如果在第一代上进行了垃圾回收但仍不能满足内存需要时,那么就在第二代对象上引发垃圾回收。在第3代对象上进行垃圾回收是最后的选择(如果在第1代与第2代码对象上进行了垃圾回收任得不到需要的内存),因为对3代对象进行回收的代价相对而言是最大的。
20、常用的调用webservice方法有哪些?
答:1、利用VS的“添加Web引用”命令来调用一个Web Service。2、利用webservice.htc调用Web Service(没玩过)
相关链接:
垃圾回收:http://hi.baidu.com/zhao%5Fe893/blog/item/1dfce21fc06826f4e0fe0b31.html