代码改变世界

软件开发asp.net面试题收集(一)

2010-06-28 19:49  elivsit  阅读(1714)  评论(0编辑  收藏  举报

1.new有几种用法

第一种:new Class();第二种:覆盖方法public new XXXX(){}

第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。

2.如何把一个array复制到arrayList

foreach( object o in array )arrayList.Add(o);

3.datagrid.datasouse可以连接什么数据源 [dataset,datatable,dataview]
dataset,datatable,dataview , IList

4.概述反射和序列化

反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性

序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

5.概述o/r mapping 的原理

利用反射,配置 将类于数据库表映射

6.类成员有( )种可访问形式

可访问性:public ,protected ,private,internal

7.sealed修饰的类有什么特点

sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其他类的基类,则会发生编译时错误。

密封类不能同时为抽象类。

sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。

8.列举ADO.NET中的五个主要对象,并简单描述

connection,command,dataReader,trans,dataset ...

9.执行下面代码后:

String strTemp ="abcdefg 某某某";

Int i System.Text.Encoding.Default.GetBytes(strTemp).Length;

Int j = strTemp.Length;

问:i=(14 )13 ;j=(11 )10

i=(14 ) ;j=(11 ) 中文两个字节

10.C#中,string str = null string str ="",请尽量用文字说明区别。(要点:说明详细的内存空间分配)

string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间。

11.详述.NETclassstruct的异同!

class:放在堆中 ? struct放在笺中?struct值传递

类与结构有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构的值存储在“在堆栈上”或“内联”。1)、结构是值类型;2)、结构不支持继承;3)、结构不能定义默认的构造函数;4)、结构不能定义析构函数;
5)、结构不能使用初始值设置域值。

14.概述三层结构体系15.asp.net如何实现MVC模式,举例说明!

web/business/dataaccess

数据访问层,业务层,表示层。
数据访问层对数据库进行增删查改。
业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。
表示层为了与用户交互例如用户添加表单。
优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。 缺点:增加成本。

______________________________________________________________________________________________

 

1.面向对象的思想主要包括什么?

答:继承 多态  封装

2.什么是ASP.net中的用户控件

答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.

3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTSCLSCLR分别作何解释?

答: 应用程序域:一种边界,它由公共语言运行库围绕同一应用程序范围内创建的对象建立(即,从应用程序入口点开始,沿着对象激活的序列的任何位置)。应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。受管制的代码:在.net环境中运行的代码都称之为受管制的代码   在.net环境之外,在Windows上运行的代码称之为不受管制的代码。非托管代码。不经过CLR运行。在 .net 中由公共语言运行环境进行管理的代码,它主要负责内存管理。托管代码必须先通过一个验证过程,然后才能运行。强类型系统:类型识别系统。装箱就是把值类型转成引用类型,从MS IL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相反,重载就是指一个方法名同,参数个数不同,返回值可以相同的方法. CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。

4.列举一下你所了解的XML技术及其应用

答:XML可是好东西,保存配置,站与站之间的交流,WEB SERVICE都要用它. xml可以用来做网页(xslt) xml可以当作数据库 xml可以用来保存对象的系列化(web服务好象是基于这个的) 

5.值类型和引用类型的区别?写出C#的样例代码。

按值传递和按址传递。

答:结构是值类型,类是引用类型,所以传结构就是值类型的应用啦,传对象或类就是引用类型的。

6.ADO.net中常用的对象有哪些?分别描述一下。

答:connection command sqladapter dataset datatable dataview等等.写不完了.

7.如何理解委托?

答: 委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的引用。据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.

委托类似于 C++ 函数指针,但它是类型安全的。

委托允许将方法作为参数进行传递。委托可用于定义回调方法。委托可以链接在一起;例如,可以对一个事件调用多个方法。方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。

C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。

9.net中读写数据库需要用到哪些类?他们的作用

答:这个类自已可以写的啊,你是指基类吗?那configuration, sqlconnection sqlcommand sqldataadapter dataset datareader等都要用到.

10.UDP连接和TCP连接的异同。

答:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结

11.ASP.net的身份验证方式有哪些?分别是什么原理?

答:form认证,windows集成认证等,原理不清楚.

13.什么是code-Behind技术。

答: aspx and cs代码分离,这是个明智的东西,像ASP这样混成一堆很不爽.或者可以理解成HTML代码写在前台,C#代码写在后台.当然前台也有脚本,类的调用等,其实写在一起也是可以的.

