.net
1、 ASP.NET里命名空间的定义;
答:命名空间是类的逻辑分组,它组织成一个层次结构——逻辑树。这个树的根是System。
在ASP.NET页面中,可以默认的使用某些命名空间中包含的类,称做标准的ASP.NET命名空间。对于其他命名空间,则必须显式地导入
2、 .net中类与对象的关系;
答:万物都是对象,而类是对象的一个编程语言概念上的描述
3、 IspostBack的作用,当其值为TRUE或FALSE时的作用;
答:IspostBack可以防止每次加载页面时都绑定一些数据,第一次加载页面时IspostBack的值是false,以后每次加载页面时都是true
4. CLR、CTS、CLS分别是什么意思?
共公语言运行库,通用类型系统,公共语言规范
5. 什么是基元类型?
由编译器直接支持的数据类型称为基元类型.
6、简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。
remoting是.net中用来跨越machine, process, appdomain 进行方法调用的技术,对于三成结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的DCOM Web Service是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。Web Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型;
7 .请解释ASP。NET中以什么方式进行数据验证;
非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件
8. WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。
在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件
9. WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
可以调用
例如:
10. 请解释ASP.NET中的web页面与其隐藏类之间的关系?
一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下
<%@ Pagelanguage="c#" Codebehind="Tst1.aspx.cs"AutoEventWireup="false" Inherits="T1.Tst1" %>
Codebehind="Tst1.aspx.cs"表明经编译此页面时使用哪一个代码文件
Inherits="T1.Tst1"表用运行时使用哪一个隐藏类
11. 什么是viewstate,能否禁用?是否所有控件都可以禁用?
Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用:
12. 当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决
很有可能是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断
13. 请解释什么是上下文对象,在什么情况下要使用上下文对象
上下文对象是指HttpContext类的Current 属性,当我们在一个普通类中要访问内置对象 (Response,Request,Session,Server,Appliction等)时就要以使用此对象
14. 请解释转发与跳转的区别?
转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面
跳转就是指客户端的跳转
15.请简述一下用Socket进行同步通讯编程的详细步骤
1、在应用程序和远程设备中使用协议和网络地址初始化套接字
2、在应用程序中通过指定端口和地址建立监听
3、远程设备发出连接请求
4、应用程序接受连接产生通信scoket
5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)
6、通讯结束,关闭应用程序和远程设备的Socket回收资源
16. 请解释web.config文件中的重要节点
appSettings包含自定义应用程序设置。
system.web 系统配置
compilation动态调试编译设置
customErrors自定义错误信息设置
authentication身份验证,此节设置应用程序的身份验证策略。
authorization授权, 此节设置应用程序的授权策略.
17 .列举ASP.NET 页面之间传递值的几种方式。
1. 使用QueryString,如....?id=1; response. Redirect()....
2.使用Session变量
3.使用Server.Transfer
18.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
session(viewstate) 简单,但易丢失
application 全局
cookie 简单,但可能不支持,可能被伪造
input ttype="hidden" 简单,可能被伪造 :
url参数简单,显示于地址栏,长度有限 :
数据库稳定,安全,但性能相对弱:
19.override与重载的区别
Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数
20、.net的错误处理机制是什么
try{可能要出错的代码}
catch{扑捉到错误后的处理}
finally{不论代码是否出错都要执行}
21、C#中接口和类的异同
接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念! 而类是负责功能的具体实现! 在类中也有抽象类的定义,抽象类与接口的区别在于:
抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。 但接口是一个行为的规范,里面的所有东西都是抽象的! 一个类只可以继承一个基类也就是父类,但可以实现多个接口
22、DataReader和DataSet的异同
DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作;
23. 在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
Using 引入一个名子空间,或在使用了一个对像后自动调用其IDespose,New 实例化一个对像,或修饰一个方法,表此方法完全重写此方法;
24.谈谈类和结构的区别?
1.结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型
类是引用类型:引用类型在堆上分配地址 堆栈的执行效率要比堆的执行效率高可是堆栈的资源有限,不适合处理大的逻辑复杂的对象所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑
2.继承性
结构:不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed .
类:完全可扩展的,除非显示的声明sealed 否则类可以继承其他类和接口,自身也能被继承
注:虽然结构不能被继承 可是结构能够继承接口,方法和类继承接口一样
3.内部结构:
结构:
没有默认的构造函数,但是可以添加构造函数
没有析构函数
没有 abstract 和 sealed(因为不能继承)
不能有protected 修饰符
可以不使用new 初始化
在结构中初始化实例字段是错误的
类:
有默认的构造函数
有析构函数
可以使用 abstract 和 sealed
有protected 修饰符
必须使用new 初始化
25.什么是SOAP,有哪些应用。
答:SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。这种相互通信采用的是XML格式的消息,具体请看:http://playist.blogchina.com/2521621.html
26.常用的调用webservice方法有哪些?
可以从浏览器、ASP页或其他WEB服务调用可以使用HTTP-GET HTTP-POST访问WEB服务也可以从ASP页或其他WEB服务向其他WEB服务发出SOAP请求GET、POST SOAP 使用WEB服务代理
27. 私有程序集与共享程序集有什么区别?
一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集通常存储在全局程序集缓存(Global Assembly Cache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如.NET Framework类。
28. 请解释进程与线程的区别?进程与程序的区别?
一般,一个应用程序对应于一个或多个进程,可以把进程看作是该应用程序在*作系统中的标识;而一个进程通常由多个线程组成,而线程是*作系统为该应用程序分配处理时间的最小单元。
29. CLR与IL分别是什么含义?
CLR:公共语言运行时,类似于Java中的JVM,Java虚拟机;在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是CLR,CLR将直接与*作系统进行通信,而编程语言如C#.NET将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性,可以这样看:CLR就是具体的编程语言如:C#.NET与*作系统之间的翻译,同时它为具体的编程语言提供了许多资源:
IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;所有.NET源代码(不管用哪种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时(Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。
30.什么叫做SQL注入,如何防止?请举例说明。
利用sql关键字对网站进行攻击。过滤关键字'等
31.请叙述类与结构的区别。
1)、结构是值类型;
2)、结构不支持继承;
3)、结构不能定义默认的构造函数;
4)、结构不能定义析构函数;
5)、结构不能使用初始值设置域值。
32. ASP.net的身份验证方式有哪些?分别是什么原理?
术语 |
定义 |
Windows |
提供有关如何将 Windows 身份验证与 Microsoft Internet 信息服务 (IIS) 身份验证结合使用来确保 ASP.NET 应用程序安全的信息。 |
Forms |
提供有关如何使用您自己的代码创建应用程序特定的登录窗体并执行身份验证的信息。使用 Forms 身份验证的一种简便方法是使用 ASP.NET 成员资格和 ASP.NET 登录控件,它们一起提供了一种只需少量或无需代码就可以收集、验证和管理用户凭据的方法。有关更多信息,请参见使用成员资格管理用户和ASP.NET 登录控件概述。 |
Passport |
提供有关由 Microsoft 提供的集中身份验证服务的信息,该服务为成员站点提供单一登录和核心配置文0件服务。 |
33..请问: String类与StringBuilder类有什么区别?为什么在.Net类库中要同时存在这2个类?(简答)
如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。
34.请叙述属性与索引器的区别。
属性 索引器
通过名称标识 通过签名标识。
通过简单名称或成员访问来访问。 通过元素访问来访问。
可以为静态成员或实例成员。 必须为实例成员。
属性的 get 访问器没有参数。 索引器的get访问器具有与索引器相同的形参表。
属性的 set访问器包含隐式valu参数。 除了value参数外,索引器的 set 访问器还具有与索引器相同的形参表。
35.请叙述const与readonly的区别。
每一个class至多只可以定义一个static构造函数,并且不允许增加访问级别关键字,参数列必须为空。为了不违背编码规则,通常把static数据成员声明为private,然后通过statci property提供读写访问。
const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。
const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。
const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。
readonly在运行期评估赋值,使我们得以在确保“只读访问”的前提下,把object的初始化动作推迟到运行期进行。
readonly 关键字与 const 关键字不同: const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const字段是编译时常数,而 readonly 字段可用于运行时常数。
readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。
36.重载与覆盖的区别
1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。
2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
3、覆盖要求参数列表相同;重载要求参数列表不同。
4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。
37、在C#中,stringstr = null 与 string str = “ ”。
string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间.
38. Internal修饰符有什么含义?
internal数据访问修饰符,表示对所修饰的成员在当前程序集内可以进行没有任何限制的访问;但在当前程序集外部则不能进行访问,其可访问性级别低于public ,高于protected。
39. JAVA的代码是半编译半解释的,C#的代码是否也是这样
C#中对于程序代码的处理很类似于Java中的程序代码处理机制;也可以称作半编译半解释,具体为:所有.NET源代码(不管用哪种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时(Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。
40. 私有程序集与共享程序集有什么区别?
一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集通常存储在全局程序集缓存(Global Assembly Cache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如.NET Framework类。
41. 请解释进程与线程的区别?进程与程序的区别?
一般,一个应用程序对应于一个或多个进程,可以把进程看作是该应用程序在*作系统中的标识;而一个进程通常由多个线程组成,而线程是*作系统为该应用程序分配处理时间的最小单元。
42. CLR与IL分别是什么含义?
CLR:公共语言运行时,类似于Java中的JVM,Java虚拟机;在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是CLR,CLR将直接与*作系统进行通信,而编程语言如C#.NET将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性,可以这样看:CLR就是具体的编程语言如:C#.NET与*作系统之间的翻译,同时它为具体的编程语言提供了许多资源:
43. 对象能否调用静态方法
不能。对于类内部定义的静态变量及静态方法,该类的对象均不能调用。
44 .请解释ASP.NET中以什么方式进行数据验证
Aps.net 中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件
45. WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。
在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件
自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到服务端只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件
46. 什么是viewstate,能否禁用?是否所用控件都可以禁用?
Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用
47. 请解释什么是上下文对象,在什么情况下要使用上下文对象
上下文对象是指HttpContext类的Current 属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction,page,cache,context,trace)时就要以使用此对象
48.什么是ASP.net中的用户控件,他和自定义控件的区别?
用户控件就是.ascx扩展名的东西,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.
1、用户控件只能在当前项目中使用,而自定义控件可以在多个项目中重复使用
2、自定义控件最终编译成动态连接库形式,使用自定义控件时,可以在项目中直接添加对该动态库的引用,然后通过代码创建该自定义控件
3、如果自定义控件从已有的控件继承而来,则可以在已有的控件的OnPaint事件中重绘该控件的外观
49.列举一下你所了解的XML技术及其应用
xml可以用来做网页(xslt)
xml可以当作数据库
xml可以用来保存对象的系列化(web服务好象是基于这个的)
50.ADO.net中常用的对象有哪些?分别描述一下。
Connection 数据库连接对像
Command 数据库命令
DataReader 数据读取器
DataSet 数据集
51如何理解委托?
委托类似于 C++ 函数指针,但它是类型安全的。
委托允许将方法作为参数进行传递。
委托可用于定义回调方法。
委托可以链接在一起;例如,可以对一个事件调用多个方法。
52..net中读写数据库需要用到哪些类?他们的作用
Configuration,Sqlconnection,Sqlcommand
53.UDP连接和TCP连接的异同。
UDP 传输速度快但不安全
TCP 传输速度相比UDP而言慢一些 但是安全
54.什么是code-Behind技术。
ASPX,RESX和CS三个后缀的文件,这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理
55.如何理解.net中的垃圾回收机制。
在.NET与J2EE中的垃圾回收不同,在J2EE中,垃圾回收要写一大堆代码来处理,但是。NET中将会自动处理。垃圾回收就是将占用在内存中用不到的东西回收从而释放内存。
56.概述反射和序列化
反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性
序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。
57.概述o/r mapping 的原理
利用反射,配置 将类于数据库表映射
58.用sealed修饰的类有什么特点
sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其它类的基类,则会发生编译时错误。
密封类不能同时为抽象类。
sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。
59.概述.NET里对remoting 和 webservice 两项技术的理解和实际中的应用。
远程逻辑调用,remoing接口只能用在.net中
60. EXE与DLL之间的区别?
EXE可以直接执行,DLL是动态链接库,不能被直接执行,附加到某个进程中才能执行.
61 什么是强类型,什么是弱类型,那种更好些为什么?
强类型Java,C#, 强类型在一块内存上定义了某种类型之后无法改变起类型的,例如string str;那么str不能当作int类型来使用,可以使用强制类型转化,弱类型:javascript,弱类型把一块内存上定义为多种类型
62.阐述面向接口、面向对象、面向方面编程的区别
面向接口:通过接口规范对象的行为,它属于面向对象的一部分
面向对象:继承,封装,多态 特点:代码好维护,安全,隐藏信息
面向方面编程:将不同模块中的相似之处分离出来,在集合成一个“方面”
63.property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
Property:是一个方法是GET和SET的组合,一个是读,一个是写。
Attribute :是一个对象,作用在于两个方面。一个是影响编译器的形为,另一个是把描述信息写入Assembly中。
64.你对web service的体会?
答:如果自己写的一些程序也希望别人可以通过Web服务来使用,也可以把自己编写的方法贴上标签[WebMethed]来实现Web 服务。[是当编写程序时,希望实现一些别的网站已经实现过的,也用Web服务可视成XML语言的编码。可以使用别人的编码生成的XML找到自己需要的信息,来实现自己编写的程序的一些功能。
65. What is the Com+? How does it work?
com+(componment object model)它解决了两个工作中的问题:
1,在以前,如果多个应用程序要使用一个函数,那么这个函数需要放在多个可执行文件中,既占用了大量的空间,
2,当函数发生问题时,需要修改每一个可执行文件中的函数,这样就浪费了大量的时间
当你使用了com+以后,这些问题应刃而解,它的好处就是可以提高的代码的重用,有利于分布式开发,而且互相不会影响
而且它可以进行事务处理,可以保证数据可一至性,准确性,它一般会用在多个数据源的事务中,它可以保证数据的正确,一直;
它的缺点: 版本号问题,详细地计划必须有;
66.讲一讲你理解的web service,在.netframework中,怎么很好的结合xml?
Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API. 是自包含、自描述、模块化的应用 可扩展的标记语言XML,是Web Service平台中表示数据的基本格式.通过SOAP!
67.什么是弱引用、强引用?
弱引用:即在引用对象的同时仍然允许对该对象进行垃圾回收。
强引用:垃圾回收堆可管理所有对象类型。此堆可监视对象的整个生存期,并且仅当程序的任何部分都不引用这些对象时才将其释放
68.参数传值和参数传引用的区别
把值作为参数传递时,不会影响到原函数中变量的值,实际上是将该变量值的副本传递给调用的函数,
而用ref关键字进行参数传引用时,传递是变量的地址,类似指针的概念.
69.ASP。NET与ASP相比,主要有哪些进步?
asp解释形、它是依赖于浏览器 asp.net编译型、可以和后台代码是分开的、不依赖与浏览器;
70.什么是WEB控件?使用WEB控件有那些优势?
从System.Web.UI.Control继承下来的都是Web控件。优势是减少页面复杂度,控件具有重用性。
71.大概描述一下ASP。NET服务器控件的生命周期
答:初始化 加载视图状态 处理回发数据 加载 发送回发更改通知 处理回发事件 预呈现 保存状态 呈现 处置 卸载
72.什么是内存泄漏,怎样最简单的方法判断被存泄漏 ?
内存被分配,但没有被释放,就是内存泄露。在任务管理器里面看到程序占用内存越来越多,却没有减少的迹象,很可能就发生了内存泄露。
73.如果出现ASP。NET中的事件不能触发可能由于什么原因造成?
可能是表单嵌套,或是事件的委托掉了。
74.请解释接口的显式实现有什么意义?
1.由于显式接口成员实现不能通过类或结构实例来访问,因此它们就不属于类或结构的自身的公共接口。当需在一个公用的类或结构中实现一些仅供内部使用(不允许外界访问)的接口时,这就特别有用。
2.显式接口成员实现可以消除因同时含有多个相同签名的接口成员所引起的多义性。如果没有显式接口成员实现,一个类或结构就不可能为具有相同签名和返回类型的接口成员分别提供相应的实现,也不可能为具有相同签名和不同返回类型的所有接口成员中的任何一个提供实现。
75.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
答:JavaScript / Cache / QueryString/数据库/全局变量/cache缓存技术
76.你对微软.net企业库了解?都包括那些模块?
缓存(Caching):允许开发人员在程序中合并一个本地缓存器。
配置(Configuration): 允许程序读入和编写配置信息。
加密(Cryptography):允许开发人员在程序中使用加密技术和信号功能。
数据访问(Data Access):允许开发人员在程序中使用标准的数据库功能。
异常处理(Exception Handing):允许开发人员和规范制定者建立一套用于 处理异常的统一策略。
日志和规范应用程序(Logging and Instrumentation ):允许开发人员在程序中加入日志和规范应用程序。
安全性(Security):允许开发人员在程序中包括安全性功能。程序可以在不同的情况下使用到安 全性,比如鉴别和批准用户访问数据库,获得任务信息,以及缓存用户信息。
77.传入某个属性的set方法的隐含参数的名称是什么?
Value,它的类型和属性所声名的类型相同。
78.如何在C#中实现继承?
在类名后加上一个冒号,再加上基类的名称。
79.C#支持多重继承么?
类之间不支持,接口之间支持。类对接口叫做实现,不叫继承。
80.被protected修饰的属性/方法在何处可以访问?
在继承或间接继承与这个类的子类中可以访问。
71.私有成员会被继承么?
会,但是不能被访问。所以看上去他们似乎是不能被继承的,但实际上确实被继承了。
能够将非静态的方法覆写成静态方法么?
不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改为override。
82.可以覆写私有的虚方法么?
不可以,甚至子类中无法访问父类中的私有方法。
83.能够阻止某一个类被其他类继承么?
可以,使用关键字sealed。
84.能够实现允许某个类被继承,但不允许其中的某个方法被覆写么?
可以,标记类为public,并标记方法为sealed。
85.什么是抽象类(abstract class)?
一种不可以被实例化的类。抽象类中一般含有抽象方法,当然也可有具体实现。继承类只有实现过所有抽象类的抽象方法后才能被实例化 。
86.何时必须声明一个类为抽象类?
当这个类中包含抽象方法时,或是该类并没有完全实现父类的抽象方法时。
87.接口(interface)是什么?
只含有共有抽象方法(publicabstract method)的类。这些方法必须在子类中被实现。
88.为什么不能指定接口中方法的修饰符?
接口中的方法用来定义对象之间通信的契约,指定接口中的方法为私有或保护没有意义。他们默认为公有方法。
89.const和readonly有什么区别?
const可以用于局部常量,而readonly,实际是类的initonly字段,显然不能是局部的。
90.通过超链接怎样传递中文参数?
用URL编码,通过QueryString传递,用EnCode编码用DeCode解码
91ADO.NET相对于ADO等主要有什么改进
1:ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序,
2:不使用com
3:不在支持动态游标和服务器端游
4:,可以断开connection而保留当前数据集可用
5:强类型转换
6:xml支持
92.C#中的委托是什么?事件是不是一种委托?
委托是一个可以对方法进行引用的类,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用。这样,委托就等效于一个类型安全函数指针或一个回调。事件是一种委托
93.XML 与 HTML 的主要区别
1. XML是区分大小写字母的,HTML不区分。
2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略
或者之类的结束 标记。在XML中,绝对不能省略掉结束标记。3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用 查找结束标记了。
4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。
5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。
XML:存储数据,相当一个简易的数据库。区分大小写字母的,
HTML:显示数据,不区分大小写。
94.Session有什么重大BUG,微软提出了什么方法加以解决?
是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sateserver或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。
95.堆和栈的区别?
堆:由系统管理,随系统产生而存在。有关键字NEW
栈:依赖于线程,随时线程产生而产生,消完而消完。
共同点:都是一块存储区域。
96.&和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).
97.Collection 和 Collections的区别。
Collection:该成员支持 .NETFramework 结构,因此不适用于直接从代码中使用
Collections命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。
98Static Nested Class 和 Inner Class的不同,说得越多越好
Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
99.HashMap和Hashtable的区别。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable.
100.什么叫应用程序域?
应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。
101.什么是受管制的代码?
unsafe:非托管代码。不经过CLR运行。
托管代码:运行的。NET平台上。
非托管代码:不是运行在。NET平台上的。
102.调用WebService的方法有哪些?
1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜单选项
103..net Remoting 的工作原理是什么?
服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。
它是一个远程调用。可以用HTTP,TCP。等协议进行传输数据,而Web service只能用HTTP
104.简要谈一下您对微软.NET构架下remoting和webservice两项技术的理解以及实际中的应用。
WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。
Web 服务是通过XML传输数据,是基于XML的,所以它是跨平台的,通过HTTP协议通信。
而Remoting是基于。.net平台的,传输二进制数据,所以速度快,可以走多种协议。
Web Service通过网络提供服务,信息的传送是XML数据包,是用SOAP封装的,是通过HTTP传输的。
105.GC是什么? 为什么要有GC?
GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
System.gc() Runtime.getRuntime().gc()
106.在.net中,配件的意思是?
答:Assembly程序集。(dll.exe)(中间语言,源数据,资源,装配清单)
107 .net中读写数据库需要用到那些类?他们的作用?
答:DataSet:数据存储器。
DataCommand:执行语句命令。
DataAdapter:数据的集合,用语填充。
108.什么是虚函数?什么是抽象函数?
虚函数:没有实现的,可由子类继承并重写的函数。抽象函数:规定其非虚子类必须实现的函数,必须被重写。
虚函数:在子类可以重新定义。抽象函数:不能实现.
109.什么是强命名?
RTTI:类型识别系统。
Dll+版本号+文化背景+publickey Token组合起来就可以生成强命名程序集
110.<%=...%>与<%#... %>的区别
<% %>是服务器端脚本块;<%# %>是控件的属性被绑定到包含单个记录的表达式
111. 对WebService的体会?
答:特殊的web应用程序,http协议,80端口,按照soap协议xml协议进行封装,传递的是xml的信息
好处:跨平台,无处不到
缺点:速度慢,服务器压力大
112向服务器发送请求有几种方式?
客户端向SERVER请求有: (1)Post以表单形式提交 (2)Get 以QueryString形式提交
113.怎样理解静态变量?
静态变量随类的诞生而诞生,随类的销毁而销毁。
static 定义了静态变量,静态变量在类的实例中共享,不管有多少个实例,该类的静态变量始终只有一个。
静态变量很适合做为全局变量使用。静态变量在一定程度上破坏了OO的完整性。
114.你知道Remoting中的Singleton和Singlecall的区别吗?
答: SingleCall 每个传入的消息由新的对象实例提供服务。
Singleton 每个传入的消息由同一个对象实例提供服务。
类(class)与结构(struct)的异同&&值类型与引用类型有什么区别?
相同点:class和struct都可以定义变量、方法;
不同点:calss可以被实例化,属于引用类型,是分配在内存的堆上, 可以继承多态;
struct属于值类型, 不能继承,不能多态.是分配在内存的栈上的. 编译器在默认构造函数中将所有变量初始化,所以程序员不能定义默认构造函数等;
115.out和ref的区别
out关键字[输出型参数],指定给定的参数是一个输出参数,它也可以在函数结束时将值返回给调用的变量,out在方法调用时可以不用初始化,在返回时必须初始化。
ref关键字[引用型参数],声明为ref的参数变量传递的是指针[指向实际内存地址]的地址
区别:
1.把未赋值的变量用ref参数时非法的,而out可以.
2.在使用out时,该参数必须是看作还未赋值的,如果对一个已经赋值的变量使用out参数,则该值在函数调用的过程中,存储在该变量中的值会在执行时丢失.
116简述 private、protected、 public、internal 修饰符的访问权限。
private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。
117Application、Session、Cookie、ViewState和Cache等变量的区别是什么?
Application是公共的,所有人都能看到,所以可以用来做聊天室,
session是私有的,每个客户端都存在一个不同的session 生存期正常是20分钟,也可以自己设定为1分钟或2个小时,它存在于服务器端
cookie是保存在本机的文件,记录短小的信息,除非你让cookie过期,否则会一直存在。
viewstate类似于asp中的hidden控件,用来记录页面中的控件的状态的,主要在页面间信息传递时用,
cache是缓存,用来记录已经执行过的一些数据,比如读取数据库,目的是加速显示,减少服务器的负担,过期时间也是可以自己设定的。
118什么是装箱和拆箱?
答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。
119.什么是受管制的代码?
答:unsafe:非托管代码。不经过CLR运行。
120..net Remoting 的工作原理是什么?
答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。
121.接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concreteclass)?
答:接口可以继承接口。抽像类可以实现(implements)接口,抽像类是否可继承实体类,但前提是实体类必须有明确的构造函数。
122.是否可以继承String类?
答:String类是final类故不可以继承。
123.数组有没有length()这个方法?String有没有length()这个方法?
答:数组没有length()这个方法,有length的属性。String有有length()这个方法
124.Session有什么重大BUG,微软提出了什么方法加以解决?
答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。
125成员变量和成员函数前加static的作用?
答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。
126.软件开发过程一般有几个阶段?每个阶段的作用?
答:需求分析,架构设计,代码编写,QA,部署
127.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.
答:string inputStr=" xx xx ";
inputStr=Regex.Replace(inputStr.Trim(),"*"," ");
128.什么是虚函数?什么是抽像函数?
答:虚函数:没有实现的,可由子类继承并重写的函数。抽像函数:规定其非虚子类必须实现的函数,必须被重写。
129.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
答:一般为3层
数据访问层,业务层,表示层。
数据访问层对数据库进行增删查改。
业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。
表示层为了与用户交互例如用户添加表单。
优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。
缺点: 增加成本。
130: 什么情况用HTML控件,什么情况用WEB控件,并比较两者差别
答 客户端表现用html控件,如果想和server端交互,那么加上runat=server,它就成了服务器端控件,但它没有web控件的很多方法和属性,如果你需要用到,那么还是用web controls
131.ADO和ADO.NET的区别:
ADO使用OLE DB接口并基于微软的COM技术
而ADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系架构。
ADO以Recordset存储,而ADO.NET则以DataSet表示。
Recordset看起来更像单表,如果让Recordset以多表的方式表示就必须在SQL中进行多表连接。
反之,DataSet可以是多个表的集合。ADO的运作是一种在线方式,这意味着不论是浏览或更新数据都必须是实时的。
ADO.NET则使用离线方式,在访问数据的时候ADO.NET会利用XML制作数据的一份幅本
ADO.NET的数据库连接也只有在这段时间需要在线。
由于ADO使用COM技术,这就要求所使用的数据类型必须符合COM规范
而ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导致的数据类型转换,从而提高了整体性能。
ADO.NET为.NET构架提供了优化的数据访问模型,和基于COM的ADO是完全两样的数据访问方式。
132.new 关键字用法
(1)new 运算符 用于创建对象和调用构造函数。
(2)new 修饰符 用于向基类成员隐藏继承成员。
(3)new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型。
133.指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。
A应用程序域:
应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。
应用程序域通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。
应用程序域提供了一个更安全、用途更广的处理单元,公共语言运行库可使用该单元提供应用程序之间的隔离。
应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。
134.装箱和拆箱:
从值类型接口转换到引用类型:装箱。
从引用类型转换到值类型:拆箱。
装箱和拆箱使值类型能够被视为对象。
对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。
这使得值类型可以存储于垃圾回收堆中。
拆箱将从对象中提取值类型。
135.常用的调用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜单选项
136堆和栈的区别:
栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。
堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。
137.成员变量和成员函数前加static的作用:
它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。
分别用来反映类的状态。
比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。
138.说明一下软件开发流程?
答:分析(需要,概要,详细),开发(编程,单元测试),测试(集成测试),维护
139如果做到编码规范?
答:方法,类,变量尽量写有意义的单词。注释有写清楚,但不要罗唆
140.C#中的委托是什么?事件是不是一种委托?
答 : 委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的引用。
是,是一种特殊的委托
141能用foreach遍历访问的对象需要实现_____接口或声明_____方法的类型。
答:IEnumerable 、GetEnumerator。
142.、对数据的并发采用什么办法进行处理较好。
可以控制连接池的连接数量条件好的话 可以用负载平衡
143、DateTime是否可以为null?
不能,因为其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才能被赋值null
144、 什么叫JIT?什么是NGEN?它们分别有什么限制和好处?
Just In Time 及时编译,它是在程序第一次运行的时候才进行编译,而NGEN是所谓的pre-jit,就是说在运行前事先就将生成程序集的本机镜像,并保存到全局缓存中,适用NGEN可以提高程序集的加载和执行速度,因为它可以从本机映像中还原数代码和数据结构,而不必像jit那样动态生成它们。感觉和缓存的道理大同小异,也就是传说中的预编译。
145、Finalize()和Dispose()之间的区别?
Finalize()用于释放非托管资源,Dispose()用于释放托管资源
146. C#可否对内存进行直接的操作?(这可是个难点哦?要注意!)
答:可以,只要标记为unsafe
147:接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?
答:接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。抽象类可以提供某些方法的部分实现,接口不可以.抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。再抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。此外接口不能包含字段、构造函数、析构函数、静态成员或常量。
148谈谈final, finally, finalize的区别。
答:final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等
149三层架构的分析
答:MVC(模型-视图-控制器)
视图(View)代表用户交互界面.
模型(Model):就是业务流程/状态的处理以及业务规则的制定,业务模型还有一个很重要的模型那就是数据模型.
控制(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求.
150get 与post的区别
答:Get:是以实体的方式得到由请求URI所指定资源的信息,如果请求URI只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。
Post:用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它当作请求队列中请求URI所指定资源的附加新子项,Post被设计成用统一的方法实现下列功能:
1:对现有资源的解释
2:向电子公告栏、新闻组、邮件列表或类似讨论组发信息。
3:提交数据块
4:通过附加操作来扩展数据库
get是把参数数据队列加到提交表单ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
151、 如何实现一个自定义类的序列化
答:二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您可以将对象序列化到流、磁盘、内存和网络等等。远程处理使用序列化“通过值”在计算机或应用程序域之间传递对象。
XML 序列化仅序列化公共属性和字段,且不保持类型保真度。当您要提供或使用数据而不限制使用该数据的应用程序时,这一点是很有用的。由于 XML 是一个开放式标准,因此,对于通过 Web 共享数据而言,这是一个很好的选择。SOAP 同样是一个开放式标准,这使它也成为一个颇具吸引力的选择
152 ASP.NET中内置对象是什么?
答:在 Web 应用程序运行时,ASP.NET将维护有关当前应用程序、每个用户会话、当前 HTTP 请求、请求的页等方面的信息。ASP.NET包含一系列类,用于封装这些上下文信息。
Response 提供对当前页的输出流的访问。您可以使用此类将文本插入页中、编写 Cookie,等等。有关详细信息,请参见System.Web.UI.Page.Response 属性。 HttpResponse
Request 提供对当前页请求的访问,其中包括请求标题、Cookie、客户端证书、查询字符串等。您可以使用此类读取浏览器已经发送的内容。有关详细信息,请参见 System.Web.UI.Page.Request 属性。 HttpRequest
Context 提供对整个当前上下文(包括请求对象)的访问。您可以使用此类共享页之间的信息。有关详细信息,请参见 System.Web.UI.Page.Context 属性。 HttpContext
Server 公开可以用于在页之间传输控件的实用工具方法,获取有关最新错误的信息,对 HTML 文本进行编码和解码,等等。有关详细信息,请参见 System.Web.UI.Page.Server 属性。 HttpServerUtility
Application 提供对所有会话的应用程序范围的方法和事件的访问。还提供对可用于存储信息的应用程序范围的缓存的访问。有关详细信息,请参见 ASP.NET 应用程序状态。
HttpApplicationState
Session 为当前用户会话提供信息。还提供对可用于存储信息的会话范围的缓存的访问,以及控制如何管理会话的方法。有关详细信息,请参见 ASP.NET 会话状态。
HttpSessionState
Trace 提供在 HTTP 页输出中显示系统和自定义跟踪诊断消息的方法。有关详细信息,请参见 ASP.NET 跟踪。
TraceContext
153、请描述一下.Net架构
答:Microsoft .NET 框架是生成、部署和运行 Web 服务及应用程序的平台。它提供了一个生产率高且基于标准的多语言环境,用于将现有投资与下一代应用程序和服务集成,同时提供了解决 Internet 规模应用程序的部署和操作难题的灵活性。.NET 框架由三个主要部分组成:公共语言运行库、统一类库的分层集合和称为 ASP.NET 的 ActiveServer Pages 组件化版本
154、请描述ViewState 与Session有什么区别
答:ViewState获取状态信息的字典,这些信息使您可以在同一页的多个请求间保存和还原服务器控件的视图状态。
Session 允许通过将对象存储在 Web 服务器的内存中在整个用户会话过程中保持任何对象。
155 您要创建asp.net应用程序用于运行某公司内部的web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个http代码错误时它可以显示一个自定义的错误页面给用户。您想要花最少的代价完成这些目标,您应该怎么做?
答:在配置文件里配置
156 什么时候可以用foreach语句代替while循环?
答:要循环的实现了IEnumerable接口或实现了GetEnumerable方法的类。不知道循环条件。
157.什么是友元函数?
答:friendly声明,可以访问protect级别方法
158ASP。NET页面生命周期页面事件的名称
答:
a) 初始化对象
b) 导入Viewstate数据
c) 用LoadPostData处理Postback数据
d) 导入对象
e) RaisePostBackChanged事件
f) 处理客户端PostBack事件
g) 预先呈递对象
h) 保存ViewState
i) 呈递给Html
j) 销毁对象
59.ASP。NET页面缓存数据的几种形式
答:整页缓存和部分页缓存
160、 请写出。NET分页的程序思路,或者有什么控件可以直接分页(写出该控件的名称和如何使用该控件)?
答:
a) 确定数据源
b) 查询的字段
c) 查询条件
d) 排序
e) 查询的记录总数
f) 每页显示多少条记录
g) 页面号
161白盒测试和黑盒测试
答:黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
162. ASP.NET的缓冲机制
答:减轻服务器压力,及其优化,不要使用不必要的session,不使用不必要的ServerControl,不使用不必要的ViewState,不要用Exception控制程序流程,禁用VB和Jscript动态数据类型,使用存储过程完成数据访问,只读数据访问不要使用DataSet,关闭ASP.NET的Debug模式,使用ASP.Net Output Cache缓冲数据:页面缓冲,片断缓冲,数据缓冲
163. 分布式支持系统的实现
答:分布式软件系统(Distributed Software Systems)是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等
164. 什么是串行化
答:串行化也称序列化,持久化。比如 ,你通过new()方法产生一个对象,这个对象是存在内存里的,存在内存里的东西迟早是要被销毁的。为了使一些对象持续下来,就需要把这些对象保存在本地硬盘、网络等。这一个把内存中的对象保存到硬盘中的过程,就是对象持久化的过程,也就是你说的串行化。
165、ADO.net的七大对象
答:Connection,Command,DataAdapter,DataSet,DataReader,configuration
166、SQLSEVER有哪些函数?
答:内置函数,用户自定义函数(标量函数,内嵌表值函数,多语句表值函数)。
167、不对数据库进行操作不用session和Appliction传值,你怎样把值传到其他页面?
答:response(query),cookie,input type=hidden
168、传值与传址的区别?
答:传值:可以在方法内改变其值,但不会改变此参数变量的引用对象
传址:可以改变其值,同时也可以改变其对象引用
169、你对软件工程与软件管理的看法?
答:使软件象流水线一样做,好维护,软件好服用,团队好协作
170. .NET框架概述
答:Microsoft .NET 框架是生成、部署和运行 Web 服务及应用程序的平台。它提供了一个生产率高且基于标准的多语言环境,用于将现有投资与下一代应用程序和服务集成,同时提供了解决 Internet 规模应用程序的部署和操作难题的灵活性。.NET 框架由三个主要部分组成:公共语言运行库、统一类库的分层集合和称为 ASP.NET 的 ActiveServer Pages 组件化版本
171.什么是中间语言(IL)?它的作用?
答:代码在执行前都要被编译为托管代码,与CPU无关的指令集。
其作用:支持平台无关性,还支持语言的互操作性。
172, 死锁的必要条件?怎么克服?
答:系统的资源不足,进程的推进的顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已获得资源不放,进程获得资源时,未使用完前,不能强行剥夺。
173, 接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?
答:接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类,但是有个条件,条件是,实体类必须要有明确的构造函数。
174构造器Constructor是否可以被继承?是否可以被Override?
答:Constructor不可以被继承,因此不能被重写(Overriding),但可以被重载(Overloading).
在.net中webService实现步骤:
创建一个webService,生成相应的.asmx文件。
添加一个通过Internet 公开和调用的方法。此类方法又称为 [WebMethod]
部署创建好的webService
在将要调用webService的项目中添加web引用,生成相应的代理类。
实例化代理类对象
通过代理类对象调用相应的WebMethod
175. ASP。NET中共有几种类型的控件?各有什么区别?
WEB控件分为:内部控件, 列表控件, 复杂控件, 验证控件
内部控件--内部控件的使用方法与 HTML 控件相同,它们映射到 HTML 元素并通过使用 runat = "server" 属性在服务器上执行
列表控件--用于在 Web 页中创建数据列表
复杂控件-- •当希望控件拥有复杂的功能或使用 HTML 元素无法创建的功能丰富的用户界面时,可以使用复杂控件
验证控件--输入控件的数据需要进行准确性和取值范围方面的检查
176. WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
可以,其调用过程大致如下:用户使用WEB控件或者html服务端控件,控件的调用方法事件被激发,于是服务器开始自动寻找所匹配的方法代码,当在客户端找到后解释执行客户端的方法代码,完毕后继续返回服务器执行剩余代码.
如何处理几十万条并发数据?
答:用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.
177.什么叫类?什么叫对象?什么叫面向对象(OOP)?
对象是一个实例,有自己的属性和方法。
类是抽象的,并无具体所指,有属性和行为定义。
面向对象是把事情看成是一个个小的对象组成的,这些对象之间的相互关系,构成了整个项目。
178.error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
179.sleep() 和 wait() 有什么区别 ?
sleep 是线程类( Thread )的方法,导致此线程暂停执行指定时间,给执 行
机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用 sleep 不 会
释放对象锁。 wait 是 Object 类的方法,对此对象调用 wait 方法导致本线程放
弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出 notify 方法( 或
notifyAll )后本线程才进入对象锁定池准备获得对象锁进入运行状态。
180.堆栈的区别?
对象放在堆里,它的引用则是在栈里,基本类型都放在栈里,最简单的区别,栈快堆慢
181.死锁的必要条件?怎么克服?
答:系统的资源不足,进程的推进的顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已获得资源不放,进程获得资源时,未使用完前,不能强行剥夺。
182.接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?
答:接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类,但是有个条件,条件是,实体类必须要有明确的构造函数。
183.构造器Constructor是否可以被继承?是否可以被Override?
答:Constructor不可以被继承,因此不能被重写(Overriding),但可以被重载(Overloading).
184.当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的方法?
答:不可以,一个对象的方法只能由一个线程访问。
185.C#是否可以对内存直接进行操作?
C#是可以对内存进行直接操作的,虽然很少用到指针,但是C#是可以使用指针 的,在用的时候需要在前边加unsafe,,在.net中使用了垃圾回收机制(GC)功能,它替代了程序员,不过在C#中不可以直接使用finalize 方法,而是在析构函数中调用基类的finalize()方法。
186.谈谈final,finally,finallize的区别?
答:final用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承。
Finally是异常处理语句结构中,表示总是执行的部分。
Finallize表示是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法。
187.HashMap和Hashtable区别?
答:HashMap是Hashtable的轻量级实现,非线程安全的实现他们都实现了map接口,主要区别是HashMap键值可以为空null,效率可以高于Hashtable。
188.Collection和Collections的区别?
答:Collection是集合类的上级接口,Collections是针对集合类的一个帮助类,它提供一系列静态方法来实现对各种集合的搜索,排序,线程安全化操作。
189.Override, Overload,的区别?
答:Override是重写的意思,它表示重写基类的方法,而且方法的名称,返回类型,参数类型,参数个数要与基类相同。
190.C#中委托是什么?事件是不是一种委托?
答:委托是一种安全的类似与函数指针,但是她比指针要安全的多,它可以把方法作为一个参数传递给另一个方法,可以理解为指向函数的引用。事件是一种消息机制,它是一种委托,委托不带方法体。
191.在一个BS结构中需要传递变量值时,不能使用session,coolke,application,你有几中方法?
答:this.server.Transfer,Querystring.
192.New有种用法?
答:有3种,第一种是,实例化如:New Class()
第二种是,public new 隐藏基类的方法
第三种是,在泛型类申明中的任何类型参数都必须有公共的无参构造函数。
193.概述反射和序列化?
答:反射:要给发射下一个定义还是比较难的,这里先说说我的理解。反射提供了封装程序集,模块和类型对象,可以用反射动态地创建类型的实例,将类型绑定到现有对象,或者从现有对象类型里获取类型,然后调用类型的方法或访问字段和属性。
序列化:将对象转换为另一种媒介传输的格式过程。如,序列化一个对象,用Http通过internet在客户端和服务器之间传递该对象,在另一端用反序列化从该流中重新得到对象。
194.Const和ReadOnly?
答:Const用来申明编程时申明常量,ReadOnly用来申明运行时常量。
195.UDP和TCP连接有和异同?
答:TCP是传输控制协议,提供的是面向连接的,是可靠的,字节流服务,当用户和服务器彼此进行数据交互的时候,必须在他们数据交互前要进行 TCP连接之后才能传输数据。TCP提供超时重拨,检验数据功能。UDP是用户数据报协议,是一个简单的面向数据报的传输协议,是不可靠的连接。
196.进程和线程分别该怎么理解?
答:进程是比线程大的程序运行单元,都是由操作系统所体会的系统运行单元,一个程序中至少要有一个进程,有一个进程中,至少要有一个线程,线程 的划分尺度要比进程要小,进程拥有独立的内存单元,线程是共享内存,从而极大的提高了程序的运行效率同一个进程中的多个线程可以并发执行。
197.什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
答:应用程序域:就是为安全性,可靠性,隔离性,和版本控制,及卸载程序提供的隔离边界。它通常由运行库宿主创建,应用程序域提供了一个更安全,用途更广的处理单元。
托管代码:使用CLR编译语言编辑器开发编写的代码就叫托管代码。
装箱和拆箱:是把值类型转换为引用类型的过程,是隐式的,相反的过程就是拆箱,是显式的。
CTS是公共类型系统,CLS是公共语言规范,CLR公共语言运行库。
强类型系统:每个变量和对象都必须具有申明类型。
198.解释一下UDDI、WSDL的意义及其作用?
答:UDDI是统一描述集成协议,是一套基于Web的,分布式的,为WEB服务提供的信息注册的实现标准规范,同时为也是为企业本身提供的 Web服务注册以让别的企业能够发现并访问的协议标准。提供了基于标准的规范,用于描述和发现服务,还提供了一组基于因特网的实现。
WSDL这是一个基于XML的描述WEB服务的接口。
199.什么是SOAP?
答:是简单访问协议。是在分布式环境中,交换信息并实现远程调用的协议。是一个基于XML的协议。使用SOAP,可以不考虑任何传输协议,但通常还是HTTP协议,可以允许任何类型的对象或代码,在任何平台上,以任一种语言相互通信。它是一种轻量级协议。
200.如何理解.net中的垃圾回收机制?
答:.NET中的垃圾回收机制是引用程序对内存的回收和释放。当每次用new关键字创建一个对象时,运行库都要从托管堆中为其分配内存,因为空间是有限的,最终垃圾回收机制是要回收不用的内存的。已释放内存,重新使用。
201能用foreach遍历访问的对象需要实现?
答:需要实现IEnumerable接口和GetEnumerator ()方法。
202Heap与stack的差别?
答:Heap是堆,空间是由手动操作分配和释放的,它的存储区很大的自由存储区。
Stack是栈,是由是操作系统自动分配和释放的,栈上的空间是有限的。程序在编译期间变量和函数分配内存都是在栈上进行的,且在运行时函数调用时的参数的传递也是在栈上进行的。
Xml
203..什么是XML?
答:XML即可扩展标记语言。eXtensibleMarkup Language.标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,即可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL和XPath等。
204.列举一下你所了解的XML技术及其应用
答:xml用于配置,用于保存静态数据类型.接触XML最多的是webServices..和config
205.xml的特点?
xml即可扩展标记语言(extensible markup language)
特点:
1、XML使用Unicode字符集,可生成英文、中文、希腊文或梵文等多种语言。
2、可将多个来源(包括其他XML文档和二进制文件)汇合进一个XML文档。
3、可利用DTD或Schema(模式)管理一致性问题。DTD主要用于文档型文档,Schema主要用数据型文档。
4、具有很好的扩展性,可定义自已的元素和属性。
5、通过XML可从关系数据库管理系统中提取数据到结构化文档。它还被设计成可对各种数据对象进行操作。
6、在一个设计良好的XML应用中,XML标记不涉及文档如何显示,只表示文档的结构。
XML被设计用来存储、支持和交换数据,而不是用来显示数据的。通常,\XML被用于数据交换,而不是数据存储。
206.简单的介绍HTML与xml的区别?
区别:
HTML:超文本标记语言(Ext)
xml:可扩展性标记语言()
xml与html都是SGMl上发展来的。
XML 是一种极灵活的、传递数据的方式
207.xml中DTD与SChema的区别?
Schema更具有可读性和灵活性,它描述的xml文档以同样的方式存储在一起,方便管理,与xml格式的一致性,使得以
xml为数据交换的应用系统之间,也可以方便的进行模式交换
DTD本身的合法性却缺少较好的验证机制,必需独立处理,schema与xml有着同样的合法性验证机制
208.XML 文档定义有几种形式?它们之间有何本质区别?解析 XML 文档有哪几
种方式?
答: 1 )两种形式: dtd 以及 schema ;
2 )本质区别: schema 本身是 xml 的,可以被 XML 解析器解析 ( 这也是从 DTD
上发展 schema 的根本目的) ;
3 )解析方式:有 DOM,SAX,STAX 等:
DOM: 处理大型文件时其性能下降的非常厉害。这个问题是由 DOM 的树结
构所造成的,这种结构占用的内存较多,而且 DOM 必须在解析文件之前把整个文
档装入内存 , 适合对 XML 的随机访问;
SAX: 不同于 DOM,SAX 是事件驱动型的XML 解析方式。它顺序读取 XML 文
件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签 开
头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码 来
处理 XML 文件,适合对XML 的顺序访问;
STAX:Streaming API for XML (StAX) 。
209.你在项目中用到了 xml 技术的哪些方面 ? 如何实现的 ?
答 : 用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的
数据组装成 XML 文件,然后将XML 文件压缩打包加密后通过网络传送给接收者,
接收解密与解压缩后再同 XML 文件中还原相关信息进行处理。在做软件配置时,
利用 XML 可以很方便的进行,软件的各种配置参数都存贮在 XML 文件中。
210.XML与HTML语法有哪些不同?
XML和HTML的语法大体相同,但XML比HTML更为严格。如:在XML中严格区分大小写,空标签必须被关闭,标签必须合理嵌套,属性值必须用单引号或双引号,有且只能有一个根元素等
211.XML是HTML的更新版本吗?
不是,XML是SGML的子集,而HTML是SGML的一个应用。
212.XML通常使用什么来验证内容是否有效?
DTD和Schema
213.css与xsl的区别?
答:css只作静态处理,一般用在HTML扩展标记语言中。
xsl扩展样式语言
Ajax
214.Ajax的执行原理?
通过xmlhttprequest对象来与服务器发送异步请求,从服务器得到数据然后用javascript来操作DOM来更新页面。
215.Ajax和javascript的区别?
javascript是一种在浏览器端执行的脚本语言,Ajax是一种创建交互式网页应用的开发技术,它是利用了一系列相关的技术其中就包括javascript。
216.在 Ajax应用中信息是如何在浏览器和服务器之间传递的
通过XML数据或者字符串
217.在浏览器端如何得到服务器端响应的XML数据
XMLHttpRequest对象的responseXMl属性
218.XMLHttpRequest对象在IE和Firefox中创建方式有没有不同?
有,IE中通过new ActiveXObject()得到,Firefox中通过new XMLHttpRequest()得到
219.介绍一下XMLHttpRequest对象的常用方法和属性
open(“method”,”URL”) 建立对服务器的调用,第一个参数是HTTP请求 方式可以为GET,POST或任何服务器所支持的您想调用的方式。
第二个参数是请求页面的URL。
send()方法,发送具体请求
abort()方法,停止当前请求
readyState属性 请求的状态 有5个可取值 0=未初始化 ,1=正在加载2=以加载,3=交互中,4=完成
responseText属性 服务器的响应,表示为一个串
reponseXML属性 服务器的响应,表示为XML
status 服务器的HTTP状态码,200对应ok 400对应not found
220.Ajax的优点和缺点
使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。
对应用Ajax最主要的缺点就是,它可能破坏浏览器后退按钮的正常行为
Uml
221.什么是uml?
统一的建模语言(Unified Modeling Language)
222..uml中常用的几种模型?
静态模型:对象图,类图,包图 活动图,用例图
动态模型:时序图,状态图
223.uml有什么样的作用?
UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它溶入了软件工程领域的新思想、新方法和新技术。
它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。
224.Uml中类图几种常用的关系?
关联 泛化 依懒 聚合 实现 组合
数据库
225.请列举几个常见的数据库
A,Sql Server B,Access C,Oracle D,DB2 E,mySql
226.RDBMS是什么?
RDBMS关系型数据库管理系统 relationDataBase Manage System
227.如何防止SQL注入?
Sql注入是一种sql漏洞攻击
防止方法:使用参数化传递
228.如何使用SqlServer分页
1,使用存储过程 Row_number
2.Sql语句 not in top
229.如何设计数据库
答:存储信息的大小,每次扩容的大小,尽量金哨数据冗余
230.几十上百万行,如何快速查询出表数据
答:用分页存储过程
231.SQL语句左联接与内连接的区别
答:Inner Join 逻辑运算符返回满足第一个(顶端)输入与第二个(底端)输入联接的每一行。
Left Outer Join 逻辑运算符返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行。它还返回任何在第二个输入中没有匹配行的第一个输入中的行。第二个输入中的非匹配行作为空值返回。
232.什么是事务?
答:数据库事务是指作为单个逻辑工作单元执行的一系列操作。
233.存储过程的优缺点:
优点:
由于应用程序随着时间推移会不断更改,增删功能,T-SQL过程代码会变得更复杂,
1. StoredProcedure为封装此代码提供了一个替换位置。】
2. .存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量T-sql语句的代码流量。
3. 可维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。
4. 代码精简一致,一个存储过程可以用于应用程序代码的不同位置。
5. 更好的版本控制,增强安全性:防止 SQL注入
缺点
可移植性差
234.说出你所了解的数据库访问组件(例如ADO,至少4种)
答:ADO,ADO.Net,MDAC(Microsoft Data Access Components),Microsoft SQL Server OLE DB Provider,Microsoft Jet OLE DB Provider,Desktop Database Drivers ODBC Driver,Visual FoxPro ODBC Driver
235对单表进行模糊查询,并对其中两列分别进行升序和降序排列(在一个Select语句中)
答:select au_id,au_lname from dbo.authors where state like '%CA%'
group by au_id,au_lname
order by au_lnameasc,au_id desc
236.活动目录的作用。
答:Active Directory存储了有关网络对象的信息,并且让管理员和用户能够轻松地查找和使用这些信息。Active Directory使用了一种结构化的数据存储方式,并以此作为基础对目录信息进行合乎逻辑的分层组织。
237. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键, 注意:ID可能不是连续的。)
答:select top 10 from a where id not in(select top30 from a)
或:select top10 from a where id > (select max(id)from (select top 30 from a) as b)
238.oracle的主要特点?
通过最高认证级别的ISO标准认证 ,跨平台,支持海量数据,支持多用户,具有良好的安全性
239.oracle过程和函数的区别?
相同点:都属于子程序,都是通过编译执行,函数和过程都可以通过参数列表接收或返回零个或多个值
不同点:过程:不带返回值;调用:过程名 不带out参数用exe来进行执行.
涵数:用select去访问,还有用变量去接收
过程作为PL/SQL语句执行,而函数作为表达式的一部分调用
过程在规格说明中不包含return字句,函数必须在规格说明中包含return子句
过程不返回任何值,函数必须返回单个值
过程可以包含return语句,但是与函数不同,它不能用于返回值,函数必须包含至少一条return语句
240.内联接,外联接区别?
内连接是保证两个表中所有的行都要满足连接条件,而外连接则不然。
在外连接中,某些不满条件的列也会显示出来,也就是说,只限制其中一个表的行,而不限制另一个表的行。分左连接、右连接、全连接三种
241.谈谈你对Oracle的理解。
Oracle是一系列产品的总和,也可以说是一个平台,它包含Oracle数据库、Oracle中间件、Oracle管理软件等,我简单的描述一下对于Oracle数据库的理解。它是一种基于网络访问的可跨平台的关系型数据库,具有较强的可移植性;通过连接存储池(connection polling)和多路复用(multiplexing)机制来实现动态可伸缩性;它通过并行服务器(Parallel Server Option )来提高系统的可用性;Oracle的自动备份和恢复功能,提供了对大规模和更加细化的分布式操作系统的支持等等。
242.主键的作用有哪些?
保证数据的唯一性,避免发生数据重复的情况。
因为主键可以唯一标识某一行记录,所以能确保执行数据更新、删除的时候不会出现张冠李戴的错误。
主键常常与外键构成参照完整性约束,防止出现数据不一致。
243.索引对数据并发会有影响吗?
索引能大大提高对于数据查询的访问速度,但当有大量基于数据插入的并发操作时,索引反而会降低并发操作的执行速度;当然如果有行级锁的话,情况又会有变化。
244数据库的设计原理。
1) 原始单据与实体之间的关系
2) 主键与外键
3) 范式标准
4) 完整性约束
245存储过程的理解。
存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是SQL语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。
存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。
可以出于任何使用SQL语句的目的来使用存储过程,它具有以下优点:
1) 可以在单个存储过程中执行一系列 SQL 语句。
2) 可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
3) 存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快。
246事务是什么?
事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:原子性,事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。一致性,事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。隔离性,由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。持久性,事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。
247游标的作用?如何知道游标已经到了最后?
游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后
248触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。
事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。
249数据库名词解析
批:是包含一个或多个Transact-SQL 语句的组,从应用程序一次性地发送到Microsoft SQL Server 执行。批作为一个整体执行,以GO命令结束。批处理是客户端作为一个单元发出的一个或多个 SQL 语句的集合。每个批处理编译为一个执行计划。
触发器:触发器是在对表进行插入、更新或删除操作时自动执行的存储过程,触发器通常用于强制业务规则,触发器可以确保数据的完整性和一致性。
事务:是用户定义的一个操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位(构成单一逻辑工作单元的操作集合)如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据更改均被清除
锁:是在多用户环境中对数据访问的限制封锁就是事务 T 在对某个数据对象(如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务 T 就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。(锁蕴含的基本概念是用户需要对表的排它访问)从程序员的角度看:分为乐观锁和悲观锁。乐观锁:完全依靠数据库来管理锁的工作。悲观锁:程序员自己管理数据或对象上的锁处理。
子查询:一个SELECT 语句嵌套在另一个 SELECT 语句中。
索引:是一个数据库对象,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单,然后根据指定的排序次序排列这些指针 优点:提高查询执行的速度,强制实施数据的唯一性,提高表之间联接的速度。缺点:存储索引要占用磁盘空间,数据修改需要更长的时间,因为索引也要更新。
视图:是一种虚拟表,通常是作为来自一个或多个表的行或列的子集创建的。视图本质上讲,就是保存在数据库中的select查询,视图并不是数据库中存储的数据值的集合。对最终用户的好处:结果更容易理解,获得数据更容易。对开发人员的好处:限制数据检索更容易,维护应用程序更方便。
存储过程:使用一个名称存储的预编译T-SQL语句和流程控制语句的集合•由数据库开发人员或数据库管理员编写用来执行管理任务或应用复杂的业务规则 优点•执行速度更快•首次运行时,进行优化和编译得到执行计划并将该计划存储在系统表中,以后直接运行。•实现多个程序共享应用程序逻辑•组件式编程•能够屏蔽数据库的结构,实现更高的安全性减少网络流通量。
数据模型:是一种标识实体类型及其实体间联系的模型。典型的数据模型有网状模型、层次模型和关系模型。
250数据库设计和建模必要性
好的数据库结构有利于:节省数据的存储空间,能够保证数据的完整性,方便进行数据库应用系统的开发。设计不好的数据库结构将导致:数据冗余、存储空间浪费,内存空间浪费。
251数据库设计步骤
收集信息 −> 标识对象 −> 设计数据模型 −> 标识每个对象存储的信息类型 −> 标识对象之间的关系
252什么是规范化
从关系数据库的表中,除去冗余数据的过程称为规范化。包括:精简数据库的结构,从表中删除冗余的列,标识所有依赖于其它数据的数据。
253范式的定义
第一范式的定义:如果一个表中没有重复组(即行与列的交叉点上只有一个值,而不是一组值),则这个表属于第一范式(常记成1NF)。简而言之:"每一字段只存储一个值"。例如:职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话和一个家里电话号码)
第二范式的定义:如果一个表属于1NF,任何属性只依赖于关键字,则这个表属于第二范式(常记成2NF )。简而言之:必须先符合1NF的条件,且每一行都能被唯一的识别。 将1NF转换成2NF的方法是添加主键。学号,课程名,成绩
第三范式的定义:如果一个表属于2NF,且不包含传递依赖性,则这个表是第三范式(常记成3NF)。满足3NF的表中不包含传递依赖。简而言之:没有一个非关键属性依赖于另一个非关键属性。学号,课程号,成绩,学分学号,姓名,所在系,系名称,系地址。
254什么是数据库的映射
就是将数据库的表与字段对应到模型层类名与属性的过程
255什么时候会用到触发器
A安全管理、B日志管理、C复杂业务逻辑实现
256对数据库SQL2005、ORACLE熟悉吗?
SQL2005是微软公司的数据库产品。是一个RDBMS数据库,一般应用在一些中型数据库的应用,不能跨平台。
ORACLE是ORACLE公司的数据产品,支持海量数据存储,支持分布式布暑,支持多用户,跨平台,数据安全完整性控制性能优越,是一个ORDBMS,一般用在大型公司。
257什么是主键?什么是外键?
主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段与另外一个表格(尽管可能是同一个表格)里的一系列相连的字段。那么这些相连的字段就是外键。
258什么叫视图?游标是什么?
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。
259索引的作用?和它的优点缺点是什么?
索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
260PL/SQL中的%type 和%rowtype的使用和区别?
%type:提供某个变量或数据库表列的数据类型
%rowtype:提供表示表中一行的记录类型
261请例举PL/SQL中常见的3中预定义异常,请说明自定义异常的步骤
3中预定义异常:to_many_rows,no_data_found,others
步骤:声明异常,触发异常,处理异常
javaScript
262.什么是javascript?
JavaScript是Netscape公司的产品,其目的是为了扩展Netscape Navigator功能,而开发的一种可以嵌入Web页面中的基于对象和事件驱动的解释性语言,它的前身是Live Script
Javascript是一种基于对象的解释执行的脚本语言。
Javascript的作用?
JavaScript的出现,它可以使得信息和用户之间不仅只是一种显示和浏览的关系,而是实现了一种实时的、动态的、可交式的表达能力 .
JavaScript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。它是一种基于对象(Object Based)和事件驱动(Event Driver)的编程语言。因而它本身提供了非常丰富的内部对象供设计人员使用
JavaScript是一种解释性编程语言,其源代码在发往客户端执行之前不需经过编译,而是将文本格式的字符代码发送给客户编由浏览器解释执行。
263目前主流脚本语言:
答:javaScript, Vbscript(MS)
264在JavaScript中四种基本的数据类型:
数值(整数和实数)、字符串型(用“”号或‘’括起来的字符或数值)布尔型(使True或False表示)和空值 .
265.JavaScript中变量声明,采用其弱类型。即变量在使用前不需作声明,而是解释器在运行时检查其数据类型,如:
x=1234;
y="4321";
前者说明x为其数值型变量,而后者说明y为字符型变量。
266.根据所执行的运算,运算符可分为以下类别:
算术运算符 +、-、 * 、 / 、%、++、--、-(求反)
比较运算符 ==、!=、>、>=、<、<=
逻辑运算符 &&、||、!
267.javascript是用来作什么的?
应用于表单数据有效性验证,页面特效
控制页面的行为
268.为什么要用javascript做验证?
不会与服务器发生交互。效率高
269.浏览器程序内部提供了哪些对象?
Window,document,location,history,event
270.什么是BOM?
浏览器对象模型
271访问节点
documentElement (返回文档的根节点)
firstChild (第一个子节点)
lastChild (最后一个子节点)
childNodes (所有子节点的集合)
tagName (获得节点的名称)
nodeValue (获得节点的文本)
getAttribute(name) ——返回节点中名称为name的属性的值
setAttribute(name,value) ——顾名思义
removeAttribute(name) ——顾名思义
getElementsByTagName(name) ——返回指定节点的数组
272.创建和操作节点
createElement(name) (创建新节点)
createTextNode(text) (创建文本节点)
appendChild(node) (添加子节点)
removeChild(node)(删除子节点)
273.onLoad事件:在窗口或框架完成文档加载时触发
或
274.JS中创建数组
vararray = new Array(5);
vararray = [“001”,”002”];
275.遍历JS数组
For(vari=0;i { arraypi]; } 276.创建二维数组 vararray = [[“001”,”002”],[“003”,”004”]]; 277.动态添加下拉列表选项 //创建一个新的下拉列表选项 varoption = new Option(text,value); //将下拉列表选项添加到下拉列表中 sel.options[index]= option; //获得当前选中的下拉列表索引 sel.selectedIndex 清空下拉列表 sel.length= 0; DIV+CSS 278.超链接访问过后hover样式就不出现的问题? 被点击访问过的超链接样式不在具有hover和active了,解决方法是改变CSS属性的排列顺序:L-V-H-A 279为什么浮动后本来外边距10px,但IE解释为20px; 答:解决办法是加上display:inline 280.为什么FF下文本无法撑开容器的高度? 标准浏览器中固定高度值的容器是不会象IE6里那样被撑开的,那我又想固定高度,又想能被撑开需要怎样设置呢?办法就是去掉he ight设置min-height:200px; 这里为了照顾不认识min-height的IE6 可以这样定义: div {height:auto!important; height:200px; min-height:200px; } 281.为什么web标准中IE无法设置滚动条颜色了? 答:解决办法是将body换成html 282.为什么无法定义1px左右高度的容器? 答:这个问题是因为默认的行高造成的,解决的方法也有很多,例如:overflow:hidden | zoom:0.08 | line-height:1px 289.怎么样才能让层显示在FLASH之上呢? 答:给FLASH设置透明: 290、firefox嵌套div标签的居中问题的解决方法 假定有如下情况:
如果要实现b在a中居中放置,一般只需用CSS设置a的text-align属性为center。这样的方法在IE里看起来一切正常;但是在Firefox中b却会是居左的。解决办法就是设置b的横向margin为auto。例如设置b的CSS样式为:margin: 0 auto;。
291. HTML的含义是什么?其主体部分由什么标记构成?
HTML即Hyper Text Markup Language超文本标记语言,是构成网页最基本的元素。标记和之间的内容构成了HTML的主体部分,网页中的所有内容,包括文字、图形、链接以及其他页面元素都包含在该标记符内。
292. 标记br和p有什么区别?
标记br和p都可以用来换行,但是二者是有区别的。
标记使当前行强行中断而另起一行,但是新行与原来的行保持相同的属性,即新行与原来的行属于同一段落,而
标记在换行的时候另起了一新的段落;
标记无对应的结束标记,而
标记必须和
配合使用,不能省略。293. URL指的是什么?有何作用?分为几种?有什么区别?
URL是统一资源定位符,用于定位Web上的文件信息。
URL有绝对和相对之分。绝对URL就是指完整的资源地址,具体形式为:协议名称://计算机域名/路径和文件名。一般情况下,在指定外部 Internet资源时应使用绝对URL。相对URL指资源相对于当前页面的路径。使用相对URL时,一般使用点“.”和双点“..”表示当前目录和上一级目录(父目录)。在制作网站的时候,只要站点各资源的相对位置不变,就使用相对URL。
294.说明在网页设计中层的作用。
层,也就是DIV标记,是一个区块级的HTML标记,在该标记之间可以添加段落、表格、图片等内容,使同一个DIV标记中的元素具有相同的样式,并可在页面显示时同时出现、移动以及隐藏。
它的主要作用有以下两点:(1) 将一些标记元素组织起来,应用DIV的属性为这些标记元素定义统一的样式;(2) 利用其z-index属性,实现页面内各元素的重叠显示效果;(3) 使页面上显示更多的特效功能。
295. CSS指的是什么?在网页制作中为什么要使用CSS技术
CSS(Cascading Style Sheets)也叫层叠样式表,它是用来控制网页中一个或多个元素的外观。在网页制作中,使用样式表可以减少很多具有相同外观元素的重复设置工作,从而给网页的设计和维护带来了很大的方便;具体应用是:改变样式表中元素显示样式的定义,则在使用该样式表的所有网页中相应元素的显示样式都会自动发生改变。
296.网页制作中有哪几种样式设置方法?各有何特点?
网页制作中有:内联式样式设置、直接嵌入式样式设置和外部链接式样式设置三种方式。
1) 内联式样式设置:
设置方法:直接在要设置样式的各标记元素中修改style属性;
优点:直观、方便;
缺点:不易于维护和修改;
适用于:网页中个别需要修改的元素的样式定义;
2) 直接嵌入式样式设置:
设置方法:在HTML文档的
之间添加定义,部分是所有需要设置样式的元素的属性定义。优点:对当前页面内的所有元素的样式修改、维护比较方便;
缺点:对于网站建设,要采用相同的样式设置则比较麻烦;
适用于:单独网页的样式定义;
3) 外部链接式样式设置:
设置方法:把所有样式定义放在一个独立的文件中,凡是需要使用该文件中规定样式的网页,只要在其
与之间添加一个对该样式文件的链接:即可;适用于:需要统一显示样式的网站建设。297
297.用户自定义的类和ID在定义和使用时有什么区别?
定义时,类以英文形式的句点“.”为起始标志,ID以“#”为起始标志;使用时,类可以在一个页面中被多个不同的元素引用,而ID在一个页面中只能被引用一次。
298.DIV+CSS常见错误汇总
通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别,因为XHTML网站设计标准中,不再使用表格定位技术,而是采用css+div的方式实现各种定位。应用应用DIV+CSS编码时很容易犯一些错误。
CSS+DIV是网站标准(或称“WEB标准”)中常用的术语之一,通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别,因为XHTML网站设计标准中,不再使用表格定位技术,而是采用css+div的方式实现各种定位。应用应用DIV+CSS编码时很容易犯一些错误。本文列举了一些常见的错误:
1. 检查HTML元素是否有拼写错误、是否忘记结束标记
即使是老手也经常会弄错div的嵌套关系。可以用dreamweaver的验证功能检查一下有无错误。
2. 检查CSS是否正确
检查一下有无拼写错误、是否忘记结尾的 } 等。可以利用CleanCSS来检查 CSS的拼写错误。CleanCSS本是为CSS减肥的工具,但也能检查出拼写错误。
3. 确定错误发生的位置
如果错误影响了整体布局,则可以逐个删除div块,直到删除某个div块后显示恢复正常,即可确定错误发生的位置。
4. 利用border属性确定出错元素的布局特性
5. float元素的父元素不能指定clear属性
6. float元素务必指定width属性
7. float元素不能指定margin和padding等属性
8. float元素的宽度之和要小于100%
项目题
总体:
1. 请结合一个具体的项目,举几个项目过程中出现的问题及产生原因。
1) 需求不明确:客户自己都没有想清楚系统要实现的功能,提不出需求。我们的解决方案是延长需求开发的时间,采用多种方式如发调查问卷、开需求讨论会甚至同客户一起工作等做好需求获取,同时需求规格说明书要客户确认,并进行评审。
2) 客户变更:要求走变更申请流程,进行变更分析和评估。在保证客户基本功能实现的情况下,对大工作量的改动(如:涉及到软件体系结构变化的变更请求)会另外立项为一个维护开发的项目或作为本软件的二次开发版本提供。
2. 在一个项目中如何保证软件的质量?
1) 做项目计划的时候首先要根据需求确定质量目标和制定质量计划。
2) 强调质量意识:预防胜于检查,强调一次要事情做对,强调上游工序为下游提供合格的产出物,尽量减少各种缺陷的泄露。
3) 写测试用例,进行单元测试、集成测试和系统测试。
4) 每阶段都进行必要的评审,由需求,设计,开发,测试等各种角色的成员共同来从不同的角度来发现问题。
3. 常用的软件开发模型有哪几种?他们各有什么优缺点?
软件开发模型有瀑布模型、迭代模型、原型模型。
瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。
瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:
(1) 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;
(2) 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;
(3) 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。
(4) 原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。
显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。
迭代模型中,迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动。所以,在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:(至少包括)需求工作流程、分析设计工作流程、实施工作流程和测试工作流程。
与传统的瀑布模型相比较,迭代过程具有以下优点:
(1) 降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。
(2) 降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。
(3) 加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。
(4) 由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。
4. 瀑布模型包括哪几个阶段,每一个阶段的里程碑式的产物是什么?
瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本阶段,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。里程碑产物:项目总体计划、需求规格说明书、概要设计说明书、代码、软件测试报告和质量跟踪报告等。
5. 你们公司项目风险控制是如何做的?
在项目立项阶段,进行可行性分析,分为技术可行性和经济可行性。同时严格规范软件开发的各个阶段,对于软件开发过程中的各项计划、里程碑产物进行评审。同时引入项目监督和控制机制,对项目开发过程中碰到的各类风险(政策与行规风险、公司组织风险、客户需求风险、技术风险、质量风险、项目管理风险、人力资源风险)进行跟踪、提出解决方案和反馈效果。
6. 项目中的常见风险主要有什么?
政策与行规风险、公司组织风险、客户需求风险、技术风险、质量风险、项目管理风险、人力资源风险。
政策与行规风险:项目开发依据的政策、文件、法规有变化
公司组织风险:公司进行组织机构的调整,协调配合有问题
客户需求风险:客户需求变更
技术风险:技术上面实现有难度
质量风险:项目各部分关联程度太大,软件质量难以保证
项目管理风险:项目管理工作量繁重,对项目困难程度估计不足,项目总体计划制定有问题,导致进度滞后。
人力资源风险:项目组人员不稳定,有可能出现离职、调任、突发的病事假。
7. 你觉得在你的项目开发过程中碰到的最大的困难是什么?
交流沟通的问题,包括与客户、上级领导和同事的沟通。对于客户首先要理解客户需要什么,要能够帮客户分清楚什么是主要需求、什么是次要需求,在碰到分歧的时候,要能够说服客户接受我们的解决方案。对于上级领导,要能够及时反映项目状态,同时识别前进道路上的风险,更早的申请(人力、物力)资源。对于同事要就相关联的工作进行充分沟通,达不成统一意见时,可请项目经理仲裁。
8. CMMI是什么?
CMMI是集成软件成熟度模型的简称,是一套完整的方法论和管理思想的体现,共分5级,由低到高分别为:初始级、已管理级、已定义级、定量管理级和持续优化级。其主要目的帮助软件企业进行过程改进,规范软件开发流程,提高软件开发成功率。
需求:
1. 需求阶段的主要工作包括哪些?
答:需求阶段分为需求开发与需求管理。需求开发包括需求调研、需求分析、需求规格说明书编写、需求确认;需求管理包括需求变更、版本控制、需求跟踪。
2. 需求分为哪几类?分别包括什么内容?
答:分为功能性需求和非功能性需求。功能性需求包括业务需求、用户需求和功能需求;非功能性需求则包含性能、环境、用户界面、安全性、可靠性、可移植性、可维护性等。
3. 需求获取的有哪几种方式?并简述外部需求获取的优缺点。
主要有外部需求获取和内部需求获取两种方式。
外部需求获取方式:
1) 需求研讨会:优点:了解全面;缺点:成本高、难以控制
2) 一对一用户访谈:优点:成本低、了解深入、容易控制;缺点:不太全面
3) 与用户一起工作:优点:深入了解细节、成本低、最容易控制;缺点:很不全面
内部需求获取方式:
1) 已有项目的文档
2) 已有的项目产品
3) 其他需求、开发人员
4) 相关业务书籍
4. 当用户提出需求变更的时候,你会怎么进行处理?
项目中遇到需求变更是很有可能的,而最重要的是怎么去平衡用户方和公司方。直接拒绝用户,会导致用户信任度下降,对公司的项目工作造成不良影响;而接受则可能导致项目的成本增加甚至项目最终失败。所以处理需求变更的时候,需三思而后行。应及时告知项目经理,然后认真地分析需求变更对所做系统/模块/功能的影响,并尽可能地参与需求变更评审会议,阐述自己正确的观点。
5. 假如让你来做合同类项目的需求调研工作,你觉得应该如何进行?
首先通过各种渠道了解客户方的主体业务,大致工作流程,再结合合同中定义的需求方面的内容,制定需求调研计划;接着根据对客户总体业务的了解,将工作分解和细化,制作需求调查问卷,并记录拿不准的业务问题;带着这些问卷和疑问,到客户方进行详细的需求调研工作,包括参与需求讨论会、与用户一起工作和面对面的访谈。
6. 作为一个需求分析人员应具备什么样的能力?
1) 倾听能力:理解用户所表达的意思
2) 交谈和提问能力:使用合理、巧妙的技巧明确用户的需求
3) 分析能力:将需求进行细化、识别的能力
4) 观察能力:通过观察了解客户的工作模式及工作流程等
5) 写作能力:编写需求文档的能力
6) 人际交往和协调能力:获得用户信任、引导用户
7) 对行业知识的掌握能力
设计:
1. 软件概要设计阶段的基本任务是什么
1) 设计软件系统结构,具体为:
(1) 采用某种设计方法,将一个复杂的系统按功能划分成模块。
(2) 确定每个模块的功能。
(3) 确定模块之间的调用关系。
(4) 确定模块之间的接口,即模块之间传递的信息。
(5) 评价模块结构的质量。
2) 数据结构及数据库设计,含数据结构的设计及数据库的设计。
3) 编写概要设计文档。主要有:概要设计说明书;数据库设计说明书;用户手册;修订测试计划。
4) 设计评审
2. 谈谈关于系统设计中架构、概要、详细设计的理解?
在软件系统的设计阶段,架构设计、概要设计和详细设计阐述了一个系统的设计和实现过程。
从系统分解为层次、层次内的模块以及相互的接口、模块分解为对象以及对象的接口、实现这些对象接口的方法。但每个阶段都有自己独特的一部分。
架构设计重点在于将系统分层并产生层次内的模块、阐明模块之间的关系。主要工作是根据架构分析和设计思想产生系统的架构图,并对架构图进行描述,说明分层的原因、层次的职责,并根据架构图绘制系统的物理部署图,描述系统的部署体系。根据架构图进行模块的划分并阐明模块划分的理由,绘制模块物理图以及模块依赖图。
概要设计重点在于将模块分解为对象并阐明对象之间的关系,引用架构设计说明书中的模块图,并阐述对于模块进行设计的大致思路。主要工作是根据该模块的职责对模块进行概要设计(分解模块为对象、描述对象的职责以及声明对象之间的接口),绘制模块的对象图、对象间的依赖图以及模块主要功能的序列图,分别加以描述并相应的描述模块异常的处理方法。如果需要并描述数据视图。
详细设计重点在于对模块进行实现,将模块的对象分解为属性和方法,并阐述如何实现。主要工作视根据模块概要设计详细描述对于模块内对象的实现,包括对象的职责、属性、方法、对象内功能的流程图、对象关联的类、对象的异常。(需要绘制的主要为类图)
概括的说,架构解决系统核心用例以及关键性需求的设计,形成抽象的基础结构,划分模块、形成模块接口。概要解决模块以及模块接口的实现,形成模块中核心对象以及对象的接口定义。详细解决模块中具体对象的实现以及对象接口的实现。
3. 谈谈你对三层架构(3-tierapplication) 的理解及与MVC的区别?
三层架构(3-tierapplication) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI/View)、业务逻辑层(BLL/Service)、数据访问层(DAL/Dao)。区分层次的目的即为了“高内聚,低耦合”的思想。
1) 表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
2) 业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
3) 数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增、删、改、查。
这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。
表示层:位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。
业务逻辑层(BusinessLogic Layer)无疑是系统架构中体现核心价值的部分。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(Domain)逻辑有关,很多时候,也将业务逻辑层称为领域层。
业务逻辑层:业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。由于层是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。如果在分层设计时,遵循了面向接口设计的思想,那么这种向下的依赖也应该是一种弱依赖关系。因而在不改变接口定义的前提下,理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构。正因为如此,业务逻辑层的设计对于一个支持可扩展的架构尤为关键,因为它扮演了两个不同的角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。依赖与被依赖的关系都纠结在业务逻辑层上,如何实现依赖关系的解耦,则是除了实现业务逻辑之外留给设计师的任务。
数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。
简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那么就会包括对象和数据表之间的mapping,以及对象实体的持久化。
与MVC的区别:
MVC(模型Model-视图View-控制器Controller)是一种设计模式,我们可以用它来创建在域对象和UI表示层对象之间的区分。
同样是架构级别的,相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。
在三层架构中没有定义Controller的概念。这是我认为最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是已实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。
4. 谈谈你对MVC模式的理解?
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
视图(View):视图是用户看到并与之交互的界面,可用于CS/BS的设计。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services。
模型(Model):模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制器(Controller):控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定j用哪个视图来显示模型处理返回的数据。
5. 参考《数据库设计技巧系列》文章
编码:
1. 你们是如何提高项目中查询性能。
保证在实现功能的基础上,尽量减少对数据库的访问次数;通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;能够分开的操作尽量分开处理,提高每次的响应速度;在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;算法的结构尽量简单;
在查询时,不要过多地使用通配符如SELECT * FROM T1语句,要用到几列就选择几列如:SELECTCOL1,COL2 FROM T1;
在可能的情况下尽量限制尽量结果集行数如:SELECT TOP 300 COL1,COL2,COL3 FROM T1,因为某些情况下用户是不需要那么多的数据的。
不要在应用中使用数据库游标,游标是非常有用的工具,但比使用常规的、面向集的SQL语句需要更大的开销;按照特定顺序提取数据的查找。
2. 你们公司项目的权限管理如何实现的?
采用树控件和xml结合的方式。让用户自定自己的角色,把xml信息保存到数据库。用户登陆时候,从数据库取出对应角色的xml生成
菜单控件。角色无权访问的菜单将不会出现在树菜单中。这种方式是有按钮级别在单独控制。用户角色信息保存在session中。
3.
测试:
1. 请简要描述软件测试的总体流程。
测试需求 −> 测试总体设计−> 测试详细设计 −> 单元测试(模块测试) −> 集成测试 −> 系统测试 −> 用户测试(验收测试)
2. 软件测试分哪两种方法?分别适合什么情况?
软件测试方法一般分为两种:白盒测试与黑盒测试。白盒测试又称为结构测试、逻辑驱动测试或基于程序本身的测试,它着重于程序的内部结构及算法,通常不关心功能与性能指标;黑盒测试又被称为功能测试、数据驱动测试或基于规格说明的测试,它实际上是站在最终用户的立场,检验输入输出信息及系统性能指标是否符合规格说明书中有关功能需求及性能需求的规定。
3. 什么是回归测试?
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。回归测试包括两部分:函数本身的测试、其他代码的测试。
4. 一套完整的测试应该由哪些阶段组成?分别阐述一下各个阶段。
计划阶段、设计阶段、白盒单元、白盒集成、黑盒单元、黑盒集成、系统测试、回归测试、验收测试。一套完整的测试应该由五个阶段组成:
1) 测试计划首先,根据用户需求报告中关于功能要求和性能指标的规格说明书,定义相应的测试需求报告,即制订黑盒测试的最高标准。以后所有的测试工作都将围绕着测试需求来进行,符合测试需求的应用程序即是合格的,反之即是不合格的;同时,还要适当选择测试内容,合理安排测试人员、测试时间及测试资源等。
2) 测试设计将测试计划阶段制订的测试需求分解、细化为若干个可执行的测试过程,并为每个测试过程选择适当的测试用例(测试用例选择的好坏将直接影响测试结果的有效性)。
3) 测试开发建立可重复使用的自动测试过程。
4) 执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理,测试执行一般由单元测试、组合测试、集成测试、系统联调及回归测试等步骤组成,测试人员应本着科学负责的态度,一步一个脚印地进行测试。
5) 测试评估结合量化的测试覆盖域及缺陷跟踪报告,对于应用软件的质量和开发团队的工作进度及工作效率进行综合评价。
5. 单元测试、集成测试、系统测试的侧重点是什么?
单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求,组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。
系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。
6. 集成测试通常都有那些策略?
1) 在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;
2) 各个子功能组合起来,能否达到预期要求的父功能;
3) 一个模块的功能是否会对另一个模块的功能产生不利的影响;
4) 全局数据结构是否有问题;
5) 单个模块的误差积累起来,是否会放大,从而达到不可接受的程度。
7. 作为一个开发人员,你平时是怎么跟测试人员进行交流的? 当被发现了一个bug时,你所在的公司是按照什么流程来处理bug的?
我们公司有自己的一套bug管理软件。当测试人员发现bug时,提交到软件里面,然后用邮件提醒我。我解决问题以后,同样的在软件中,进行问题的关闭处理,同时用邮件告知测试人员。
(本问题只说明了一种简单的流程,测试时,一般有一个统一的平台:bug管理软件或者一个公共的excel文件)
8. 你本身参与过那些测试?请简要说明流程。
一般来讲,作为一个开发人员肯定会参与单元测试。一般是测试自己所做的模块,或者跟同事进行交叉测试,互相交换模块进行测试。主要测试模块的功能,数据,页面的风格,页面元素的验证。