14.活动目录的作用。

答: 活动目录(Active Directory)
   1、活动目录是一种目录服务,可以集中化资源的管理。
    2、实质上,AD是一个保存网络中所有对象的位置信息和属性的数据库。能够随着对象的变化而改变。

1、集中化资源的管理。2、验证和授权服务。 3、可以管理AD中的资源:用户(组)、文件资源、软件资源、硬件资源。 4、组策略的应用。5、可以实现用户的单一登录。  6、基于internet标准。

15..net中读写XML的类都归属于哪些命名空间?

答:System.Xml

16.解释一下UDDIWSDL的意义及其作用。

答: UDDI(统一描述、发现和集成协议)计划是一个广泛的,开放的行业计划,它使得商业实体能够 (1) 彼此发现,(2) 定义他们怎样在internet上互相作用,并在一个全球的注册体系架构中共享信息。UDDI是这样一种基础的系统构筑模块,他使商业实体能够快速,方便地使用他们自身的企业应用软件来发现合适的商业对等实体,并与其实施电子化的商业贸易。
UDDI同时也是Web服务集成的一个体系框架。它包含了服务描述与发现的标准规范。UDDI规范利用了W3C和Internet工程任务组织(IETF)的很多标准作为其实现基础,比如扩展标注语言(XML),HTTP和域名服务(DNS)这些协议。另外,在跨平台的设计特性中,UDDI主要采用了已经被提议给W3C的SOAP(Simple Object Access Protocol,简单对象访问协议)规范的早期版本。

WSDL(Web Service Description Language)Web服务器描述语言是用XML文档来描述Web服务的标准,是Web服务的接口定义语言,由Ariba、Intel、IBM、MS等共同提出,通过WSDL,可描述Web服务的三个基本属性:·1服务做些什么——服务所提供的操作(方法)·2如何访问服务——和服务交互的数据格式以及必要协议3·服务位于何处——协议相关的地址,如URL。WSDL文档以端口集合的形式来描述Web服务,WSDL 服务描述包含对一组操作和消息的一个抽象定义,绑定到这些操作和消息的一个具体协议,和这个绑定的一个网络端点规范。WSDL 文档被分为两种类型:服务接口(service interface )和服务实现(service implementations)   服务接口文档中的主要元素作用分别为:types:定义了Web服务使用的所有数据类型集合,可被元素的各消息部件所引用。它使用某种类型系统(一般地使用XML Schema中的类型系统)。 message:通信消息数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构。operation:对服务中所支持操作的抽象描述。一般单个operation描述了一个访问入口的请求/响应消息对。 portType:对于某个访问入口点类型所支持操作的抽象集合。这些操作可以由一个或多个服务访问点来支持。 binding:包含了如何将抽象接口的元素(portType)转变为具体表示的细节,具体表示也就是指特定的数据格式和协议的结合;特定端口类型的具体协议和数据格式规范的绑定。 port定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问点。 service这是一个粗糙命名的元素,代表端口的集合;相关服务访问点的集合。 可见,portType(与message和type元素的细节相结合)描述了Web服务是什么,binding元素描述了如何使用Web服务,port及service元素描述了Web服务的位置.。文章引用自:

17.什么是SOAP,有哪些应用。

答:SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。这种相互通信采用的是XML格式的消息,具体请看:http://playist.blogchina.com/2521621.html

18.如何部署一个ASP.net页面

答:随便啦,想直接上传就直接上传,想打包成EXE就打包,看个人喜好.

部置一个页面. 也就是说没有代码是直接写在aspx中的了.只接放在IIS的虚拟目录下就行了.当然要asp.net支持

19.如何理解.net中的垃圾回收机制。

答: GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
System.gc()                         Runtime.getRuntime().gc()

20.常用的调用webservice方法有哪些?

答: 可以从浏览器、ASP页或其他WEB服务调用可以使用HTTP-GET   HTTP-POST访问WEB服务也可以从ASP页或其他WEB服务向其他WEB服务发出SOAP请求HTTP-GET   HTTP-POST  SOAP  使用WEB服务代理

答案(2)1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜单选项

 

_____________________________________________________________________________________________

1:a=10,b=15,在不用第三方变量的前提下,把a,b的值互换

a=a+b;b=a-b;b=(a+b)/2;a=a-b;

还有变态要求,需要代码最短呢。有两个结果:

1) a^=b^(b^=a^b); // 13个字节            2) a=b+(b=a)*0; // 11个字节

2:已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组

public class TestQuickSort {

    private int[] array = null;

private void quickSort(int lowest, int highest) {
        if (array == null || lowest < 0 || lowest >= highest
                || highest >= array.length) {
            return;}
        int low = lowest;   int high = highest; int key = low++;
        for (; low <= high;)

 { if (key < high) {  if (array[key] > array[high])

  array[high] = array[key] + (array[key] = array[high]) * 0;  key = high; } high--;}

if (key > low)

   if (array[key] < array[low])

array[low] = array[key] + (array[key] = array[low]) * 0;

   key = low; }
                low++; }}
        quickSort(lowest, key - 1);
        quickSort(key + 1, highest);}

    /* @param args*/
    public static void main(String[] args) {
        TestQuickSort test = new TestQuickSort();
        int[] array = {6,5,2,9,7,4,0};
        test.array = array;
        test.quickSort(0, array.length - 1);
        int length = test.array.length;
        for (int i = 0; i < length; i++) {
            System.out.println(test.array[i]); } }}

不要用冒泡排序法很慢,选择排序好些,但题意是快速排序算法

快速排序算法的基本思想:

快速排序的基本思想是基于分治策略的。对于输入的子序列ap..ar,如果规模足够小则直接进行排序,否则分三步

分解(Divide):将输入的序列ap..ar划分成两个非空子序列ap..aq和aq+1..ar,使ap..aq中任一元素的值不大于aq+1..ar中任一元素的值。
递归求解(Conquer):通过递归调用快速排序算法分别对ap..aq和aq+1..ar进行排序。
合并(Merge):由于对分解出的两个子序列的排序是就地进行的,所以在ap..aq和aq+1..ar都排好序后不需要执行任何计算ap..ar就已排好序。
这个解决流程是符合分治法的基本步骤的。因此,快速排序法是分治法的经典应用实例之一。

算法Quick_Sort的实现:

3:请简述面向对象的多态的特性及意义!

面向对象的编程使用了派生继承 以及虚函数机制.
答:一个本来指向基类的对象指针可以指向其派生类的.并访问从基类继承而来的成员变量和函数.
而虚函数是专门为这个特性设计的,这个函数在每个基类的派生类中都是同一个名字,但函数体却并不一定相同,派生类往往为实现自己的功能而修改这个虚函数.这样用一个指针就能够实现对多种不同的派生类的访问, 并实现其派生类的特定功能(代码 )....

4session喜欢丢值且占内存,Cookis不安全,请问用什么办法代替这两种原始的方法
用VIEWSTATE   stateserver

5:对数据的并发采用什么办法进行处理较好。

可以控制连接池的连接数量条件好的话可以用负载平衡

7:已知Oracle数据库a,b
现在在a用户权限下,访问b数据库sql语句为select a.* From b a,请改正这一句Sql的写法

答:select a.* from b.b a

8:当对数据库进行海量级的数据插入时,数据库出现报错,错误原因可能有哪些,你的解决办法

对于oracle数据库来说,可能出现的问题包括:
1. 回滚区间空间不足  ---解决方法,增加表空间
2. 数据表空间不足 ---- 增加数据表空间
3. 表空间不足 ---- 增加表空间(oracle数据表有空间限制)
4. 临时表空间不足 --- 因为计算索引使用临时表空间,增加表空间或者暂时不使用索引,数据导入完毕再新建索引
5.另外一些原因,主要是垃圾数据造成的,比如外键匹配,主键冲突,单一索引冲突等。

9:算法分析
AH 20060625 12 44 01 CAD001
AH 20060625 12 44 01 CAD001
AH 20060625 13 44 02 CAD001
AH 20060625 14 44 03 CAD001
说明:第二列表示日期,第三列表示温度,第四列表示水位,第五列表示流量,第6列表示水位测站编码,每一列表示一个字段
很明显第一条数据和第二条数据重复,然数据表中有主键和外键的约束,是不允许有重复的数据存在的,请构造算法将重复的数据Del掉

答:DELETE FROM TABLE_NAME
WHERE ROWID!=(SELECT MAX(ROWID) FROM TABLE_NAME D
WHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2);

10:javascript算法
已知a,b,现在点鼠标a会向b游动,鼠标停,a会停下来
请实现"跑步算法" 
 

 (2)能用foreach遍历访问的对象需要实现 _ IEnumerable 接口或声明_ GetEnumerator 方法的类型。1.c#中的三元运算符是__?:__
2.当整数a赋值给一个object对象时,整数a将会被__装箱___?
4.public static const int A=1;这段代码有错误么?是什么? const成员都是static所以应该去掉static
5.float f=-123.567F;
int i=(int)f;
i的值现在是_-123____?
6.利用operator声明且仅声明了==,有什么错误么? 要同时修改Equale和GetHash() ? 重载了"==" 就必须重载 "!="
10.在.Net中所有可序列化的类都被标记为__[serializable]___?
12.下面的代码中有什么错误吗?_ abstract override 是不可以一起修饰______

13.当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不可以_(可以 or 不可以)从T派生出新的类,_不可以_(可以 or 不可以)直接创建T的任何实例。

14.在.Net中,类System.Web.UI.Page 可以被继承么?可以

2. 不定项选择:

(1) 以下叙述正确的是: B C

A. 接口中可以有虚方法。B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。

   (2) 从数据库读取记录,你可能用到的方法有:B C D

      A. ExecuteNonQuery            B. ExecuteScalar      C. Fill                        D. ExecuteReader

2.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选)   (        ABC         )  
  A.Close B.Dispose C.Finalize  
  D.using E.Quit  

3.关于ASP.NET中的代码隐藏文件的描述正确的是(C)

a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。

b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。

c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。

d)以上都不正确。

6.下列描述错误的是(D)

a)类不可以多重继承而接口可以;b)抽象类自身可以定义成员而接口不可以;

c)抽象类和接口都不能被实例化;d)一个类可以有多个基类和多个基接口;

7.在DOM中,装载一个XML文档的方法(D)

a)save方法   b)load方法 c)loadXML方法 d)send方法

8.下列关于构造函数的描述正确的是(C)

a)构造函数可以声明返回类型。b)构造函数不可以用private修饰

c)构造函数必须与类名相同d)构造函数不能带参数

9.以下是一些C#中的枚举型的定义,其中错误的用法有()

a)public enum var1{ Mike = 100, Nike = 102, Jike }

b)public enum var1{ Mike = 100, Nike, Jike }

c)public enum var1{ Mike=-1 , Nike, Jike }     d)public enum var1{ Mike , Nike , Jike }

10.int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是(D)。

a)9                   b)2             c)6              d)越界

11.接口是一种引用类型,在接口中可以声明(A),但不可以声明公有的域或私有的成员变量。

a)方法、属性、索引器和事件; b)方法、属性信息、属性; c)索引器和字段;    d)事件和字段;

12.ASP.NET框架中,服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型,它们是(A )

a)HTML控件和Web控件 b)HTML控件和XML控件 c)XML控件和Web控件    d)HTML控件和IIS控件

13.ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为( D)

a)<%@Register TagPrefix = “Mike” TagName = “Space2” Src = “myX.ascx”%>

b)<%@Register TagPrefix = “Space2” TagName = “Mike” Src = “myX.ascx”%>

c)<%@Register TagPrefix = “SpaceX” TagName = “Space2” Src = “Mike”%>

d)以上皆非

14.在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(C)。

a)insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;

b)ExecuteNonQuery()方法返回执行Sql语句所影响的行数。

c)Select操作的Sql语句只能由ExecuteReader()方法来执行;

d)ExecuteReader()方法返回一个DataReder对象;

17.在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和(B ),必要时还要设置参数尺寸。

a)大小;             b)上限;              c)初始值;            d)类型;

18.如果将窗体的FormBoderStyle设置为None,则( B)。

a)窗体没有边框并不能调整大小;        b)窗体没有边框但能调整大小;

c)窗体有边框但不能调整大小;          d)窗体是透明的;

20.下列关于C#中索引器理解正确的是(B/C )

a)索引器的参数必须是两个或两个以上   b)索引器的参数类型必须是整数型

c)索引器没有名字                     d)以上皆非

21.下面描述错误的是( C/D)。

a)窗体也是控件; b)窗体也是类; c)控件是从窗体继承来的; d)窗体的父类是控件类;

22.要对注册表进行操作则必须包含( D)。

a)System.ComponentModel命名空间; b)System.Collections命名空间;

c)System.Threading命名空间;      d)Microsoft.Win32命名空间;

23.要创建多文档应用程序,需要将窗体的(D )属性设为true。

a)DrawGrid;         b)ShowInTaskbar;          c)Enabled;            d)IsMdiContainer;

24.如果设treeView1=new TreeView(),则treeView1.Nodes.Add("根节点")返回的是一个 ()类型的值。

a)TreeNode;b)int;c)string;d)TreeView;

10.Net依赖以下哪项技术实现跨语言互用性?(   )

A.CLR               B.CTS               C.CLS                  D.CTT

11.请问: String类与StringBuilder类有什么区别?为什么在.Net类库中要同时存在这2个类?(简答)

 如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。 

12.以下哪个类是int的基类?(    )

A.Int32              B.Object          C.ValueType            D.Int16

 

_____________________________________________________________________________________________

二、C# 部分*

13.以下哪些可以作为接口成员?(多选) ( ABDE )

A.方法B.属性C.字段D.事件E.索引器

F.构造函数G.析构函数

15.“访问范围限定于此程序或那些由它所属的类派生的类型”是对以下哪个成员可访问性含义的正确描述?(    )

A.public        B.protected            C.internal         D.protected internal

18.请叙述属性与索引器的区别。 

属性 索引器    
  通过名称标识。 通过签名标识。    
  通过简单名称或成员访问来访问。 通过元素访问来访问。    
  可以为静态成员或实例成员。 必须为实例成员。    
  属性的   get   访问器没有参数。 索引器的   get   访问器具有与索引器相同的形参表。    
  属性的   set   访问器包含隐式   value   参数。 除了   value   参数外,索引器的   set   访问器还具有与索引器相同的形参表。 

19.请叙述const与readonly的区别。

每一个class至多只可以定义一个static构造函数,并且不允许增加访问级别关键字,参数列必须为空。
        为了不违背编码规则,通常把static数据成员声明为private,然后通过statci property提供读写访问。
        const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。
        const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。
        const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。
        readonly在运行期评估赋值,使我们得以在确保“只读访问”的前提下,把object的初始化动作推迟到运行期进行。
        readonly 关键字与 const 关键字不同: const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而 readonly 字段可用于运行时常数。
  readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。

21.您需要创建一个ASP.NET应用程序,公司考虑使用Windows身份认证。
  所有的用户都存在于AllWin这个域中。您想要使用下列认证规则来配置这个应用程序:
    a、 匿名用户不允许访问这个应用程序。
    b、 所有雇员除了Tess和King都允许访问这个应用程序。
  请问您应该使用以下哪一个代码段来配置这个应用程序?(  )
A. <authorization>
   <deny users=”allwin\tess, allwin\king”>
   <allow users=”*”>
   <deny users=”?”>
 </authorization>

22.您要创建一个显示公司员工列表的应用程序。您使用一个DataGrid控件显示员工的列表。您打算修改这个控件以便在这个Grid的Footer显示员工合计数。请问您应该怎么做?(  C?  )
  C.重写OnItemDataBound事件,当Grid的Footer行被创建时显示合计数。

23.您要创建ASP.NET应用程序用于运行AllWin公司内部的Web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标,您应该怎么做?(多选)(  CD   )
  A.在这个应用程序的Global.asax文件中创建一个Application_Error过程去处理ASP.NET代码错误。
  B.在这个应用程序的Web.config文件中创建一个applicationError节去处理ASP.NET代码错误。
  C.在这个应用程序的Global.asax文件中创建一个CustomErrors事件去处理HTTP错误。
  D.在这个应用程序的Web.config文件中创建一个CustomErrors节去处理HTTP错误。
  E.在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET 代码错误。
  F. 在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET HTTP错误。

3. 简述 private protected public internal 修饰符的访问权限。

private : 私有成员, 在类的内部才可以访问。protected : 保护成员,该类内部和继承类中可以访问。public : 公共成员,完全公开,没有访问限制。internal: 在同一命名空间内可以访问。

4. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键 注意:ID可能不是连续的。)

select top 10 * from A where id not in (select top 30 id from A)
解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)


5 .列举ASP.NET 页面之间传递值的几种方式。

1.     使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量 3.使用Server.Transfer
2。请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
session(viewstate) 简单,但易丢失
application 全局
cookie 简单,但可能不支持,可能被伪造
input ttype="hidden" 简单,可能被伪造
url参数简单,显示于地址栏,长度有限
数据库稳定,安全,但性能相对弱

2override与重载的区别

Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数

3.net的错误处理机制是什么

.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。

4C#中接口和类的异同

接口和类都是类,不同的是,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。声明方法的存在而不去实现它的类被叫做抽象类

4DataReaderDataSet的异同

DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作...

5. .netC# or vb.net)如何启动另一个程序。Process

7. 某一密码仅使用KLMNO5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则:
(1) 密码单词的最小长度是两个字母,可以相同,也可以不同
(2) K不可能是单词的第一个字母
(3) 如果L出现,则出现次数不止一次
(4) M不能使最后一个也不能是倒数第二个字母
(5) K出现,则N就一定出现
(6) O如果是最后一个字母,则L一定出现
问题一:下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词?
A) K B)L C) M D) N
答案:B

问题二:如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少?
A)1个 B)3个 C)6个 D)9个                                                 答案:A

问题三:下列哪一个是单词密码?
A) KLLN B) LOML C) MLLO D)NMKO                                         答案:C;

6  私有程序集与共享程序集有什么区别?

一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集通常存储在全局程序集缓存(Global Assembly Cache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如.NET Framework类。

7  请解释进程与线程的区别?进程与程序的区别?

一般,一个应用程序对应于一个或多个进程,可以把进程看作是该应用程序在*作系统中的标识;而一个进程通常由多个线程组成,而线程是*作系统为该应用程序分配处理时间的最小单元。

8  CLRIL分别是什么含义?

CLR:公共语言运行时,类似于Java中的JVM,Java虚拟机;在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是CLR,CLR将直接与*作系统进行通信,而编程语言如C#.NET将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性,可以这样看:CLR就是具体的编程语言如:C#.NET与*作系统之间的翻译,同时它为具体的编程语言提供了许多资源:

IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;所有.NET源代码(不管用哪种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时(Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。

10 .请解释ASPNET中以什么方式进行数据验证

       Aps.net 中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件

11  WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。

在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端

只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件

12  WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?

可以调用      例如:<asp:TextBox id="TextBox1" onclick="clientfunction();" runat="server">

</asp:TextBox>

<INPUT id="Button2" value="Button" name="Button2"

runat="server" onclick="clientfunction();">

13  请解释web.config文件中的重要节点

appSettings包含自定义应用程序设置。

system.web 系统配置

compilation动态调试编译设置

customErrors自定义错误信息设置

authentication身份验证,此节设置应用程序的身份验证策略。

authorization授权, 此节设置应用程序的授权策略.

14  请解释ASPNET中的web页面与其隐藏类之间的关系?

一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下

<%@ Page language="c#" Codebehind="Tst1.aspx.cs" Inherits="T1.Tst1" %>

Codebehind="Tst1.aspx.cs" 表明经编译此页面时使用哪一个代码文件

Inherits="T1.Tst1" 表用运行时使用哪一个隐藏类

15  什么是viewstate,能否禁用?是否所用控件都可以禁用?

Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用

16  当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决

很有可能是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断

17  请解释什么是上下文对象,在什么情况下要使用上下文对象

上下文对象是指HttpContext类的Current 属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象

18  请解释转发与跳转的区别?

转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面

跳转就是指客户端的跳转

 

____________________________________________________________________________________________

1.请简述一下用Socket进行同步通讯编程的详细步骤
1、在应用程序和远程设备中使用协议和网络地址初始化套接字
2、在应用程序中通过指定端口和地址建立监听
3、远程设备发出连接请求
4、应用程序接受连接产生通信scoket
5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)
6、通讯结束,关闭应用程序和远程设备的Socket回收资源

5SQLSERVER服务器中,给定表   table1   中有两个字段   IDLastUpdateDateID表示更新的事务号,   LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号。(10)  
  select   top   ID   from   table1   order   by   LastUpdateData   desc     
  8、简要谈一下您对微软.NET   构架下remotingwebservice两项技术的理解以及实际中的应用。(10)
 远程逻辑调用,remoing接口只能用在.net中 Remoting:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。  remoting是.net   中用来跨越machine,   process,   appdomain   进行方法调用的技术,对于三层结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的DCOM  Web   Service是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。Web   Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型。

9.什么叫做SQL注入,如何防止?请举例说明。
利用sql关键字对网站进行攻击。过滤关键字'等
所谓SQL注入(SQL Injection),就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想得到的资料。

 

a 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
int[] intArr=new int[100];

 ArrayList myList=new ArrayList(); Random rnd=new Random();

while(myList.Count<100)

{ int num=rnd.Next(1,101);

if(!myList.Contains(num))

myList.Add(num); }

 for(int i=0;i<100;i++) intArr[i]=(int)myList[i];

 10 int   i=123;   object   obj   =   i;    i   =   456;    iobj的值。

装箱操作.i被装箱为引用.i   =   456;obj   =123

112823 表达式结果为24 3%(8*3)*8
  public   static   void   Main(string[]   args)  

int   i=8;   int   j=3;    int   k;  

k=(i^(i+j))*8;   Console.WriteLine(k);    Console.ReadLine();   }

1.      简述Web服务器端程序的用途。 
Web服务器端程序,提供了浏览器端和服务器端之间的会话功能。

2.      12. 简述Cookie的用途及其局限性。

答:Cookie记录当前被验证通过的用户的一些信息。如果需要多用户会话,Cookie就不实现不了了,就要用Session了。

3.      15. 简述Response request 对象的主要用途。 
Response对象,页面跳转,动态添加客户端脚本,等等。  
Request,获取URL参数,记录了客户端request的一些信息等等 
17. 试述数据源、DataAdapter与DataSet三者之间的关系。
数据源就是数据存储的地方;DataSet相当于一个小型的数据库,用来存放数据。DataAdapter是个适配器,用来从数据源中提取需要的数据,可以为DataSet填充数据。 

19. 简述认证和授权的概念。
 包名:System.Security.Principal:
Identity:(识别)包装了已经验证过的用户名和认证的方式
 主要成员:Name, IsAuthenticated, AuthenticationType
Principal: 当前代码的security上下文。包含Identity和Roles. 用于授权
 主要成员:IsInRole, Identity
// 一般用户可以有多个Indentity, 即多种身份来访问不同资源 --pending
每个AppDomain里面都有CallContext,CallContext里面包含Principal。线程在启动的时候也会带上
Pricncipal的ref。静态方法,仅对当前线程
Thread.CurrentPrincipal WindowsIdentity.GetCurrent()静态方法返回当前用户。
Permission: 权限。不是用户需要权限,是执行它的代码需要权限。
     Demand()要求调用此代码的代码有什么权限。Assert()断言
三种权限:
  代码权限: 基类为CodeAccessPermission .用来保护环境变量、文件、访问非托管代码。 

 Identity权限:基类为CodeAccessPermission。对应于控制台中的信任集设定。基于发行者、强类型、域、URL。
  3. PrincipalPermission(Role Based Permission)
Authorization 授权 判断用户是否有权操作,比如登录的用户有没有权限访问资源或者数据库
Authentication 认证 用户的Identity. 主要有:HTTP基础认证、证书、Kerberos、Passport、NTLM、
Forms-based、Digest
这两个东西最好从读音上区别,以前一直糊涂。一般应用先authenticate用户, 判断用户是否能链接到系
统。然后authorization, 判断对某个功能是否有权限。
authorization一般有两种:ACL/ROLES
ACL:Acess Control Lists. 判断用户是否在有权限的用户组内。缺点:不能定义动态条件。
Role based: 用户加入到某个role以后,自动获得了很多特定的权限。先判断请求者的Identity, 然后看
它是否在Role里面。类似windows用户和组的关系
1. 代码中的检查方式:new PrincipalPermission(name,role).Demand();
2. 利用Attribute的方式:[PrincipalPermissionAttribute(SecurityAction.Demand,Name="MyUser", Role="Administrator")]
3. 使用 Principal 对象中的属性和 IsInRole 方法执行显式安全性检查。
4. web.config里面authorization节中的users/roles(这个一般资料都没提到)
   
 
黑盒测试
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否
都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的
情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序
是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。“黑盒”
法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输
入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测
试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。

白盒测试
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是
否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按
预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证
。 “白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在
使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的
独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序
违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错
。第三,穷举路径测试可能发现不了一些与数据相关的错误。

灰盒测试
灰盒测试,确实是介于二者之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内
部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运
行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操
作,效率会很低,因此需要采取这样的一种灰盒的方法。灰盒测试结合了白盒测试盒黑盒测试的要素.它
考虑了用户端、特定的系统知识和操作环境。它在系统组件的协同性环境中评价应用软件的设计。灰盒测
试由方法和工具组成,这些方法和工具取材于应用程序的内部知识盒与之交互的环境,能够用于黑盒测试
以增强测试效率、错误发现和错误分析的效率。灰盒测试涉及输入和输出,但使用关于代码和程序操作
等通常在测试人员视野之外的信息设计测试。

SQL Server 存储过程的分页

建立表: CREATE TABLE [TestTable] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Note] [nvarchar] (2000) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
插入数据:(2万条,用更多的数据测试会明显一些)
SET IDENTITY_INSERT TestTable ON
declare @i int set @i=1
while @i<=20000 begin
insert into TestTable([id], FirstName, LastName, Country,Note) values(@i, ''FirstName_XXX'',''LastName_XXX'',''Country_XXX'',''Note_XXX'') set @i=@i+1
end
SET IDENTITY_INSERT TestTable OFF
分页方案一:(利用Not In和SELECT TOP分页)
语句形式:
SELECT TOP 10 * FROM TestTable WHERE (ID NOT IN (SELECT TOP 20 id FROM TestTable
ORDER BY id)) ORDER BY ID SELECT TOP 页大小 * FROM TestTable WHERE (ID NOT IN (SELECT TOP 页大小*页数 id FROM 表 ORDER BY id)) ORDER BY ID
分页方案二:(利用ID大于多少和SELECT TOP分页)
语句形式:
SELECT TOP 10 * FROM TestTable WHERE (ID > (SELECT MAX(id) FROM (SELECT TOP 20 id FROM TestTable ORDER BY id) AS T)) ORDER BY ID SELECT TOP 页大小 * FROM TestTable WHERE (ID > (SELECT MAX(id) FROM (SELECT TOP 页大小*页数 id FROM 表 ORDER BY id) AS T)) ORDER BY ID
数据库面试常用测试题(SQL Server)
题目1 为管理岗位业务培训信息,建立3个表:
S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN ) C#,CN 分别代表课程编号、课程名称
SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩
1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名
Select SN,SD FROM S Where [S#] IN(

Select [S#] FROM C,SC Where C.[C#]=SC.[C#] AND CN=N'税收基础')
2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位
Select S.SN,S.SD FROM S,SC Where S.[S#]=SC.[S#] AND SC.[C#]='C2'
3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位
Select SN,SD FROM S Where [S#] NOT IN(
Select [S#] FROM SC Where [C#]='C5')
4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
Select SN,SD FROM S Where [S#] IN( Select [S#] FROM SC
RIGHT JOIN C ON SC.[C#]=C.[C#] GROUP BY [S#] HAVING COUNT(*)=COUNT([S#]))
5. 查询选修了课程的学员人数
Select 学员人数=COUNT(DISTINCT [S#]) FROM SC
6. 查询选修课程超过5门的学员学号和所属单位
Select SN,SD FROM S Where [S#] IN( Select [S#] FROM SC GROUP BY [S#]
HAVING COUNT(DISTINCT [C#])>5)
题目2: 已知关系模式:
S (SNO,SNAME) 学生关系。SNO 为学号,SNAME 为姓名
C (CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师
SC(SNO,CNO,SCGRADE) 选课关系。SCGRADE 为成绩
1. 找出没有选修过“李明”老师讲授课程的所有学生姓名
Select SNAME FROM S Where NOT EXISTS( Select * FROM SC,C Where SC.CNO=C.CNO AND CNAME='李明' AND SC.SNO=S.SNO)
2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
Select S.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE) FROM S,SC,( Select SNO FROM SC
Where SCGRADE<60 GROUP BY SNO HAVING COUNT(DISTINCT CNO)>=2 )A Where S.SNO=A.SNO AND SC.SNO=A.SNO GROUP BY S.SNO,S.SNAME
3. 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名
Select S.SNO,S.SNAME FROM S,( Select SC.SNO FROM SC,C Where SC.CNO=C.CNO AND C.CNAME IN('1','2') GROUP BY SNO HAVING COUNT(DISTINCT CNO)=2 )SC Where S.SNO=SC.SNO
4. 列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号
Select S.SNO,S.SNAME FROM S,( Select SC1.SNO FROM SC SC1,C C1,SC SC2,C C2 Where SC1.CNO=C1.CNO AND C1.NAME='1' AND SC2.CNO=C2.CNO AND C2.NAME='2' AND SC1.SCGRADE>SC2.SCGRADE )SC Where S.SNO=SC.SNO
5. 列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩
Select S.SNO,S.SNAME,SC.[1号课成绩],SC.[2号课成绩] FROM S,( Select SC1.SNO,[1号课成绩]=SC1.SCGRADE,[2号课成绩]=SC2.SCGRADE FROM SC SC1,C C1,SC SC2,C C2 Where SC1.CNO=C1.CNO AND C1.NAME='1' AND SC2.CNO=C2.CNO AND C2.NAME='2' AND SC1.SCGRADE>SC2.SCGRADE )SC Where S.SNO=SC.SNO

 

______________________________________________________________________________________________