1. 简述private、protected、public、internal 修饰符的访问权限。javascript
答. private : 私有成员, 在类的内部才能够访问。html
protected : 保护成员,该类内部和继承类中能够访问。java
public : 公共成员,彻底公开,没有访问限制。node
internal: 在同一命名空间内能够访问。c++
2 .列举ASP.NET 页面之间传递值的几种方式。程序员
答.web
1.使用QueryString, 如....?id=1; response. Redirect()....面试
2.使用Session变量ajax
3.使用Server.Transfer正则表达式
4.使用Application
5.使用Cache
6使用HttpContext的Item属性
7.使用文件
8.使用数据库
9.使用Cookie
3. 一列数的规则以下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,用递归算法实现。
答:public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if(i > 0 && i <= 2)
return 1;
else return Foo(i -1) + Foo(i - 2);
}
}
4.C#中的委托是什么?事件是否是一种委托?
答 :
委托能够把一个方法做为参数代入另外一个方法。
委托能够理解为指向一个函数的引用。
是,是一种特殊的委托
5.override与重载的区别
答 :
重载是方法的名称相同。参数或参数类型不一样,进行屡次重载以适应不一样的须要
Override 是进行基类中函数的重写。实现多态。
6.若是在一个B/S结构的系统中须要传递变量值,可是又不能使用Session、Cookie、Application,您有几种方法进行处理?
答 :
1.使用QueryString, 如....?id=1; response. Redirect()....
2.使用Server.Transfer
3.使用Cache
4使用HttpContext的Item属性
5.使用文件
6.使用数据库
7.请编程遍历页面上全部TextBox控件并给它赋值为string.Empty?
答:
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
tb.Text = String.Empty ;
}
}
8.请编程实现一个冒泡排序算法?
答:
int [] array = new int [*] ;
int temp = 0 ;
for (int i = 0 ; i < array.Length - 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
}
}
9.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?(索引器是对属性的封装,具体查看msdn)
答:不是。能够用任意类型。
10.求如下表达式的值,写出您想到的一种或几种实现方法:1-2+3-4+……+m
答:
int Num = this.TextBox1.Text.ToString() ;
int Sum = 0 ;
for (int i = 0 ; i < Num + 1 ; i++)
{
if((i%2) == 1)
{
Sum += i ;
}
else
{
Sum = Sum - I ;
}
}
System.Console.WriteLine(Sum.ToString());
System.Console.ReadLine() ;
11.用.net作B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为何要这样分层?
答:使用MVC模式分层
通常为3层
数据访问层,业务层,表示层。
数据访问层对数据库进行增删查改。
业务层通常分为二层,业务表视层实现与表示层的沟通,业务规则层实现用户密码的安全等。
表示层为了与用户交互例如用户添加表单。
优势:分工明确,条理清晰,易于调试,并且具备可扩展性。
缺点:增长成本。
12.在下面的例子里
using System;
class A
{
public A()
{
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B()
{
y=-1;
}
public override void PrintFields()
{
Console.WriteLine("x={0},y={1}",x,y);
}
}
当使用new B()建立B的实例时,产生什么输出?
答:X=1,Y=0;x= 1 y = -1
注:B类中的PrintFields()未用override关键字实现重写的时候,建立B的实例时:
X=1,Y = -1
13.什么叫应用程序域?
答:应用程序域能够理解为一种轻量级进程。起到安全的做用。占用资源小。
14.CTS、CLS、CLR分别做何解释?
答:CTS:通用类型系统。CLS:公共语言规范。CLR:公共语言运行库。
15.什么是装箱和拆箱?
答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。
16.什么是受管制(托管)的代码?
答:
托管代码是运行.NET 公共语言运行时CLR的代码
unsafe:非托管代码。不通过CLR运行。程序员自行分配和释放内存空间
17.什么是强命名程序集?
答:程序集须要通过加密签名,强命名程序集能够部署到全局程序集缓存中,成为公共程序集
18..net中读写数据库须要用到那些类?他们的做用?
答:
DataSet:数据集。
DataCommand:执行语句命令。
DataAdapter:数据的集合,用语填充。
DataReader:数据只读器
19.ASP.net的身份验证方式有哪些?分别是什么原理?
答:
Windows(默认)用IIS控制
From(窗体)用账户
Passport(密钥)
20.什么是Code-Behind技术?
答:代码后置。
21.在.net中,配件的意思是?
答:程序集。(中间语言,源数据,资源,装配清单)
22.经常使用的调用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜单选项
23..net Remoting 的工做原理是什么?
答:服务器端向客户端发送一个进程编号,一个程序域编号,以肯定对象的位置。
24.在C#中,string str = null 与string str = “” 请尽可能使用文字或图象说明其中的区别。
答:string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间。
25.请详述在dotnet中类(class)与结构(struct)的异同?
答:class能够被实例化,属于引用类型,class能够实现接口和单继承其余类,还能够做为基类型,是分配在内存的堆上的
struct属于值类型,不能做为基类型,可是能够实现接口,是分配在内存的栈上的.
26.根据委托(delegate)的知识,请完成如下用户控件中代码片断的填写:
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
private void toolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
//请在如下补齐代码用来调用OnDBOperate委托签名的OnNew事件。
}
}
}
答:if( OnNew != null )
OnNew( this, e );
27.分析如下代码,完成填空
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i= j=
答:i=13,j=10
28.Sql Server服务器中,给定表table1 中有两个字段ID、LastUpdateDate,ID表示更新的事务号,LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句得到最后更新的事务号
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)
29.根据线程安全的相关知识,分析如下代码,当调用test方法时i>10时是否会引发死锁?并简要说明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答:不会发生死锁,(但有一点int是按值传递的,因此每次改变的都只是一个副本,所以不会出现死锁。但若是把int换作一个object,那么死锁会发生)
30.简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。
答:webservice主要是可利用HTTP,穿透防火墙。
Remoting能够利用TCP/IP,二进制传送提升效率。
31.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到如下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的全部行(排序的方式如DataGrid类似)。根据您的知识,请简要谈一下您的思路
答:根据点击的列头,把该列的ID取出,按照该ID排序后,在给绑定到ListView中。
32.给定如下XML文件,完成算法流程图。
<FileSystem>
<DriverC>
<Dir DirName="MSDOS622">
<File FileName =" Command.com" ></File>
</Dir>
<File FileName ="MSDOS.SYS" ></File>
<File FileName =" IO.SYS" ></File>
</DriverC>
</FileSystem>
请画出遍历全部文件名(FileName)的流程图(请使用递归算法)。
答:
void FindFile( Directory d )
{
FileOrFolders = d.GetFileOrFolders();
foreach( FileOrFolder fof in FileOrFolders )
{
if( fof is File )
You Found a file;
else if ( fof is Directory )
FindFile( fof );
}
}
33.写出一条Sql语句:取出表A中第31到第40记录(SQL Server以自动增加的ID做为主键,注意:ID可能不是连续的。
答:
解1: 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)
34.面向对象的语言具备________性、_________性、________性
答:封装、继承、多态。
35.能用foreach遍历访问的对象须要实现________________接口或声明________________方法的类型。
答:IEnumerable 、GetEnumerator。
36.GC是什么? 为何要有GC?
答:GC是垃圾收集器。程序员不用担忧内存管理,由于垃圾收集器会自动进行管理。要请求垃圾收集,能够调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
37.String s = new String("xyz");建立了几个String Object?
答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。
38.abstract class和interface有什么区别?
答:
声明方法的存在而不去实现它的类被叫作抽象类(abstract class),它用于要建立一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的状况。不能建立abstract 类的实例。然而能够建立一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的全部抽象方法提供实现,不然它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类能够在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,全部方法都是抽象的。多继承性可经过实现这样的接口而得到。接口中的全部方法都是抽象的,没有一个有程序体。接口只能够定义static final成员变量。接口的实现与子类类似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)全部这种接口的方法。而后,它能够在实现了该接口的类的任何对象上调用接口的方法。因为有抽象类,它容许使用接口名做为引用变量的类型。一般的动态联编将生效。引用能够转换到接口类型或从接口类型转换,instanceof 运算符能够用来决定某对象的类是否实现了接口。
39.启动一个线程是用run()仍是start()?
答:启动一个线程是调用start()方法,使线程所表明的虚拟处理机处于可运行状态,这意味着它能够由JVM调度并执行。这并不意味着线程就会当即运行。
run()方法能够产生必须退出的标志来中止一个线程。
40.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
答:接口能够继承接口。
抽象类能够实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
41.构造器(构造函数)Constructor是否可被override?
答:构造器Constructor不能被继承,所以不能重写Overriding,但能够被重载Overloading。
42.是否能够继承String类?
答:String类是密封类故不能够继承。
43.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,何时被执行,在return前仍是后?
答:会执行,在return前执行。
44.两个对象值相同(x.equals(y) == true),但却可有不一样的hash code,这句话对不对?
答:不对,有相同的hash code。
45.swtich是否能做用在byte上,是否能做用在long上,是否能做用在String上?
答:switch(expr1)中,expr1是一个整数表达式。所以传递给switch 和case 语句的参数应该是int、short、char 或者byte。long,string 都不能做用于swtich。
46.什么是SOAP,有哪些应用?
答:SOAP(Simple Object Access Protocol)简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议,使用SOAP,不用考虑任何特定的传输协议(最经常使用的仍是HTTP协议),能够容许任何类型的对象或代码,在任何平台上以任何语言相互通讯,这种相互通讯采用的是XML格式的消息。
SOAP也被称做XMLP,为两个程序交换信息提供了一种标准的工做机制。在各种机构之间经过电子方式相互协做的状况下彻底有必要为此制定相应的标准。
SOAP描述了把消息捆绑为XML的工做方式。它还说明了发送消息的发送方、消息的内容和地址以及发送消息的时间。SOAP是Web Service的基本通讯协议。SOAP规范还定义了怎样用XML来描述程序数据(Program Data),怎样执行RPC(Remote Procedure Call)。大多数SOAP解决方案都支持RPC-style应用程序。SOAP还支持 Document-style应用程序(SOAP消息只包含XML文本信息)。
最后SOAP规范还定义了HTTP消息是怎样传输SOAP消息的。MSMQ、SMTP、TCP/IP均可以作SOAP的传输协议。
SOAP 是一种轻量级协议,用于在分散型、分布式环境中交换结构化信息。 SOAP 利用 XML 技术定义一种可扩展的消息处理框架,它提供了一种可经过多种底层协议进行交换的消息结构。 这种框架的设计思想是要独立于任何一种特定的编程模型和其余特定实现的语义。
SOAP 定义了一种方法以便将 XML 消息从 A 点传送到 B 点。 为此,它提供了一种基于 XML 且具备如下特性的消息处理框架: 1) 可扩展, 2) 可经过多种底层网络协议使用, 3) 独立于编程模型
47.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。
48.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
答:都不能。
49.List, Set, Map是否继承自Collection接口?
答:List、Set是,Map不是
50.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==仍是equals()? 它们有何区别?
答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
51.数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有length()这个方法,有length的属性。String没有length()这个方法,有length属性。
52.sleep() 和wait() 有什么区别?
答:sleep()方法是使线程中止一段时间的方法。在sleep 时间间隔期满后,线程不必定当即恢复执行。这是由于在那个时刻,其它线程可能正在运行并且没有被调度为放弃执行,除非(a)“醒来”的线程具备更高的优先级
(b)正在运行的线程由于其它缘由而阻塞。
wait()方法是线程交互时,若是线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
53.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型,须要强制转换类型。可修改成s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。
54.谈谈final, finally, finalize的区别。
答:
final—修饰符(关键字)若是一个类被声明为final,意味着它不能再派生出新的子类,不能做为父类被继承。所以一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,能够保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在之后的引用中只能读取,不可修改。被声明为final的方法也一样只能使用,不能重载
finally—在异常处理时提供finally 块来执行任何清除操做。若是抛出一个异常,那么相匹配的catch 子句就会执行,而后控制就会进入finally 块(若是有的话)。
finalize—方法名。Java 技术容许使用finalize() 方法在垃圾收集器将对象从内存中清除出去以前作必要的清理工做。这个方法是由垃圾收集器在肯定这个对象没有被引用时对这个对象调用的。它是在Object 类中定义的,所以全部的类都继承了它。子类覆盖finalize() 方法以整理系统资源或者执行其余清理工做。finalize() 方法是在垃圾收集器删除对象以前对这个对象调用的。
55.如何处理几十万条并发数据?
答:用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.
56.Session有什么重大BUG,微软提出了什么方法加以解决?
答:是IIS中因为有进程回收机制,系统繁忙的话Session会丢失,能够用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,并且没法捕获Session的END事件。
57.进程和线程的区别?
答:
1.线程(Thread)与进程(Process)两者都定义了某种边界,不一样的是进程定义的是应用程序与应用程序之间的边界,不一样的进程之间不能共享代码和数据空间,而线程定义的是代码执行堆栈和执行上下文的边界。
2.一个进程能够包括若干个线程,同时建立多个线程来完成某项任务,即是多线程。而同一进程中的不一样线程共享代码和数据空间。用一个比喻来讲,若是一个家庭表明一个进程,在家庭内部,各个成员就是线程,家庭中的每一个成员都有义务对家庭的财富进行积累,同时也有权利对家庭财富进行消费,当面对一个任务的时候,家庭也能够派出几个成员来协同完成,而家庭以外的人则没有办法直接消费不属于本身家庭的财产。
或者:
进程是系统进行资源分配和调度的单位;
线程是CPU调度和分派的单位,一个进程能够有多个线程,这些线程共享这个进程的资源。
58.堆(Heap)和栈(stack)的区别?
答:
栈:由编译器自动分配、释放。在函数体中定义的变量一般在栈上。
堆:通常由程序员分配释放。用new、malloc等分配内存函数分配获得的就是在堆上。
59.成员变量和成员函数前加static的做用?
答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。好比类成员变量能够用来统计类实例的数量,类成员函数负责这种统计的动做。
60.ASP.NET与ASP相比,主要有哪些进步?
答:asp解释形,aspx编译型,性能提升,有利于保护源码。
61.产生一个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];
62.请说明在.net中经常使用的几种页面间传递参数的方法,并说出他们的优缺点。
答:
session(viewstate) 简单,但易丢失
application 全局
cookie 简单,但可能不支持,可能被伪造
input ttype="hidden" 简单,可能被伪造
url参数简单,显示于地址栏,长度有限
数据库稳定,安全,但性能相对弱
63.请指出GAC的含义?
答:全局程序集缓存。
64.向服务器发送请求有几种方式?
答:get,post。
get通常为连接方式,post通常为按钮方式。
65.DataReader与Dataset有什么区别?
答:一个是只能向前的只读游标,一个是内存中的表。
66.软件开发过程通常有几个阶段?每一个阶段的做用?
答:可行性分析(风险控制),需求分析,架构设计,代码编写,测试,部署,维护
67.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
答:using 引入名称空间或者使用非托管资源,使用完对象后自动执行实现了IDisposable接口的类的Dispose方法
new 新建实例或者隐藏父类方法
68.须要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,若是字符串中间还有连续空格的话,仅保留一个空格,即容许字符串中间有多个空格,但连续的空格数不可超过一个.
答:string inputStr=" xx xx ";
inputStr=Regex.Replace(inputStr.Trim()," *"," ");
69.下面这段代码输出什么?为何?
int i=5;
int j=5;
if (Object.ReferenceEquals(i,j))
Console.WriteLine("Equal");
else
Console.WriteLine("Not Equal");
答:不相等,由于比较的是对象
70.什么叫作SQL注入,如何防止?请举例说明。
答:利用SQL关键字对网站进行攻击。
预防SQL注入:过滤关键字、使用存储过程、参数化等
71.什么是反射?
答:动态获取程序集信息
或者:
程序集包含模块,而模块又包括类型,类型下有成员,反射就是管理程序集,模块,类型的对象,它可以动态的建立类型的实例,设置现有对象的类型或者获取现有对象的类型,能调用类型的方法和访问类型的字段属性。它是在运行时建立和使用类型实例
72.用Singleton如何写设计模式
答:static属性里面new ,构造函数private
73.什么是Application Pool?
答:Web应用,相似Thread Pool,提升并发性能。
74.什么是虚函数?什么是抽象函数?
答:虚函数:没有实现的,可由子类继承并重写的函数。
抽象函数:规定其非虚子类必须实现的函数,必须被重写。
75.什么是XML?
答:XML便可扩展标记语言。eXtensible Markup Language.标记是指计算机所能理解的信息符号,经过此种标记,计算机之间能够处理包含各类信息的文章等。如何定义这些标记,便可以选择国际通用的标记语言,好比HTML,也能够使用像XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL和XPath等。
76列举一下你所了解的XML技术及其应用
答:xml用于配置,用于保存静态数据类型。接触XML最多的是web Services.和config,存储常用可是不常常修改的数据
77.什么是Web Service?UDDI?
答:Web Service即是基于网络的、分布式的模块化组件,它执行特定的任务,遵照具体的技术规范,这些规范使得Web Service能与其余兼容的组件进行互操做。
UDDI 的目的是为电子商务创建标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业可以发现的访问协议的实现标准。
78.什么是ASP.net中的用户控件?
答:用户控件通常用在内容多为静态,或者少量会改变的状况下。.用的比较多,相似ASP中的include。可是功能要强大的多。
79.什么是code-Behind(代码后置)技术。
答:ASPX、RESX和CS三个后缀的文件,这个就是代码分离。实现了HTML代码和服务器代码分离,方便代码编写和整理。
80.ADO.net中经常使用的对象有哪些?
答:
SqlConnection 数据库链接对象
SqlCommand 数据库命令对象
SqlDataAdapter 数据适配器
SqlDataReader 数据库读取器,“只读、向前”,不能后退地读取数据
DataSet 数据集,至关于内存中的数据库
81. 62-63=1 等式不成立,请移动一个数字(不能够移动减号和等于号),使得等式成立,如何移动?
答:62移动成2的6次方
82.C#中property 与attribute的区别,他们各有什么用处,这种机制的好处在哪里?
答:一个是特性,用来标识类,方法等的附加性质;
一个是属性,用于存取类的字段,
83.XML 与HTML 的主要区别
答:
1. XML是区分大小写字母的,HTML不区分。
2. 在HTML中,若是上下文清楚地显示出段落或者列表键在何处结尾,那么你能够省略</p>或者</li>之类的结束标记。在XML中,绝对不能省略掉结束标记。
3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个/ 字符做为结尾。这样分析器就知道不用查找结束标记了。
4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。
5. 在HTML中,能够拥有不带值的属性名。在XML中,全部的属性都必须带有相应的值。
84.C#中的三元运算符是?
答:?:。
85.当整数a赋值给一个object对象时,整数a将会被?
答:装箱。
86.类成员有_____种可访问形式?
答:this.;
new Class().Method;
87.public static const int A=1;这段代码有错误么?是什么?
答:const不能用static修饰。
88.float f=-123.567F; int i=(int)f;i的值如今是_____?
答:-123。
89.委托声明的关键字是______?
答:delegate.
90.用sealed修饰的类有什么特色?
答:密封,不能继承。
91.在Asp.net中全部的自定义用户控件都必须继承自________?
答:Control。
92.在.Net中全部可序列化的类都被标记为_____?
答:[serializable]
93.在.Net托管代码中咱们不用担忧内存漏洞,这是由于有了______?
答:GC(垃圾收集器)。
94.下面的代码中有什么错误吗?_______
using System;
class A
{
public virtual void F()
{
Console.WriteLine("A.F");
}
}
abstract class B:A
{
public abstract override void F();
} // new public abstract void F();
答:abstract override 是不能够一块儿修饰.
95.当类T只声明了私有实例构造函数时,则在T的程序文本外部,___能够___(能够or 不能够)从T派生出新的类,不能够____(能够or 不能够)直接建立T的任何实例。
答:不能够,不能够。
96.下面这段代码有错误么?
switch (i)
{
case(): 答://case()条件不能为空
CaseZero();
break;
case 1:
CaseOne();
break;
case 2:
dufault; 答://wrong,格式不正确
CaseTwo();
break;
}
97.在.Net中,类System.Web.UI.Page 能够被继承么?
答:能够。
98..net的错误处理机制是什么?
答:.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的catch为止。
99.利用operator声明且仅声明了==,有什么错误么?
答:要同时修改Equale和GetHash() ? 重载了"==" 就必须重载"!="
100.在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息。
答:在form中重载DefWndProc函数来处理消息:
protected override void DefWndProc ( ref System.WinForms.Message m ) operator
{
switch(m.msg)
{
case WM_Lbutton :
///string与MFC中的CString的Format函数的使用方法有所不一样
string message = string.Format("收到消息!参数为:{0},{1}",m.wParam,m.lParam);
MessageBox.Show(message);///显示一个消息框
break;
case USER:
处理的代码
default:
base.DefWndProc(ref m);///调用基类函数处理非自定义消息。
break;
}
}
101.在.net(C# or vb.net)中如何取消一个窗体的关闭。
答:
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel=true;
}
102.在.net(C# or vb.net)中,Appplication.Exit 仍是Form.Close有什么不一样?(winform题目非asp.net题目)
答:一个是退出整个应用程序,一个是关闭其中一个form。
103.在C#中有一个double型的变量,好比10321.5,好比122235401.21644,做为货币的值如何按各个不一样国家的习惯来输出。好比美国用$10,321.50和$122,235,401.22而在英国则为£10 321.50和£122 235 401.22
答:System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-US");
//System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-GB");为英国货币类型
decimal y = 9999999999999999999999999999m;
string str = String.Format(MyCulture,"My amount = {0:c}",y);
104.某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循以下规则:
(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
105.对于这样的一个枚举类型:
enum Color:byte
{
Red,Green,Blue,Orange
}
答:string[] ss=Enum.GetNames(typeof(Color));
byte[] bb=Enum.GetValues(typeof(Color));
106. C#中 property 与attribute的区别,他们各有什么用处,这种机制的好处在哪里?
答:attribute:自定义属性的基类;property :类中的属性
107.C#能否对内存进行直接的操做?
答:在.net下,.net引用了垃圾回收(GC)功能,它替代了程序员。但在C#中,不能直接实现Finalize方法,而是在析构函数中调用基类的Finalize()方法
108.ADO.NET相对于ADO等主要有什么改进?
答:
1:ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序,
2:不使用com
3:不在支持动态游标和服务器端游标
4:,能够断开connection而保留当前数据集可用
5:强类型转换
6:xml支持
109.写一个HTML页面,实现如下功能,左键点击页面时显示“您好”,右键点击时显示“禁止右键”,并在2分钟后自动关闭页面。
答:
<script language=javascript>
setTimeout('window.close();',3000);
function show()
{
if (window.event.button == 1)
{
alert("左");
}
else if (window.event.button == 2)
{
alert("右");
}
}
</script>
110.大概描述一下ASP.NET服务器控件的生命周期
答:初始化,加载视图状态,处理回发数据,加载,发送回发更改通知,处理回发事件,预呈现保存状态,呈现,处置,卸载。
111.Anonymous Inner Class (匿名内部类) 是否能够extends(继承)其它类,是否能够implements(实现)interface(接口)?
答:不能,能够实现接口
112.Static Nested Class 和Inner Class的不一样(说得越多越好)
答:Static Nested Class是被声明为静态(static)的内部类,它能够不依赖于外部类实例被实例化。而一般的内部类须要在外部类实例化后才能实例化。
113.&和&&的区别。
答:&是位运算符,表示按位与运算;
&&是逻辑运算符,表示逻辑与(and).
114.HashMap和HashTable的区别。
答:HashMap是HashTable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap容许空(null)键值(key),因为非线程安全,效率上可能高于Hashtable。
115.概述反射和序列化(serializable)
反射:反射提供了封装程序集,模块和类型对象,能够用反射动态的建立类型的实例,将类型绑定到现有对象,或者从现有对象类型里获取类型,而后调用类型的方法或访问字段的属性。
序列化:将对象转换为另外一种媒介传输的格式过程,如,序列化一个对象,用HTTP经过internet在客户端和服务器之间传递该对象,在另外一端用反序列化从该流中从新获得对象。
116.Overloaded的方法是否能够改变返回值的类型?
答:Overloaded的方法是能够改变返回值的类型。
117.Error和Exception有什么区别?
答:
Error表示恢复不是不可能但很困难的状况下的一种严重问题。好比说内存溢出。不可能期望程序能处理这样的状况。
Exception表示一种设计或实现问题。也就是说,它表示若是程序运行正常,从不会发生的状况。
118.<% # %> 和<% %> 有什么区别?
答:<% # %>表示绑定的数据源
<% %>是服务器端代码块
119.你以为ASP.NET 2.0(VS2005)和你之前使用的开发工具(.Net 1.0或其余)有什么最大的区别?你在之前的平台上使用的哪些开发思想(pattern / architecture)能够移植到ASP.NET 2.0上(或者已经内嵌在ASP.NET 2.0中)
答:
1 ASP.NET 2.0 把一些代码进行了封装打包,因此相比1.0相同功能减小了不少代码.
2 同时支持代码分离和页面嵌入服务器端代码两种模式,之前1.0版本,.NET提示帮助只有在分离的代码文件,没法 在页面嵌入服务器端代码得到帮助提示,
3 代码和设计界面切换的时候,2.0支持光标定位.这个我比较喜欢
4 在绑定数据,作表的分页.UPDATE,DELETE,等操做均可以可视化操做,方便了初学者
5 在ASP.NET中增长了40多个新的控件,减小了工做量
120.重载与覆盖的区别?
答:
一、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系
二、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
三、覆盖要求参数列表相同;重载要求参数列表不一样。
四、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。
121.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
答:C#中索引器的实现过程,所谓索引器就是一类特殊的属性,经过它们你就能够像引用数组同样引用本身的类,显然,这一功能在建立集合类的场合特别适用,而在其余某些状况下,好比处理大型文件或者抽象某些有限资源等,能让类具备相似数组的行为
给类定义的索引器:
this [argument list]
{
get
{
// Get codes goes here
}
set
{
// Set codes goes here
}
}
如:
class Sample
{
public string this [int index]
{
get {return "You passed " + index; }
}
}
相似数组的行为常受到程序言的喜好,因此还能够为接口定义索引器,IList和IDictionary集合接口都声明了索引器,在为接口声明索引器的时候,记住声明只是表示索引器的存在,如:
interface IImplementMe {
string this[int index]
{
get;
set;
}
不是。能够用任意类型。
122.列举ADO.NET中的共享类和数据库特定类
共享类:DataSet、DataTable、DataRow、DataColumn、DataRelation、Constraint、
DataColumnMapping、DataTableMapping
特定类:(x)Connection、(x)Command、(x)CommandBuilder、(x)DataAdapter、
(x)DataReader、(x)Parameter、(x)Transaction
123.死锁的必要条件?
答:系统的资源不足,进程的推动的顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已得到资源不放,进程得到资源时,未完成前,不能强行剥夺。
124.Collection与Collections的区别?
答:Collection是集合类的上级接口,Collections是针对集合类的一个帮助类,它提供一系列静态方法来实现对各类集合的搜索,排序,线程安全操做。
125.分析如下代码。
public static void test(string ConnectString)
{
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
conn.ConnectionString = ConnectString;
try
{
conn.Open();
…….
}
catch(Exception Ex)
{
MessageBox.Show(Ex.ToString());
}
finally
{
if (!conn.State.Equals(ConnectionState.Closed))
conn.Close();
}
}
请问
1)以上代码能够正确使用链接池吗?
答:回答:若是传入的connectionString是如出一辙的话,能够正确使用链接池。不过如出一辙的意思是,连字符的空格数,顺序彻底一致。
2)以上代码所使用的异常处理方法,是否全部在test方法内的异常均可以被捕捉并显示出来?
答:只能够捕捉数据库链接中的异常吧. (finally中,catch中,若是有别的可能引起异常的操做,也应该用try,catch。因此理论上并不是全部异常都会被捕捉。)
126.const和ReadOnly的区别?
const是编程时申明常量,ReadOnly用来申明运行时常量
127.什么是WSE?目前最新的版本是多少?
答:WSE (Web Service Extension) 包来提供最新的WEB服务安全保证,目前最新版本2.0。
128.在下面的例子里
using System;
class A
{
public A()
{
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B()
{
y=-1;
}
public override void PrintFields()
{
Console.WriteLine("x={0},y={1}",x,y);
}
当使用new B()建立B的实例时,产生什么输出?
答:X=1,Y=0
129.下面的例子中
using System;
class A
{
public static int X;
static A()
{
X=B.Y+1;
}
}
class B
{
public static int Y=A.X+1;
static B(){}
static void Main()
{
Console.WriteLine("X={0},Y={1}",A.X,B.Y);
}
}
产生的输出结果是什么?
答:x=1,y=2
130.String和StringBuilder的区别。
答案:由于StringBuffer内部实现是char数组,默认初始化长度为16,每当字符串长度大于
char数组长度的时候,JVM会构造更大的新数组,并将原先的数组内容复制到新数组。String是不可变对象,每次"+="操做都会形成构造新的String对象。
关键点
1). 简单的认为 .append() 效率好于 "+=" 是正确的!
2). 不要使用 new 建立 String
3). 注意 .intern() 的使用
4). 在编译期可以肯定字符串值的状况下,使用"+"效率最高
5). 避免使用 "+=" 来构造字符串
6). 在声明StringBuffer对象的时候,指定合适的capacity,不要使用默认值(16)
在.Net中是StringBuilder,而在JAVA中是StringBuffer
String s=new String ("abc");
131.简述asp.net缓存技术。
1.整页缓存:适用于不须要频繁更新数据的页面,占用大量时间和资源才能编译生成的页面
2.页面部分缓存:适用于页面内某些部分可能每次请求时都须要最新数据的状况,用缓存后替换的方法:就是将整个页面缓存,而后替换页面中不须要缓存的部分,主要经过使用Substitution控件实现的。
注意:Substitution控件MethodName属性所调用的方法必须知足:
必须是静态的方法
返回类型必须是String型
参数类型必须是HttpContext类型
3.应用程序缓存:是用来存储与应用程序相关的对象,主要由Cache类,实现缓存依赖的添加,检索,删除,它给咱们提供了一种机制,使得咱们能够经过编码方式灵活的控制缓存的操做,与前两种缓存方式相比,应用程序缓存的优势是灵活性
注意添加缓存的方法:
1.指定键值
2.使用Add()方法
3.使用Insert()方法
132.Asp.net中经常使用的几种页面传递参数的方法,优缺点?
答:session(viewstate)简单,但易丢失
application 全局的
cookie简单,但可能不支持,长度有限
数据库,稳定,安全,但性能相对弱
133.ASP.NET和ASP相比的进步?
asp解释型,aspx编译型,性能高,能够跟美工的工做分开进行,更有利于团队开发
134.sleep() 和 wait() 有什么区别?
sleep()方法是将当前线程挂起指定的时间。
wait()释放对象上的锁并阻塞当前线程,直到它从新获取该锁。
135.new 关键字用法
new 运算符 用于建立对象和调用构造函数。
new 修饰符 用于向基类成员隐藏继承成员。
new 约束 用于在泛型声明中约束可能用做类型参数的参数的类型。
new实现多态
136.如何把一个Array复制到ArrayList里
实现1 string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(); list.AddRange(s);
实现2 string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(s);
137.DataGrid的DataSouse能够链接什么数据源
DataTable
DataView
DataSet
DataViewManager
任何实现IListSource接口的组件
任何实现IList接口的组件
138.什么是强类型,什么是弱类型?哪一种更好些?为何?
强类型是在编译的时候就肯定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会肯定类型。
没有好很差,两者各有好处,强类型安全,由于它事先已经肯定好了,并且效率高。
通常用于编译型编程语言,如c++,java,c#,pascal等,弱类型相比而言不安全,在运行的时候容易出现错误,但它灵活,多用于解释型编程语言,如javascript,vb等。
139.DateTime是否能够为null?
不能,由于其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才能被赋值null
140.using() 语法有用吗?什么是IDisposable?它是如何实现肯定性终结的
有用,实现了IDisposiable的类在using中建立,using结束后会自定调用该对象的Dispose方法,释放资源。不明白什么是肯定性终结
141.Assembly.Load("foo.dll"); 这句话是否正确?
错误,正确的应该是Assembly.Load("foo"); 或者Assembly.LoadFrom("foo.dll");
142.如何理解死锁的概念?死锁是如何造成的?在应用中应注意什么事项避免死锁?
死锁是一种条件,不只仅是在关系数据库管理系统(RDBMS) 中发生,在任何多用户系统中均可以发生的。当两个用户(或会话)具备不一样对象的锁,而且每一个用户须要另外一个对象的锁时,就会出现死锁。每一个用户都等待另外一个用户释放他的锁。当两个链接陷入死锁时,Microsoft? SQL Server? 会进行检测。其中一个链接被选做死锁牺牲品。该链接的事务回滚,同时应用程序收到错误。
阻塞
任何基于锁的并发系统都不可避免地具备可能在某些状况下发生阻塞的特征。当一个链接控制了一个锁,而另外一个链接须要冲突的锁类型时,将发生阻塞。其结果是强制第二个链接等待,或在第一个链接上阻塞。
其实全部的死锁最深层的缘由就是一个——资源竞争。
表现一:
一个用户A 访问表A(锁住了表A),而后又访问表B,另外一个用户B 访问表B(锁住了表B),而后企图访问表A。这时用户A因为用户B已经锁住表B,它必须等待用户B释放表B,才能继续,好了他老人家就只好老老实实在这等了。
一样用户B要等用户A释放表A才能继续这就死锁了。
解决方法:
这种死锁是因为你的程序的BUG产生的,除了调整你的程序的逻辑别无他法。
仔细分析你程序的逻辑:
1:尽可能避免同时锁定两个资源;
2: 必须同时锁定两个资源时,要保证在任什么时候刻都应该按照相同的顺序来锁定资源。
表现二:
用户A读一条纪录,而后修改该条纪录,这是用户B修改该条纪录,这里用户A的事务里锁的性质由共享锁企图上升到独占锁(for update),而用户B里的独占锁因为A有共享锁存在因此必须等A释放掉共享锁,而A因为B的独占锁而没法上升的独占锁也就不可能释放共享锁,因而出现了死锁。
这种死锁比较隐蔽,但其实在稍大点的项目中常常发生。
解决方法:
让用户A的事务(即先读后写类型的操做),在select 时就是用Update lock
143.什么是事务? 使用事务的语句有哪些?
答:事务是一种机制,是一个操做序列,它包括了一组数据库操做命令,而且全部的命令做为一个总体向
系统提交或者撤消操做请求,要么所有,要么所有不执行.
begin transaction
commit transaction
rollback transaction
145.请谈谈你对OOP的理解。
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个可以起到子程序做用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现总体运算,每一个对象都可以接收信息、处理数据和向其它对象发送信息。OOP 主要有如下的概念和组件:
组件 -数据和功能一块儿在运行着的计算机程序中造成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。
抽象性 -程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。
封装 -也叫作信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才能够访问其内部状态。每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。
多态性 -组件的引用和类集会涉及到其它许多不一样类型的组件,并且引用组件所产生的结果得依据实际调用的类型。
继承性 - 容许在现存的组件基础上建立子类组件,这统一并加强了多态性和封装性。典型地来讲就是用类来对组件进行分组,并且还能够定义新类为现存的类的扩展,这样就能够将类组织成树形或网状结构,这体现了动做的通用性。
146.UDP链接和TCP链接的异同。
答:前者只管传,无论数据到不到,无须创建链接.后者保证传输的数据准确,需要连结.
或者
TCP是传输控制协议,提供的是面向链接的,是可靠的,字节流服务,当用户和服务器彼此进行数据交互的时候,必须在他们数据交互前要进行 TCP链接以后才能传输数据。TCP提供超时重拨,检验数据功能。
UDP是用户数据报协议,是一个简单的面向数据报的传输协议,是不可靠的链接。
147.经常使用的调用web service方法有哪些?
答:
能够从浏览器、ASP页或其余WEB服务调用能够使用HTTP-GET HTTP-POST访问WEB服务也能够从ASP页或其余WEB服务向其余WEB服务发出SOAP请求HTTP-GET HTTP-POST SOAP 使用WEB服务代理
148.私有程序集与共享程序集有什么区别?
一个私有程序集一般为单个应用程序所使用,而且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集一般存储在全局程序集缓存(Global Assembly Cache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集一般是对许多应用程序都有用的代码库,好比.NET Framework类。
149.CLR与IL分别是什么含义?
CLR:公共语言运行时,相似于Java中的JVM,Java虚拟机;在.Net环境下,各类编程语言使用一种共同的基础资源环境,这就是CLR,CLR将直接与*做系统进行通讯,而编程语言如C#.NET将尽可能避免直接与*做系统直接通讯,增强了程序代码的执行安全性,能够这样看:CLR就是具体的编程语言如:C#.NET与*做系统之间的翻译,同时它为具体的编程语言提供了许多资源:
IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;全部.NET源代码(无论用哪一种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时(Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。
150.请解释ASP.NET中以什么方式进行数据验证
答:Asp.net 中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件
150.请解释web.config文件中的重要节点
appSettings包含自定义应用程序设置。
system.web 系统配置
compilation动态调试编译设置
customErrors自定义错误信息设置
authentication身份验证,此节设置应用程序的身份验证策略。
authorization受权, 此节设置应用程序的受权策略.
151.请解释ASP.NET中的web页面与其隐藏类之间的关系?
一个ASP.NET页面通常都对应一个隐藏类,通常都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明以下
<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>
Codebehind="Tst1.aspx.cs" 代表经编译此页面时使用哪个代码文件
Inherits="T1.Tst1" 表用运行时使用哪个隐藏类。
152.什么是viewstate,可否禁用?是否所用控件均可以禁用?
Viewstate是保存状态的一种机制,EnableViewState属性设置为false便可禁用。
153.发现不能读取页面上的输入的数据时颇有多是什么缘由形成的?怎么解决?
颇有多是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断
154.请解释什么是上下文对象,在什么状况下要使用上下文对象
上下文对象是指HttpContext类的Current 属性,当咱们在一个普通类中要访问内置对象(Response,Request,Session,Server,Application等)时就要以使用此对象
155.请简述一下用Socket进行同步通信编程的详细步骤
一、在应用程序和远程设备中使用协议和网络地址初始化套接字
二、在应用程序中经过指定端口和地址创建监听
三、远程设备发出链接请求
四、应用程序接受链接产生通讯scoket
五、应用程序和远程设备开始通信(在通信中应用程序将挂起直到通信结束)
六、通信结束,关闭应用程序和远程设备的Socket回收资源
156.能用foreach遍历访问的对象须要实现?
答:须要实现IEnumerable接口和GetEnumerator ()方法。
157.维护数据库的完整性、一致性、你喜欢用触发器仍是自写业务逻辑?为何
答:尽量用约束(包括CHECK、主键、惟一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式能够保证不管何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策
158.ASP.NET与ASP相比,主要有哪些进步?
答 asp.net 能够使用强类型语言
页面是编译,执行速度快, 增长安全性和可靠性
,经过继承机制来支持代码的重用,提供声明性服务器控件减小代码行数
Asp须要解释,执行速度慢,重用代码不方便,没有调试机制
159.用最有效的方法算出等已8对于几?
答:2<<3.
160.请解释转发与跳转的区别?
答:Transfer是转发包括HttpHandler对象,Redirect是跳转。
Server.Transfer(ASP 3.0 以上)和Response.Redirect 在之前的ASP中就存在了,Page.Navigate是ASP.NET Beta 1 提供的新功能,它们之间的区别在于:
一、 Server.Transfer - 用于把处理的控制权从一个页面转移到另外一个页面,在转移的过程当中,没有离开服务器,内部控件(如:request, session 等)的保存的信息不变,所以,你能从页面 A 跳到页面 B 而不会丢失页面 A 中收集的用户提交信息。此外,在转移的过程当中,浏览器的 URL 栏不变。
二、Response.Redirect - 发送一个 HTTP 响应到客户端,告诉客户端跳转到一个新的页面,客户端再发送跳转请求到服务器。使用此方法时,将没法保存全部的内部控件数据,页面 A 跳转到页面 B,页面 B 将没法访问页面 A 中 Form 提交的数据。
三、Page.Navigate - Page.Navigate 实现的功能和 Response.Redirect 差很少,它实际上包括三个步骤:首先调用 Response.Redirect,其次依次卸载全部的控件,最后调用 Response.End。
161.请解释ASP.NET中button、linkbutton、imagebutton及hyperlink这四个控件之间的区别。
答: button和imagebutton 将数据传递回服务器
hyperlinK 页面之间的导航
linkbutton主要用于将数据保存到服务器或访问服务器上的数据
162.若是出现ASP.NET中的事件不能触发可能因为什么缘由形成?
若是在web窗体中使用了验证控件,那么当验证控件中的验证逻辑没有经过时通常会使事件不能触发执行。
若是使用了诸如Textchange、Checkchange、Selectedindexchanged这类事件并在
服务器端进行了事件处理,可是没有设置AutoPostBack属性时会使事件不能触发执行。
163.什么状况用HTML控件,什么状况用WEB控件,并比较二者差异
答:客户端表现用html控件,若是想和server端交互,那么加上runat=server,它就成了服务器端控件,但它没有web控件的不少方法和属性,若是你须要用到,那么仍是用webcontrols。
164.你在写复杂web界面的时候遇到的最大困难是哪些方面
其实,复杂页面最大的困难并不是如何画出此界面,而是如何让此界面清晰有条理.咱们作页面,并不是仅显示数据,而是要准确/清晰地显示数据,想一想看,若是用户要在此页面中查找一个数据,却杂乱无章,难以查看,你说用户会满意吗?
166.NET里面的datagrid翻页大可能是先把数据读所有取到dataset里面,可是遇到10W条数据以上,这样的翻页事件开销会很大,页面执行起来反映很慢,你有什么好方法解决?
在数据量大的时候,有两个解决办法
1.使用存储过程.而且,并不是由于存储过程比较快的缘由.因为在数据库内部的存储过程,可以实现一些特殊的功能,好比说,能够直接根据当前的排序结果,仅仅取须要的几条数据,如此,不管数据是多少,它仅仅取须要的几条.
2.在实际的操做中,取出的数据,并不是你有10万条,它就会把10万条所有取出来,而是受限于服务器的缓存,其实一次通常仅取1000条左右的记录,不管你数据多少,它仅会一次取这么多出来.因此,配合分页控件,再配合.NET提供的加载N条数据的方法,数据量大的状况下,不见得就会慢.
据我测试,真正慢的,是在取数据总共多少条这个步骤上.此操做在数据少时,没有影响,但在百万条记录以上时,求取数据总数,耗时就会大量增长.因此,大数据量条件下,即不该再显示"共几条/当前第几条"这样的信息.
167.权限控制方面问题:
从面向对象的角度讲,若是一个程序中,没有应用角色及角色组的话,那么这个程序是不合格的.通常来讲,权限是由权限及流程角色组合而来的,若是仅有权限而没有角色,那么这个控制不灵活;若是仅有角色没有权限,那么这个控制不细致.
固然,用SESSION确定是要的,但这个SESSION,应当只记录当前用户的我的信息,好比他的用户名.在须要判断的时候,根据他的用户名(惟一),至数据库中去取他的权限,或在类中编写权限/角色,根据此用户的用户号及当前模块号,计算当前用户是否对当前页面有操做权限.不过,若是把用户的权限也取出来放在SESSION中的话,这种作法通常仅在很小的网站中使用,稍大一点的系统,基本不容许这么作,并且也作不到。
168.如何理解.net中的垃圾回收机制?
答:.NET中的垃圾回收机制是引用程序对内存的回收和释放。当每次用new关键字建立一个对象时,运行库都要从托管堆中为其分配内存,由于空间是有限的,最终垃圾回收机制是要回收不用的内存的。已释放内存,从新使用。
169.解释一下UDDI、WSDL的意义及其做用?
答:UDDI是统一描述集成协议,是一套基于Web的,分布式的,为WEB服务提供的信息注册的实现标准规范,同时为也是为企业自己提供的 Web服务注册以让别的企业可以发现并访问的协议标准。提供了基于标准的规范,用于描述和发现服务,还提供了一组基于因特网的实现。
WSDL这是一个基于XML的描述WEB服务的接口。
170.在.NET中全部类的基类是?
答:object。
171.WEB控件能够激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为何要使用自动传回。
在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,而后根据传回的状态信息自动调用服务端事件自动传回是当咱们在点击客户端控件时,采用提交表单的形式将数据直接传回到服务端
只有经过自动传回才能实现服务端事件的机制,若是没有自动回传机制就只能调用客户端事件,而不能调用服务端事件
172.值类型和引用类型的区别?
答:值类型的值是存放在堆栈中的,改变其值,不改变变量原有的值,而引用类型的值是存放在栈中的,其引用的地址是存放在堆栈中的,改变其值也就改变了变量原有的值。值类型不容许包含null值,然而可空类型能够将null赋值给值类型。
173.什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别做何解释?
答:应用程序域:就是为安全性,可靠性,隔离性,和版本控制,及卸载程序提供的隔离边界。它一般由运行库宿主建立,应用程序域提供了一个更安全,用途更广的处理单元。
托管代码:使用CLR编译语言编辑器开发编写的代码就叫托管代码。
装箱和拆箱:是把值类型转换为引用类型的过程,是隐式的,相反的过程就是拆箱,是显式的。
CTS是公共类型系统,CLS是公共语言规范,CLR公共语言运行库。
强类型系统:每一个变量和对象都必须具备申明类型。
174.构造器Constructor是否能够被继承?是否能够被Override?
答:Constructor不能够被继承,所以不能被重写(Overriding),但能够被重载(Overloading)。
175.当一个线程进入一个对象的方法后,其它线程是否能够进入该对象的方法
答:不能够,一个对象的方法只能由一个线程访问。
176.接口是否能够继承接口?抽象类是否能够实现接口?抽象类是否能够继承实体类?
答:接口是能够继承接口的,抽象类是能够实现接口的,抽象类能够继承实体类,可是有个条件,条件是,实体类必需要有明确的构造函数。
177.谈谈final,finally,finallize的区别?
答:final用于申明属性,方法和类,表示属性不可变,方法不能够被覆盖,类不能够被继承。
Finally是异常处理语句结构中,表示老是执行的部分。
Finallize表示是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法。
如下是08年3月新增面试题
1. asp.net中web应用程序获取数据的流程:
A.Web Page
B.Fill
C.Sql05
D.Data Sourse
E.DataGrid
F.DataSet
G.Select and Connect
Commands H.Sql Data Adapter
答案:a,e,d,f,h,g,b,c
2. Asp.net执行模式中各组件填入到对应位置:
A.Output Cache
B.Parser
C.Assembly Cache
D.IE
E.Memory
F.Compiler
WebPage被第一次请求时:
D->__->__->__->__->D
WebPage被第二次请求时:
D->__->__->D
WebPage的页面输出缓存被打开时:
D->__->D
答案:
WebPage被第一次请求时:
D->_b_->_f_->_a_->_e_->D
WebPage被第二次请求时:
D->_b_->_e_->D
WebPage的页面输出缓存被打开时:
D->_a_->D
3.两个数组[n] [m] n>m 第一个数组的数字无序排列第二个数组为空取出第一个数组的最小值放到第二个数组中第一个位置, 依次类推. 不能改变A数组,不能对之进行排序,也不能够倒到别的数组中。
int[] a = { -20, 9, 7, 37, 38, 69, 89, -1, 59, 29, 0, -25, 39, 900, 22, 13, 55 };
int[] b = new int[10];
int intTmp = a[0], intMaxNum;
for (int i = 0; i < a.Length; i++)
{
intTmp = a[i] > intTmp ? a[i] : intTmp;
}
intMaxNum = intTmp;
for (int j = 0; j < b.Length; j++)
{
for (int i = 0; i < a.Length; i++)
{
if (j == 0)
intTmp = a[i] < intTmp ? a[i] : intTmp;
else
{
if (a[i] > b[j - 1])
intTmp = a[i] < intTmp ? a[i] : intTmp;
}
}
b[j] = intTmp;
intTmp = intMaxNum;
}
foreach (int bb in b)
{
Console.WriteLine(bb);
}
Console.ReadLine();
4.请将字符串"I am a student"按单词逆序输出如"student a am I"
string S = "I am a student";
char[] C = new char[] { ' '};
string[] n =S.Split(C);
int length = S.Length;
for (int i =length-1 ; i >=0; i--)
{
Console.Write(n[i]);
if (i != 0)
{
Console.Write(" ");
}
}
在网上找来的,但愿对你们有所帮助。
1 (1)面向对象的语言具备__继承性_性、_封装性_性、_多态性 性。
(2)能用foreach遍历访问的对象须要实现 _ IEnumerable 接口或声明_ GetEnumerator 方法的类型。1.c#中的三元运算符是__?:__
2.当整数a赋值给一个object对象时,整数a将会被__装箱___?
3.类成员有__3__种可访问形式?
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() ? 重载了"==" 就必须重载 "!="
7.委托声明的关键字是___ delegate ___?
8.用sealed修饰的类有什么特色?不可被继承
9.在Asp.net中全部的自定义用户控件都必须继承自_ System.Web.UI.UserControl _______?
10.在.Net中全部可序列化的类都被标记为__[serializable]___?
11.在.Net托管代码中咱们不用担忧内存漏洞,这是由于有了_ gC __?
12.下面的代码中有什么错误吗?_ abstract override 是不能够一块儿修饰______
using System;
class A
{
public virtual void F(){
Console.WriteLine("A.F");
}
}
abstract class B:A
{
public abstract override void F();
}
13.当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不能够_(能够 or 不能够)从T派生出新的类,_不能够_(能够 or 不能够)直接建立T的任何实例。
14.下面这段代码有错误么?case():不行 default;
switch (i){
case():
CaseZero();
break;
case 1:
CaseOne();
break;
case 2:
dufault;
CaseTwo();
break;
}
15.在.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.如下关于ref和out的描述哪些项是正确的?(多选) ( ACD )
A.使用ref参数,传递到ref参数的参数必须最早初始化。
B.使用out参数,传递到out参数的参数必须最早初始化。
C.使用ref参数,必须将参数做为ref参数显式传递到方法。
D.使用out参数,必须将参数做为out参数显式传递到方法。
1.在对SQL Server 数据库操做时应选用(A)。
a)SQL Server .NET Framework 数据提供程序;
b)OLE DB .NET Framework 数据提供程序;
c)ODBC .NET Framework 数据提供程序;
d)Oracle .NET Framework数据提供程序;
2.下列选项中,(C)是引用类型。
a)enum类型 b)struct类型 c)string类型 d)int类型
3.关于ASP.NET中的代码隐藏文件的描述正确的是(C)
a)Web窗体页的程序的逻辑由代码组成,这些代码的建立用于与窗体交互。编程逻辑惟一与用户界面不一样的文件中。该文件称做为“代码隐藏”文件,若是用C#建立,该文件将具备“.ascx.cs”扩展名。
b)项目中全部Web窗体页的代码隐藏文件都被编译成.EXE文件。
c)项目中全部的Web窗体页的代码隐藏文件都被编译成项目动态连接库(.dll)文件。
d)以上都不正确。
4.如下描述错误的是(A)
a)在C++中支持抽象类而在C#中不支持抽象类。
b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件而且在同一处声明和定义类的成员。
c)在C#中可以使用 new 修饰符显式隐藏从基类继承的成员。
d)在C#中要在派生类中从新定义基类的虚函数必须在前面加Override。
5.C#的数据类型有(A)
a)值类型和调用类型; b)值类型和引用类型;c)引用类型和关系类型;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对象;
15.下列ASP.NET语句(b)正确地建立了一个与SQL Server 2000数据库的链接。
a)SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
b)SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
c)SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);
d)SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
16.Winform中,关于ToolBar控件的属性和事件的描述不正确的是(D)。
a)Buttons属性表示ToolBar控件的全部工具栏按钮
b)ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度
c)DropDownArrows属性代表工具栏按钮(该按钮有一列值须要如下拉方式显示)旁边是否显示下箭头键
d)ButtonClick事件在用户单击工具栏任何地方时都会触发
17.在ADO.NET中执行一个存储过程时,若是要设置输出参数则必须同时设置参数的方向和(B ),必要时还要设置参数尺寸。
a)大小; b)上限; c)初始值; d)类型;
18.若是将窗体的FormBoderStyle设置为None,则( B)。
a)窗体没有边框并不能调整大小; b)窗体没有边框但能调整大小;
c)窗体有边框但不能调整大小; d)窗体是透明的;
19.若是要将窗体设置为透明的,则( B)
a)要将FormBoderStyle属性设置为None; b)要将Opacity属性设置为小于100%得值;
c)要将locked 属性设置为True; d)要将 Enabled属性设置为True;
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;
25.下面关于XML的描述错误的是(D)。
a)XML提供一种描述结构化数据的方法;
b)XML 是一种简单、与平台无关并被普遍采用的标准;
c)XML文档可承载各类信息;
d)XML只是为了生成结构化文档;
1.装箱、拆箱操做发生在: ( C )
A.类与对象之间 B.对象与对象之间
C.引用类型与值类型之间 D.引用类型与引用类型之间
2.用户类若想支持Foreach语句须要实现的接口是: ( A )
A.IEnumerableB.IEnumerator
C.ICollectionD.ICollectData
3..Net Framework经过什么与COM组件进行交互操做?( C )
A.Side By SideB.Web Service
C.InteropD.PInvoke
4..Net依靠如下哪一项技术解决COM存在的Dll Hell问题的?( A )
A.Side By SideB.Interop
C.PInvokeD.COM+
5.装箱与拆箱操做是不是互逆的操做?( B )
A.是B.否
6.如下哪一个是能够变长的数组?( D )
A.Array B.string[]
C.string[N] D.ArrayList
7.用户自定义异常类须要从如下哪一个类继承:( A )
A.Exception B.CustomException
C.ApplicationException D.BaseException
8.如下代码段中可否编译经过?请给出理由。
try
{
}
catch(FileNotFoundException e1)
{
}
catch(Exception e2)
{
}
catch(IOException e3)
{
}
catch
{
}
9.对于一个实现了IDisposable接口的类,如下哪些项能够执行与释放或重置非托管资源相关的应用程序定义的任务?(多选) ( ABC )
A.Close B.DisposeC.Finalize
D.using E.Quit
10.Net依赖如下哪项技术实现跨语言互用性?( C )
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
2、C# 部分*
13.如下哪些能够做为接口成员?(多选) ( ABDE )
A.方法B.属性C.字段D.事件E.索引器
F.构造函数G.析构函数
14.如下关于ref和out的描述哪些项是正确的?(多选) ( ACD )
A.使用ref参数,传递到ref参数的参数必须最早初始化。
B.使用out参数,传递到out参数的参数必须最早初始化。
C.使用ref参数,必须将参数做为ref参数显式传递到方法。
D.使用out参数,必须将参数做为out参数显式传递到方法。
15.“访问范围限定于此程序或那些由它所属的类派生的类型”是对如下哪一个成员可访问性含义的正确描述?( B )
A.public B.protected C.internal D.protected internal
16.class Class1
{
private static int count = 0;
static Class1()
{
count++;
}
public Class1()
{
count++;
}
}
Class1 o1 = new Class1();
Class1 o2 = new Class1();
请问,o1.Count的值是多少?( C )
A.1 B.2 C.3 D.4
17.abstract class BaseClass
{
public virtual void MethodA()
{
}
public virtual void MethodB()
{
}
}
class Class1: BaseClass
{
public void MethodA(string arg)
{
}
public override void MethodB()
{
}
}
class Class2: Class1
{
new public void MethodB()
{
}
}
class MainClass
{
public static void Main(string[] args)
{
Class2 o = new Class2();
Console.WriteLine(o.MethodA());
}
}
请问,o.MethodA调用的是: ( A )
A.BaseClass.MethodAB.Class2.MethodA
C.Class1.MethodAD.都不是
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 )
A. <authorization>
<deny users=”allwin\tess, allwin\king”>
<allow users=”*”>
<deny users=”?”>
</authorization>
B. <authorization>
<allow users=”*”>
<deny users=”allwin\tess, allwin\king”>
<deny users=”?”>
</authorization>
C. <authorization>
<deny users=”allwin\tess, allwin\king”>
<deny users=”?”>
<allow users=”*”>
</authorization>
D. <authorization>
<allow users=”allwin\tess, allwin\king”>
<allow users=”*”>
</authorization>
E.<authorization>
<allow users=”*”>
<deny users=”allwin\tess, allwin\king”>
</authorization>
22.您要建立一个显示公司员工列表的应用程序。您使用一个DataGrid控件显示员工的列表。您打算修改这个控件以便在这个Grid的Footer显示员工合计数。请问您应该怎么作?( C? )
A.重写OnPreRender事件,当Grid的Footer行被建立时显示合计数。
B.重写OnItemCreated事件,当Grid的Footer行被建立时显示合计数。
C.重写OnItemDataBound事件,当Grid的Footer行被建立时显示合计数。
D. 重写OnLayout事件,当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错误。
24.您的公司有一个DB Server,名为AllWin,其上装了MS SQLSERVER 2000。如今须要您写一个数据库链接字符串,用以链接AllWin上SQL SERVER中的一个名为PubBase实例的Test库。请问,应该选择下面哪个字符串?( B )
A. “Server=AllWin;Data Source=PubBase;Initial Catalog=Test;Integrated Security=SSPI”
B. “Server= AllWin;Data Source=PubBase;Database=Test;Integrated Security= SSPI”
C. “Data Source= AllWin \PubBase;Initial Category=PubBase;Integrated Security= SSPI”
D. “Data Source= AllWin \ PubBase;Database=Test;Integrated Security= SSPI”
25.您为AllWin公司建立了一个ASP.NET应用程序。这个应用程序调用一个 Xml Web Service。这个 Xml Web Service 将返回一个包含了公司雇员列表的DataSet对象。请问您该如何在这个程序中使用这个 Xml Web Service?( ? )
A.在“引用”对话框的.Net标签中选择 System.Web.Services.dll。
B.在“Web引用”对话框中输入这个 XML Web service 的地址。
C.在您的 Global.asax.cs 中添加一条 using 语句并指定这个 XML Web service 的地址。
D.在您的 Global.asax.cs 中写一个事件处理器导入这个 Xml Web Service 相应的 .wsdl 和 .disco 文件。
26.您要建立一个ASP.NET应用程序在DataGrid控件中显示一个通过排序的列表。产品数据被存放于一个名为PubBase的Microsoft SQL Server 数据库。每一个产品的主键是ProductID,Numeric型而且每一个产品有一个字母描述字段,名为ProductName。您使用一个SqlDataAdapter对象和一个SqlCommand对象经过调用一个存储过程从数据库中获取产品数据。您将SqlCommand对象的CommandType属性设置为CommandType.StoredProcedure,并将它的CommandText属性设置为procProductList。您成功的获取了一个DataTable对象,其中是已经按ProductID降序排列的产品列表。您打算显示以相反的字母顺序排列的ProductName,请问该怎么作? ( B )
A. 将SqlCommand对象的CommandType属性修改成CommandType.Text,将CommandText属性修改成”SELECT * FROM procProductList ORDER BY ProductName DESC”。而后将这个DataTable对象绑定到DataGrid控件。
B. 建立一个基于这个DataTable对象的新的DataView并将这个DataView的Sort属性设置为“ProductName DESC”。而后将这个DataView对象绑定到DataGrid控件。
C. 将DataGrid控件的AllowSorting属性设置为True,并将DataGridColumn的SortExpression属性设置为 “ProductName DESC”.以显示ProductName。而后将这个DataTable对象绑定到DataGrid控件。
D. 将DataTable对象的DisplayExpression属性设置为 “ORDER BY ProductName DESC”.。而后将这个DataTable对象绑定到DataGrid控件。
76.C#代码实现,确保windows程序只有一个实例(instance)
///<summary>
///应用程序的主入口点。
///</summary>
[STAThread]
staticvoid Main()
{
//防止程序屡次运行
if(!OneInstance.IsFirst("GetPayInfo"))
{
MessageBox.Show ("警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!","程序错误提示:",MessageBoxButtons.OK,MessageBoxIcon.Stop);
return;
}
Application.Run(new Form1());
}
// ******************* 防止程序屡次执行 **************************
publicabstractclass OneInstance
{
///<summary>
///判断程序是否正在运行
///</summary>
///<param name="appId">程序名称</param>
///<returns>若是程序是第一次运行返回True,不然返回False</returns>
publicstaticbool IsFirst(string appId)
{
bool ret=false;
if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero)
{
CreateMutex(IntPtr.Zero,0,appId);
ret=true;
}
return ret;
}
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticextern IntPtr OpenMutex(
uint dwDesiredAccess, // access
int bInheritHandle, // inheritance option
string lpName // object name
);
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticextern IntPtr CreateMutex(
IntPtr lpMutexAttributes, // SD
int bInitialOwner, // initial owner
string lpName // object name
);
}
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参数简单,显示于地址栏,长度有限
数据库稳定,安全,但性能相对弱
2.override与重载的区别
Override用来重写父类的方法,重载使用相同名的方法或操做符拥有不一样类型的参数
3、.net的错误处理机制是什么
.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。
4、C#中接口和类的异同
接口和类都是类,不一样的事,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口能够实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的做用。
4、DataReader和DataSet的异同
DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操做数据库..任何对SqlConnection的操做都会引起DataReader的异常..由于DataReader每次只在内存中加载一条数据,因此占用的内存是很小的..由于DataReader的特殊性和高性能.因此DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库链接..读取完毕即放弃数据库链接..由于DataSet将数据所有加载在内存中.因此比较消耗内存...可是确比DataReader要灵活..能够动态的添加行,列,数据.对数据库进行回传更新操做...
1. 在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
Using 引入一个名子空间,或在使用了一个对像后自动调用其IDespose,New 实例化一个对像,或修饰一个方法,表此方法彻底重写此方法
2.在下面的例子里
using System;
class A
{
public A(){
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B(){
y=-1;
}
public override void PrintFields(){
Console.WriteLine("x={0},y={1}",x,y);
}
当使用new B()建立B的实例时,产生什么输出?X=1,Y=0
3.下面的例子中
using System;
class A
{
public static int X;
static A(){
X=B.Y+1;
}
}
class B
{
public static int Y=A.X+1;
static B(){}
static void Main(){
Console.WriteLine("X={0},Y={1}",A.X,B.Y);
}
}
产生的输出结果是什么?x=1,y=2
4.谈谈类和结构的区别?
最大区别一个是引用类型,一个是值类型 默认成员访问为public是另一个区别
1. 在.net(C# or vb.net)中如何得到当前窗体或控件的句柄,特别是控件自己的句柄(请列举)。
this(C#) Me(vb.net).
2在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息。
在form中重载DefWndProc函数来处理消息:
protected override void DefWndProc ( ref System.WinForms.Message m )
{
switch(m.msg)
{
case WM_Lbutton :
///string与MFC中的CString的Format函数的使用方法有所不一样
string message = string.Format("收到消息!参数为:{0},{1}",m.wParam,m.lParam);
MessageBox.Show(message);///显示一个消息框
break;
case USER:
处理的代码
default:
base.DefWndProc(ref m);///调用基类函数处理非自定义消息。
break;
}
}
3. 在.net(C# or vb.net)如何启动另外一个程序。process
4. 在.net(C# or vb.net)中如何取消一个窗体的关闭
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel=true;
}
5. 在.net(C# or vb.net)中,Appplication.Exit 仍是 Form.Close有什么不一样?
答案:一个是退出整个应用程序,一个是关闭其中一个form
6. 在C#中有一个double型的变量,好比10321.5,好比122235401.21644,做为货币的值如何按各个不一样国家的习惯来输出。好比美国用$10,321.50和$122,235,401.22而在英国则为£10 321.50和£122 235 401.22
答案:
System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-US");
//System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-GB");为英国货币类型
decimal y = 9999999999999999999999999999m;
string str = String.Format(MyCulture,"My amount = {0:c}",y);
7. 某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循以下规则:
(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
8. 62-63=1 等式不成立,请移动一个数字(不能够移动减号和等于号),使得等式成立,如何移动?
答案:62移动成2的6次方
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 的原理
利用反射,配置 将类于数据库表映射
7.用sealed修饰的类有什么特色
sealed 修饰符用于防止从所修饰的类派生出其它类。若是一个密封类被指定为其它类的基类,则会发生编译时错误。
密封类不能同时为抽象类。
sealed 修饰符主要用于防止非有意的派生,可是它还能促使某些运行时优化。具体说来,因为密封类永远不会有任何派生类,因此对密封类的实例的虚拟函数成员的调用能够转换为非虚拟调用来处理。
11.详述.NET里class和struct的异同!
class:放在 ? struct放在?
struct值传递
类与结构有不少类似之处:结构能够实现接口,而且能够具备与类相同的成员类型。然而,结构在几个重要方面不一样于类:结构为值类型而不是引用类型,而且结构不支持继承。结构的值存储在“在堆栈上”或“内联”。细心的程序员有时能够经过聪明地使用结构来加强性能。
12.概述.NET里对 remoting 和 webservice 两项技术的理解和实际中的应用。
远程逻辑调用,remoing接口只能用在.net中
13.什么是code-behind技术 aspx and cs
14.概述三层结构体系 web/business/dataaccess
15.asp.net如何实现MVC模式,举例说明! web/business/dataaccess
2.什么是ASP.net中的用户控件
答:用户控件就是.ascx扩展名的东西喽,能够拖到不一样的页面中调用,以节省代码.好比登录可能在多个页面上有,就能够作成用户控件,可是有一个问题就是用户控件拖到不一样级别的目录下后里面的图片等的相对路径会变得不许确,须要自已写方法调整.
3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别做何解释?
答:装箱就是把值类型转成引用类型,从MS IL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相反,重载就是指一个方法名同,参数个数不一样,返回值能够相同的方法.CLR是通用语言运行时,其它的不清楚.
4.列举一下你所了解的XML技术及其应用
答:XML但是好东西,保存配置,站与站之间的交流,WEB SERVICE都要用它.
5.值类型和引用类型的区别?写出C#的样例代码。
答:结构是值类型,类是引用类型,因此传结构就是值类型的应用啦,传对象或类就是引用类型的,这个不用多写了吧.
6.ADO.net中经常使用的对象有哪些?分别描述一下。
答:connection command sqladapter dataset datatable dataview等等.写不完了.
7.如何理解委托?
答:听说至关于函数指针,定义了委托就能够在不调用原方法名称的状况下调用那个方法.
msdn2005中是这样解释的:
委托具备如下特色:
委托相似于 C++ 函数指针,但它是类型安全的。
委托容许将方法做为参数进行传递。
委托可用于定义回调方法。
委托能够连接在一块儿;例如,能够对一个事件调用多个方法。
方法不须要与委托签名精确匹配。有关更多信息,请参见协变和逆变。
C# 2.0 版引入了匿名方法的概念,此类方法容许将代码块做为参数传递,以代替单独定义的方法。
8.C#中的接口和类有什么异同。
答:接口是负责功能的定义,项目中经过接口来规范类,操做类以及抽象类的概念!
而类是负责功能的具体实现!
在类中也有抽象类的定义,抽象类与接口的区别在于:
抽象类是一个不彻底的类,类里面有抽象的方法,属性,也能够有具体的方法和属性,须要进一步的专业化。
但接口是一个行为的规范,里面的全部东西都是抽象的!
一个类只能够继承一个基类也就是父类,但能够实现多个接口
9.。net中读写数据库须要用到哪些类?他们的做用
答:这个类自已能够写的啊,你是指基类吗?那configuration,sqlconnection,sqlcommand等都要用到.
10.UDP链接和TCP链接的异同。
答:前者只管传,无论数据到不到,无须创建链接.后者保证传输的数据准确,需要连结.
11.ASP.net的身份验证方式有哪些?分别是什么原理?
答:form认证,windows集成认证等,原理不清楚.
13.什么是code-Behind技术。
答:代码分离,这是个明智的东西,像ASP这样混成一堆很不爽.或者能够理解成HTML代码写在前台,C#代码写在后台.固然前台也有脚本,类的调用等,其实写在一块儿也是能够的.
15..net中读写XML的类都归属于哪些命名空间?
答:System.Xml
16.解释一下UDDI、WSDL的意义及其做用。
答:
17.什么是SOAP,有哪些应用。
答:SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最经常使用的仍是HTTP协议),能够容许任何类型的对象或代码,在任何平台上,以任何一直语言相互通讯。这种相互通讯采用的是XML格式的消息,具体请看:http://playist.blogchina.com/2521621.html
20.经常使用的调用webservice方法有哪些?
答:
能够从浏览器、ASP页或其余WEB服务调用能够使用HTTP-GET HTTP-POST访问WEB服务也能够从ASP页或其余WEB服务向其余WEB服务发出SOAP请求HTTP-GET HTTP-POST SOAP 使用WEB服务代理
6. 私有程序集与共享程序集有什么区别?
一个私有程序集一般为单个应用程序所使用,而且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集一般存储在全局程序集缓存(Global Assembly Cache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集一般是对许多应用程序都有用的代码库,好比.NET Framework类。
7. 请解释进程与线程的区别?进程与程序的区别?
通常,一个应用程序对应于一个或多个进程,能够把进程看做是该应用程序在*做系统中的标识;而一个进程一般由多个线程组成,而线程是*做系统为该应用程序分配处理时间的最小单元。
8. CLR与IL分别是什么含义?
CLR:公共语言运行时,相似于Java中的JVM,Java虚拟机;在.Net环境下,各类编程语言使用一种共同的基础资源环境,这就是CLR,CLR将直接与*做系统进行通讯,而编程语言如C#.NET将尽可能避免直接与*做系统直接通讯,增强了程序代码的执行安全性,能够这样看:CLR就是具体的编程语言如:C#.NET与*做系统之间的翻译,同时它为具体的编程语言提供了许多资源:
IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;全部.NET源代码(无论用哪一种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时(Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。
10 .请解释ASP。NET中以什么方式进行数据验证
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. 请解释ASP。NET中的web页面与其隐藏类之间的关系?
一个ASP.NET页面通常都对应一个隐藏类,通常都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明以下
<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" 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进行同步通信编程的详细步骤
一、在应用程序和远程设备中使用协议和网络地址初始化套接字
二、在应用程序中经过指定端口和地址创建监听
三、远程设备发出链接请求
四、应用程序接受链接产生通讯scoket
五、应用程序和远程设备开始通信(在通信中应用程序将挂起直到通信结束)
六、通信结束,关闭应用程序和远程设备的Socket回收资源
1、在C#中,string str = null 与 string str = “” 请尽可能使用文字或图象说明其中的区别。
string str = null 是不给他分配内存空间,而string str = “”给它分配长度为空字符窜的内存空间.
2、请详述在dotnet中类(class)与结构(struct)的异同:(10分)
Class能够被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.
3、根据委托(delegate)的知识,请完成如下用户控件中代码片断的填写:(10)
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
//请在如下补齐代码用来调用OnDBOperate委托签名的OnNew事件。
}
}
}
}
____________________________________________________________________
if( OnNew != null )
OnNew( this, e );
四、分析如下代码,完成填空(10分)
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i= j= i还真的不知道, j=10
5、SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句得到最后更新的事务号。(10)
select top ID from table1 order by LastUpdateData desc
8、简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。(10)
remoting是.net 中用来跨越machine, process, appdomain 进行方法调用的技术,对于三成结构的程序,就能够使用remoting技术来构建.它是分布应用的基础技术.至关于之前的DCOM Web Service是一种构建应用程序的普通模型,并能在全部支持internet网通信的操做系统上实施。Web Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型
9.什么叫作SQL注入,如何防止?请举例说明。
利用sql关键字对网站进行攻击。过滤关键字'等
所谓SQL注入(SQL Injection),就是利用程序员对用户输入数据的合法性检测不严或不检测的特色,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想获得的资料。
http://localhost/lawjia/show.asp?ID=444 and user>0,这时,服务器运行Select * from 表名 where 字段=444 and user>0这样的查询,固然,这个语句是运行不下去的,确定出错,错误信息以下:
·错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]将 nvarchar 值 'sonybb' 转换为数据类型为 int 的列时发生语法错误。
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];
20.请叙述类与结构的区别。
1)、结构是值类型;
2)、结构不支持继承;
3)、结构不能定义默认的构造函数;
4)、结构不能定义析构函数;
5)、结构不能使用初始值设置域值。
用.net作B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为何要这样分层?
答:
从下至上分别为:数据访问层、业务逻辑层(又或成为领域层)、表示层
数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问
业务逻辑层:是整个系统的核心,它与这个系统的业务(领域)有关
表示层:是系统的UI部分,负责使用者与整个系统的交互。
优势: 分工明确,条理清晰,易于调试,并且具备可扩展性。
缺点: 增长成本。
分层式结构究竟其优点何在?
一、开发人员能够只关注整个结构中的其中某一层;
二、能够很容易的用新的实现来替换原有层次的实现;
三、能够下降层与层之间的依赖;
四、有利于标准化;
五、利于各层逻辑的复用。
归纳来讲,分层式设计能够达至以下目的:分散关注、松散耦合、逻辑复用、标准定义。
分层式结构也不可避免具备一些缺陷:
一、下降了系统的性能。这是不言而喻的。若是不采用分层式结构,不少业务能够直接造访数据库,以此获取相应的数据,现在却必须经过中间层来完成。
二、有时会致使级联的修改。这种修改尤为体如今自上而下的方向。若是在表示层中须要增长一个功能,为保证其设计符合分层式结构,可能须要在相应的业务逻辑层和数据访问层中都增长相应的代码。
MVC模式
MVC(Model-View-Controller)把交互系统的组成分解成模型、视图、控制器三种部件
mvc的优势:
1.经过把项目分红model view和controller,使得复杂项目更加容易维护。
2.没有使用view state和服务器表单控件,能够更方便的控制应用程序的行为
3.应用程序经过controller来控制程序请求,能够提供丰富的url重写。
4.对单元测试的支持更加出色
5.在团队开发模式下表现更出众
MVC的不足:
(1)增长了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增长结构的复杂性,并可能产生过多的更新操做,下降运行效率。
(2)视图与控制器间的过于紧密的链接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是颇有限的,反之亦然,这样就妨碍了他们的独立重用。
(3)视图对模型数据的低效率访问。依据模型操做接口的不一样,视图可能须要屡次调用才能得到足够的显示数据。对未变化数据的没必要要的频繁访问,也将损害操做性能。
asp.net如何实现MVC模式,举例说明!
web/business/dataaccess
列举ASP.NET 页面之间传递值的几种方式。
1.使用QueryString, 如….?id=1; response. Redirect()….
2.使用Session变量
3.使用Server.Transfer
请说明在.net中经常使用的几种页面间传递参数的方法,并说出他们的优缺点。
QueryString 传递一个或多个安全性要求不高或是结构简单的数值。可是对于传递数组或对象的话,就不能用这个方法了
session(viewstate) 简单,但易丢失 做用于用户我的,过量的存储会致使服务器内存资源的耗尽。
application 对象的做用范围是整个全局,也就是说对全部用户都有效。其经常使用的方法用Lock和UnLock
cookie 简单,但可能不支持,可能被伪造 Cookie是存放在客户端的,而session是存放在服务器端的。并且Cookie的使用要配合ASP.NET内置对象Request来使用
input ttype="hidden" 简单,可能被伪造
url参数简单,显示于地址栏,长度有限
Server.Transfer 把流程从当前页面引导到另外一个页面中,新的页面使用前一个页面的应答流
数据库稳定,安全,但性能相对弱
什么是Viewstate?它有什么做用?
ViewState用来保存页面状态,就是说提交以后咱们还能够看到文本框里面的内容就是ViewState保存的功劳。
ViewState只维护当前页面的状态,不一样页面之间不能共享,Session能够。
ViewState你能够理解为一个隐藏控件。
ASP.Net页面生命周期
每一个页面的生命周期为用户的每一次访问,也就是说每一次客户端与服务器之间的一个往返过程.全局变量的生命周期在此之间.
1. Page_Init();
2. Load ViewState and Postback data;
3. Page_Load();
4. Handle control events;
5. Page_PreRender();
6. Page_Render();
7. Unload event;
8. Dispose method called;
ADO.net中经常使用的对象有哪些?分别描述一下。
答:
Connection 打开数据库链接
Command 执行数据库命令
DataAdapter 链接数据,执行数据库命令,填充DataSet
DataSet 数据在内存中的缓存,数据结构
DataReader 只读向前的读取数据库
DataReader和DataSet的异同
DataReader使用时始终占用SqlConnection,在线操做数据库..任何对SqlConnection的操做都会引起DataReader的异常..由于DataReader每次只在内存中加载一条数据,因此占用的内存是很小的..由于DataReader的特殊性和高性能.因此DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库链接..读取完毕即放弃数据库链接..由于DataSet将数据所有加载在内存中.因此比较消耗内存…可是确比DataReader要灵活..能够动态的添加行,列,数据.对数据库进行回传更新操做…
存储过程和sql语句的优缺点
优势:
1.提升性能,减小网络传输,节约时间 。
2.减小网络流量 存储过程位于服务器上,调用的时候只须传递存储过程的名称以及参数,不用每次访问都传递很长的sql 语句。
4.安全性 减小sql 注入式攻击。
5.可维护性高 更新存储过程一般比更改、测试以及从新部署程序集须要较少的时间和精力。
缺点:
1.交互性差 。
2.可移植性差
说出你所了解的数据库访问组件(例如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
什么是面向对象
万物都是对象,其主要特征:封装、继承、多态
怎样实现多态
1.经过对象直接调用成员函数时,始终默认使用该对象的类的成员函数(除非用::显示指定类名)。
2.经过指向对象的指针或引用调用成员函数时:若是该函数是实函数,则调用该指针或引用的类的成员函数;若是该函
数是虚函数,则调用该指针或引用指向的对象的类的成员函数。
面向对象的思想主要包括什么?
答:任何事物均可以理解为对象,其主要特征: 继承。封装。多态。特色:代码好维护,安全,隐藏信息
什么是装箱和拆箱?
答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。装箱(boxing)是将值类型的数据转化成引用类型,int i=3; objecto = i ;即是装箱过程,而拆箱(unboxing)是将饮用类型数据转换值类型,好比int j = (int)o;属于拆箱
什么是Interface?它与Abstract Class有什么区别?
接口(Interface)是用来定义行为规范的,不会有具体实现,而抽象类除定义行为规范外,能够有部分实现,但一
个类能实现多个接口,但只能继承一个父类
何时使用抽象类,何时用接口
接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中能够有方法的实
现,也能够定义非静态的类变量。抽象类是类,因此只能被单继承,可是接口却能够一次实现多个。抽象类能够
提供某些方法的部分实现,接口不能够.抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。
再抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要
从新编写(这就是为何说接口是一个类的规范了)。接口成员被定义为公共的,但抽象类的成员也能够是私有
的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。
此外接口不能包含字段、构造函数、析构函数、静态成员或常量。
什么是抽象类(abstract class)?
一种不能够被实例化的类。抽象类中通常含有抽象方法,固然也可有具体实现。继承类只有实现过全部抽
象类的抽象方法后才能被实例化。
什么时候必须声明一个类为抽象类?
当这个类中包含抽象方法时,或是该类并无彻底实现父类的抽象方法时。
接口(interface)是什么?
只含有共有抽象方法(public abstract method)的类。这些方法必须在子类中被实现。
为何不能指定接口中方法的修饰符?
接口中的方法用来定义对象之间通讯的契约,指定接口中的方法为私有或保护没有意义。他们默认为公有方法。
能够继承多个接口么?
固然。
那么若是这些接口中有重复的方法名称呢?
这种状况中你能够决定如何实现。固然须要特别得当心。可是在编译环节是没有问题的。
接口和抽象类的区别是什么?
接口中全部方法必须是抽象的,而且不能指定方法的访问修饰符。抽象类中能够有方法的实现,也能够指
定方法的访问修饰符。
详述.NET里class和struct的异同!
类是引用类型,能够继承类、接口和被继承,有默认的构造函数,有析构函数,能够使用abstract和sealed,有protected修饰符,必须使用new初始化。
结构是值类型,只能继承接口,不能被继承,没有默认的构造函数,能够建立,没有析构函数,不能够用abstract和sealed,没有protected修饰符,能够不用new初始化。
如何选择结构仍是类
1. 堆栈的空间有限,对于大量的逻辑的对象,建立类要比建立结构好一些
2. 结构表示如点、矩形和颜色这样的轻量对象
例如,若是声明一个含有 1000 个点对象的数组,则将为引用每一个对象分配附加的内存。
在此状况下,结构的成本较低。
3. 在表现抽象和多级别的对象层次时,类是最好的选择
4. 大多数状况下该类型只是一些数据时,结构时最佳的选择
C#中的接口和类有什么异同。
异:
不能直接实例化接口。
接口不包含方法的实现。
接口、类和结构可从多个接口继承。可是C# 只支持单继承:类只能从一个基类继承实现。
类定义可在不一样的源文件之间进行拆分。
同:
接口、类和结构可从多个接口继承。
接口相似于抽象基类:继承接口的任何非抽象类型都必须实现接口的全部成员。
接口能够包含事件、索引器、方法和属性。
一个类能够实现多个接口。
const和readonly有什么区别?
const关键字用来声明编译时常量,readonly用来声明运行时常量。
用sealed修饰的类有什么特色
sealed 修饰符用于防止从所修饰的类派生出其它类。若是一个密封类被指定为其余类的基类,则会发生编译时错误。
密封类不能同时为抽象类。
sealed 修饰符主要用于防止非有意的派生,可是它还能促使某些运行时优化。具体说来,因为密封类永
远不会有任何派生类,因此对密封类的实例的虚拟函数成员的调用能够转换为非虚拟调用来处理。
虚函数的用法
答:
1)virtual指明一成员函数为虚函数,而virtual仅用于类的定义里,在类外可不加此关键字.
2)一个类的成员函数被定义为虚函数时,子类该函数仍保持虚函数特征.
3)子类覆盖此函数时,定义里可不加virtual关键字,但函数声明要和基类的彻底一致!且此声明是必须的.
4)不是纯虚函数时,父类的虚函数必需要实现; 而若将父类的虚函数设定为纯虚函数时,子类必须要覆盖之并且必需要实现之!
解释virtual、sealed、override和abstract的区别
virtual申明虚方法的关键字,说明该方法能够被重写
sealed说明该类不可被继承
override重写基类的方法
abstract申明抽象类和抽象方法的关键字,抽象方法不提供实现,由子类实现,抽象类不可实例化。
重载和覆写有什么区别?
答:重载是方法的名称相同,不一样的参数类型,不一样的参数个数,不一样的参数顺序。覆写提供了子类中改变父类方法行为的实现(是进行基类中函数的重写)。
在方法定义中,virtual有什么含义?
答:被virtual修饰的方法能够被子类覆写
可以将非静态的方法覆写成静态方法吗?
答:不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改成override。
能够覆写私有的虚方法吗?
答:不能够,甚至子类中没法访问父类中的私有方法
可以阻止某一个类被其余类继承吗?
答:能够,使用关键字sealed
可以实现容许某个类别继承,但不容许其中的某个方法被覆写吗?
答:能够,标记这个类为public,并标记这个方法为sealed。
如何区别重载方法?
不一样的参数类型,不一样的参数个数,不一样的参数顺序
c#继承:
base 表示当前对象基类的实例(使用base关键字能够调用基类的成员)this表示当前类的实例
在静态方法中不能够使用base和this关键字
派生类会继承基类全部的成员可是构造函数和析构函数不会被继承
注意若是派生类的方法和基类的方法同名则基类中的方法将会被隐藏若是须要隐藏则能够使用关键字new来隐藏若是不写new关键字默认处理为隐藏虽然基类中同名的方法被隐藏了可是仍是能够经过base关键字来调用
//若是子类方法的方法名和基类的方法名相同时,系统将隐藏基类同名方法,自动调用子类的同名方法
//派生类会继承基类全部的成员,可是不能显示调用基类的是有成员
//在派生类中不能够调用基类的是有成员,如num1,num2,可是能够实现调用基类方法
virtual 用在基类中指定一个虚方法属性表示这个方法属性能够重写
override 用在派生类中表示对基类虚方法属性的重写
不能重写非虚方法或静态方法重写的基方法必须是 virtualabstract 或 override 的为何 override 也能够重写呢由于基类中的 override 其实是对基类的基类进行的重写因为继承可传递因此也能够对基类中 override 的方法进行重写
override 声明不能更改 virtual 方法的可访问性override 方法和 virtual 方法必须具备相同的访问级别修饰符
不能使用修饰符 newstaticvirtual 或 abstract 来修改 override 方法
重写属性声明必须指定与继承属性彻底相同的访问修饰符类型和名称而且被重写的属性必须是 virtualabstract 或 override 的
标记容许被重写修饰静态方法中不容许使用virtual关键字成员变量容许使用virtual关键字
属性能够被声明为虚属性(使用virtual关键字)
重写基类的方法(重写同名的方法中有virtual关键字的方法)
重写和隐藏的区别隐藏(new关键字)是给子类的同名方法分配新的内存空间重写(override关键字)是子类的同名方法放在基类同名方法的原来所在位置基类的同名方法位置向后移
属性也能够重写
virtual关键字和override关键字是成对出现的不然是语法错误
派生类能够经过将重写声明为 sealed 来中止虚拟继承这须要在类成员声明中的 override 关键字前面放置 sealed 关键字
在子类中重写基类中的虚方法时能够使用base关键字调用基类中的虚方法
//使用base关键能够在子类中访问基类同名的方法
//父类的引用指向子类的实例
Test ts = new Test2();
父类的引用指向子类的实例(调用的是子类的方法)
父类的引用只认识父类的方法不认识子类的新方法能够用来调用被子类覆盖的父类的方法
父类的引用依然到父类方法位置去调用若是基类方法被声明为virtual而且在子类中被override结果访问到的是被子类override的方法
C#中的委托是什么?事件是否是一种委托?
委托能够把一个方法做为参数代入另外一个方法。委托能够理解为指向一个函数的引用。是,是一种特殊的委托
C#中的堆和栈
栈(Stack)由系统管理生存期,存储代码执行和调用路径,执行或调用完毕即从栈中清除;
堆(Heap)中保存值和对象,调用完毕以后依然存在,由垃圾回收器查找栈中有无指向该值或对象的引用,无则从堆中删除
你对泛型了解吗?简单说明一下泛型的有什么好处?
泛型:经过参数化类型来实如今同一份代码上操做多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用
好处是——类型安全和减小装箱、拆箱。提升性能、类型安全和质量,减小重复性的编程任务
C#中全部对象共同的基类是什么?
System.Object.
如何在C#中实现继承?
在类名后加上一个冒号,再加上基类的名称。
C#支持多重继承吗?
不支持。能够用接口来实现。
被protected修饰的属性/方法在何处能够访问?
在继承或间接继承与这个类的子类中能够访问。
私有成员会被继承么?
会,可是不能被访问。因此看上去他们彷佛是不能被继承的,但实际上确实被继承了。
C#提供一个默认的无参构造函数,当我实现了另一个有一个参数的构造函数时,还想保留这个无参数的构
造函数。这样我应该写几个构造函数?
答:两个,一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,因此须要手动实现那个无参构造
函数。
简述 private、 protected、 public、 internal 修饰符的访问权限。
private : 私有成员, 在类的内部才能够访问。
protected : 保护成员,该类内部和继承类中能够访问。
public : 公共成员,彻底公开,没有访问限制。
internal: 在同一命名空间内能够访问。
new的两种用法
答:实例话对象,隐藏基类方法。
.new有几种用法
第一种:new Class();
第二种:覆盖方法
public new XXXX(){}
第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。
3.datagrid.datasouse能够链接什么数据源 [dataset,datatable,dataview]
dataset,datatable,dataview , IList
类成员有( )种可访问形式
可访问性:public ,protected ,private,internal
委托与事件的用法
答:public delegate void handels();//返回值是void,没有参数
public event handels eventHandels;
his.eventHandels = new handels(fun);
public void fun()
{ }
传入某个属性的SET方法的隐含参数的名称是什么?
答:value,它的类型和属性所声明的类型相同。
string是值类型仍是引用类型?
引用类型
String类与StringBuilder类有什么区别?为何在.Net类库中要同时存在这2个类?(简答)
stringBuilder比string更节约内存,因此stringBuilder更快
String 对象是不可改变的。每次使用 System.String 类中的方法之一或进行运算时(如赋值、拼接等)时,都要
在内存中建立一个新的字符串对象,这就须要为该新对象分配新的空间。而 StringBuilder 则不会。在须要对字
符串执行重复修改的状况下,与建立新的 String 对象相关的系统开销可能会很是昂贵。若是要修改字符串而不
建立新的对象,则能够使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串链接在一块儿时
,使用 StringBuilder 类能够提高性能。
在C#中,string str = null 与 string str = “” 请尽可能使用文字或图象说明其中的区别。
答:string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间。
ASP.net的身份验证方式有哪些?分别是什么原理?
答:Windwos(默认) 用IIS…From(窗体) 用账户….Passport(密钥)
Session有什么重大BUG,微软提出了什么方法加以解决?
答:是iis中因为有进程回收机制,系统繁忙的话Session会丢失,能够用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,并且没法捕获Session的END事件
c#中的三元运算符是?:
.能用foreach遍历访问的对象须要实现() 接口或声明 ( GetEnumerator)方法的类型。
.<%# %> 和 <% %> 有什么区别?
<%# %>表示绑定的数据源 <% %>是服务器端代码块 常量
在.net(C# or vb.net)中如何得到当前窗体或控件的句柄,特别是控件自己的句柄(请列举)
this(C#) Me(vb.net).
.C#能否对内存进行直接的操做?
在.net下,.net引用了垃圾回收(GC)功能,它替代了程序员 不过在C#中,不能直接实现Finalize方法,而是在析构函数中调用基类的Finalize()方法
DateTime是否能够为null? 不能,由于其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才能被赋值null
DateTime.Parse(myString); 这行代码有什么问题?
有问题,当myString不能知足时间格式要求的时候,会引起异常,建议使用DateTime.TryParse()
net的错误处理机制是:
采用try->catch->finally结构,
为何不提倡catch(Exception)
try..catch在出现异常的时候影响性能; 应该捕获更具体得异常,好比IOExeception,OutOfMemoryException等
catch(Exception e){throw e;}和catch(Exception e){throw;}的区别
将发生的异常对象抛出,另外一个只是抛出异常,并无抛出原异常对象)
error和exception区别:
error 表示恢复不是不可能但很困难的状况下的一种严重问题。好比说内存溢出。不可能期望程序能处理这样的状况。
exception 表示一种设计或实现问题。也就是说,它表示若是程序运行正常,从不会发生的状况。
GET与POST的区别
在 FORM提交的时候,若是不指定Method,则默认为GET请求,Form中提交的数据将会附加在url以后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISOLatin-1)值。GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;
在使用 POST 方法的状况下,传输数据时不会将数据做为 URL 的一部分;它们会做为一个独立的实体来传输。所以,POST 方法更安全,你也能够用这个方法传输更多的数据。并且用 POST 传输的数据不必定要是文本,用 GET 方法传输的却必定要是文本。
(1)get是从服务器上获取数据,post是向服务器传送数据。
(1)在客户端,Get方式在经过URL提交数据,数据在URL中能够看到;POST方式,数据放置在HTML HEADER内提交。
(2)对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
(2)GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
(3)安全性问题。正如在(1)中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。因此,若是这些数据是中文数据并且是非敏感数据,那么使用 get;若是用户输入的数据不是中文字符并且包含敏感数据,那么仍是使用 post为好。
Bind和Eval函数的区别
绑定表达式
<%# Eval("字段名") %>
<%# Bind("字段名") %>
1 Eval 单向绑定:数据是只读的
Bind 双向绑定:数据能够更改,并返回服务器端,服务器能够处理更改后的数据,如存入数据库.
2.当对次表达式操做时候,必须用Eval 如<%# Eval("字段名").ToString().Trim() %>
3 绑定控件的属性时要用Bind,而Eval则是其它一些。
例如:<asp:TextBox ID="First" RunAt="Server" Text=’<%# Bind("FirstName") %>’ />
例如:<td><%# Eval("ProductID") %></td>
Response.Redirect和Server.Transfer
请求的过程:
1)浏览器aspx文件请求—>服务器执行—>遇到Response.Redirect语句->服务器发送Response.Redirect后面的地址给客户机端的浏览器—>浏览器请求执行新的地址
2)浏览器aspx文件请求->服务器执行->遇到Server.Transfer语句->服务器转向新的文件
能够见Server.Transfer比Response.Redirect少了一次服务器发送回来和客户端再请求的过程.
跳转对象:
1)Response.Redirect能够切换到任何存在的网页。
2)Server.Transfer只能切换到同目录或者子目录的网页.
数据保密:
一、Response.Redirect后地址会变成跳转后的页面地址。
二、Server.Transfer后地址不变,隐藏了新网页的地址及附带在地址后边的参数值。具备数据保密功能。
传递的数据量(网址后附带的参数):
一、Response.Redirect可以传递的数据以2KB(也就是地址栏中地址的最大的长度)为限。
二、传递的数据超过2KB时,务必使用Server.Transfer。
Server.UrlEncode、HttpUtility.UrlDecode的区别
Server.UrlEncode的编码方式是按照本地程序设置的编码方式进行编码的,而HttpUtility.UrlEncode是默认的按照.net的utf-8格式进行编码的。
Static 和非Static的区别:
1、用Static声明的方法和变量,不须要实例化该类就调用;
2、Static的,就必定要用实例化的对象来调用,即用new来实例化。
举例说:
若是有一个类People,有一个Static的方法MiaoShu(), 调用方法就是 People.MisoShu()
有一个非Static的方法getName(), 调用方法就是 People p= new People(); p.getName();
如何实现链接池
确保你每一次的链接使用相同的链接字符串(和链接池相同);只有链接字符串相同时链接池才会工做。若是链接字符串不相同,应用程序就不会使用链接池而是建立一个新的链接。
优势
使用链接池的最主要的优势是性能。建立一个新的数据库链接所耗费的时间主要取决于网络的速度以及应用程序和数据库服务器的(网络)距离,并且这个过程一般是一个很耗时的过程。而采用数据库链接池后,数据库链接请求能够直接经过链接池知足而不须要为该请求从新链接、认证到数据库服务器,这样就节省了时间。
缺点
数据库链接池中可能存在着多个没有被使用的链接一直链接着数据库(这意味着资源的浪费)。
技巧和提示
1. 当你须要数据库链接时才去建立链接池,而不是提早创建。一旦你使用完链接当即关闭它,不要等到垃圾收集器来处理它。
2. 在关闭数据库链接前确保关闭了全部用户定义的事务。
3. 不要关闭数据库中全部的链接,至少保证链接池中有一个链接可用。若是内存和其余资源是你必须首先考虑的问题,能够关闭全部的链接,而后在下一个请求到来时建立链接池。
链接池FAQ
1.什么时候建立链接池?
当第一个链接请求到来时建立链接池;链接池的创建由数据库链接的链接字符创来决定。每个链接池都与一个不一样的链接字符串相关。当一个新的链接请求到来时若是链接字符串和链接池使用的字符串相同,就从链接池取出一个链接;若是不相同,就新建一个链接池。
2. 什么时候关闭链接池?
当链接池中的全部链接都已经关闭时关闭链接池。
3. 当链接池中的链接都已经用完,而有新的链接请求到来时会发生什么?
当链接池已经达到它的最大链接数目时,有新的链接请求到来时,新的链接请求将放置到链接队列中。当有链接释放给链接池时,链接池将新释放的链接分配给在队列中排队的链接请求。你能够调用close和dispose将链接归还给链接池。
4. 我应该如何容许链接池?
对于.NET应用程序而言,默认为容许链接池。(这意味着你能够没必要为这件事情作任何的事情)固然,若是你能够在SQLConnection对象的链接字符串中加进Pooling=true;确保你的应用程序容许链接池的使用。
5. 我应该如何禁止链接池?
ADO.NET默认为容许数据库链接池,若是你但愿禁止链接池,能够使用以下的方式:
1) 使用SQLConnection对象时,往链接字符串加入以下内容:Pooling=False;
2) 使用OLEDBConnection对象时,往链接字符串加入以下内容:OLE DB Services=-4;
提升.NET的性能
1 使用异步方式调用Web服务和远程对象
只要有可能就要避免在请求的处理过程当中对Web服务和远程对象的同步调用,由于它占用的是的ASP.NET 线程池中的工做线程,这将直接影响Web服务器响应其它请求的能力。
2 使用适当的Caching策略来提升性能
3 判断字符串,不要用""比较。
//避免
if(strABC!=null && strABC!="")
{}
//推荐
if(!strABC.IsNullOrEmpty)
{}
4 页面优化
5 用完立刻关闭数据库链接
6 尽可能使用存储过程,并优化查询语句
7 只读数据访问用SqlDataReader,不要使用DataSet
……….
.UDP链接和TCP链接的异同
答:前者只管传,无论数据到不到,无须创建链接.后者保证传输的数据准确,需要连结.
请解释转发与跳转的区别
转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理而后从服务端跳转到其它页面
跳转就是指客户端的跳转
简述你对XML Web Service的原理的认识?
答:利用SOAP(简单对象访问协议)在http上执行远程方法的调用,也能够使用WSDL(Web服务描述语言)来
完成完整的描述Web服务,而后用UDDI注册各个服务提供商提供的服务,以便共享他们。
什么叫应用程序域?
答:应用程序域能够理解为一种轻量级进程。起到安全的做用。占用资源小。
CTS、CLS、CLR分别做何解释?
答:CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。
什么是受管制的代码?
答:unsafe:非托管代码。不通过CLR运行。
什么是强类型系统?
答:RTTI:类型识别系统。
什么是code-behind技术
codebehind是指代码和用户界面分开
aspx and cs
在.net中,配件的意思是?
答:程序集。(中间语言,源数据,资源,装配清单)
经常使用的调用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜单选项
net Remoting 的工做原理是什么?
答:服务器端向客户端发送一个进程编号,一个程序域编号,以肯定对象的位置。
O/R Mapping 的原理
答:利用反射,配置将对象和数据库表映射
remoting和webservice两项技术的理解以及实际中的应用。
答:WS主要是可利用HTTP,穿透防火墙。而Remoting能够利用TCP/IP,二进制传送提升效率。
out保留字怎么使用,何时使用
答:有时为了从一个函数中返回多个值,咱们须要使用out关键字,把输出值赋给经过引用传递给方法的变量(也就是参数)。但C#要求变量再被引用的前必须初始化。在调用该方法时,还须要添加out关键字
PDB是什么东西? 在调试中它应该放在哪里?
PDB是用于保存调试和项目状态信息的文件,在debug的时候将产生pdb文件,调试的时候应该放在和对应应用
程序集相同目录。
使用ASMX的XML Web服务与使用SOAP的.NET Remoting的区别?
Web服务使用的消息机制,而Remoting采用的RPC. Web Service能用于不一样平台,不一样语言,Remoting只适用
于.Net。效率上Remoting高于Xml Web Service
类型系统是由XMLSchema表示的吗?CLS是XMLSchema表示的吗?
不清楚
从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别?
这个就像是强弱类型的比较类似,前期绑定是在编译的时候就肯定了要绑定的数据,然后期绑定是在运行的时候
才填充数据。因此前期绑定若是失败,会在编译时报编译错误,然后期绑定失败只有在运行时的时候才发生
调用Assembly.Load算静态引用仍是动态引用?
动态
列举一下你所了解的XML技术及其应用
答:保存配置,站与站之间的交流,WEB SERVICE。以及与数据库的数据交互等地方都要用它.
7.如何理解委托?
答:
至关于函数指针,定义了委托就能够在不调用原方法名称的状况下调用那个方法.
委托具备如下特色:
委托相似于 C++ 函数指针,但它是类型安全的。
委托容许将方法做为参数进行传递。
委托可用于定义回调方法。
委托能够连接在一块儿;例如,能够对一个事件调用多个方法。
方法不须要与委托签名精确匹配。有关更多信息,请参见协变和逆变。
C# 2.0 版引入了匿名方法的概念,此类方法容许将代码块做为参数传递,以代替单独定义的方法。
概述反射和序列化
反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对
象。您能够使用反射动态地建立类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。而后,
能够调用类型的方法或访问其字段和属性
序列化:序列化是将对象转换为容易传输的格式的过程。例如,能够序列化一个对象,而后使用 HTTP 通
过 Internet 在客户端和服务器之间传输该对象。在另外一端,反序列化将从该流从新构造对象。
11) XmlSerializer是如何工做的?使用这个类的进程须要什么ACL权限?
我只知道XmlSerializer是将对象的属性和字段进行序列化和反序列化的,序列化成为xml数据,反序列化再将xml
转换成对象。应该至少须要ACL权限中的读权限.
23)XmlSerializer使用的针对属性的模式有什么好处?解决了什么问题?
只序列化有用的数据,而不是序列化整个对象。实现不必的数据冗余,和提高序列化时的性能。
26.根据委托(delegate)的知识,请完成如下用户控件中代码片断的填写:
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
//请在如下补齐代码用来调用OnDBOperate委托签名的OnNew事件。
}
}
}
答:if( OnNew != null )
OnNew( this, e );
27.分析如下代码,完成填空
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i= j=
答:i=13,j=10
28.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号,
LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句得到最后更新的事务号
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)
29.根据线程安全的相关知识,分析如下代码,当调用test方法时i>10时是否会引发死锁?并简要说明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i–;
test(i);
}
}
}
答:不会发生死锁,(但有一点int是按值传递的,因此每次改变的都只是一个副本,所以不会出现死锁。但若是
把int换作一个object,那么死锁会发生)
3)什么叫圈复杂度(cyclomatic complexity)?为何它很重要?
不知道,望指教 ?
4)写一个标准的lock(),在访问变量的先后建立临界区,要有"双重检查",
lock的使用
public void LockTest()
{
Object lockObj = new Object();
lock (lockObj)
{
//
}
}
5)什么叫FullTrust?放入GAC的assembly是不是FullTrust的?
FullTrust彻底信任。放入GAC中的Assembly是否FullTrust个人理解不是。我理解FullTrust是能够经过代码设定的
6)代码加上须要安全权限的特性有什么好处?
能够更加灵活的设置对代码的访问权限,实现代码级保护。?这点不是特清楚,有明白的给讲解下
7) gacutil /l | find /i "Corillian" 这句命令的做用是什么?
全局程序集缓存中若是有Corillian就更新该程序集,没有就安装
8) sn -t foo.dll 这句命令是干吗的?
显示程序集foo.dll的公钥标记
9) DCOM须要防火墙打开哪些端口?端口135是干吗用的?
135端口,由于DCOM的端口号是随机分配的,默认状况下,会分配1024以上的端口号,因此默认状况下,DCOM
不能穿越防火墙。由于根本不晓得开哪一个端口。但有解决办法能够使DCOM分配的端口号固定,135是远程过程
调用(RPC)的默认端口
10)对比OOP和SOA,它们的目的分别是什么?
我想OOP和SOA应该没有对比性吧。OOP是一种编程模型,强调将复杂的逻辑分解出小的模块,特性是继承,封
装和多态 。而SOA是一个技术框架,技术框架和编程模型应该说不是一码事吧?SOA的思想是将业务逻辑封装
成服务或者中间件提供给应用程序来调用,固然其组件化思想是继承和发扬了OOP的优势。
13)Debug.Write和Trace.Write有什么不一样?什么时候应该使用哪个?
Debug.Write是调试的时候向跟踪窗口输出信息。当编译模式为debug的时候才有效,为release的时
候Debug.Write在编译的时候会忽略,而Trace则是在debug和release两种模式下都可以向跟踪窗口输出信息。
14)Debug Build和Release Build的区别,是否会有明显的速度变化?请说明理由。
Debug会产生pdb文件,release不会。Debug用于开发时的调试,不能要于部署,而release用于部署.debug编
译一些特殊代码,好比#IFDEBUG Debug.Write等,而Release则会将那些特殊标记省略
15)JIT是以assembly为单位发生仍是以方法为单位发生?这对于工做区有何影响?
方法,道理很简单,由于对于一次运行,极可能只用到一个程序集中极少数类型和对象,而大部分可能并不会被
使用,此时CLR傻乎乎的给整个程序集都给Compile了,CLR不是傻疯了么
17)a.Equals(b)和a == b同样吗?
不同。a.Equals(b)表示a与b一致, a==b表示a与b的值相等
18)在对象比较中,对象一致和对象相等分别是指什么?
对象一致是指两个对象是同一个对象,引用相同。而对象相等是指两个对象的值相同,但引用不必定相同
19)在.NET中如何实现深拷贝(deep copy)?
实现IClonable接口
20)请解释一下IClonable
IClonable方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。深度复制的特征的调用对象的构造
方法,建立新的对象,包括建立对象中嵌套的引用对象的新实例。而Shadow复制则不一样,是浅表复制,不从新
建立新实例。浅表复制的实现是Object.MemberWiseClone().
深度复制(Deep Copy)与浅表复制(Shadow Copy)的比较
public class Name
{
public string FirstName;
public string LastName;
}
public class Person:ICloneable
{
public Name PersonName;
public string Email;
/**//// <summary>
/// Deep Copy的例子
/// </summary>
/// <returns></returns>
public Object Clone()
{
Person p = new Person();
p.Email = this.Email;
p.PersonName = new Name();
p.PersonName.FirstName = this.PersonName.FirstName;
p.PersonName.LastName = this.PersonName.LastName;
return p;
}
public void ChangLastName(string lastName)
{
this.PersonName.LastName = lastName;
}
public static void Main()
{
Person p = new Person();
p.PersonName = new Name();
p.PersonName.LastName = "jill";
p.PersonName.FirstName = "zhang";
p.Email = "jillzhang@126.com";
Person sameNamePerson = p.Clone() as Person;
sameNamePerson.ChangLastName("clr_");
Console.WriteLine(p.PersonName.LastName);
Console.WriteLine(sameNamePerson.PersonName.LastName);
Person samePerson = p.MemberwiseClone() as Person;
samePerson.ChangLastName("Shadow");
Console.WriteLine(p.PersonName.LastName);
Console.WriteLine(sameNamePerson.PersonName.LastName);
Console.Read();
}
}
24)为何不该该在.NET中使用out参数?它究竟好很差?
我挺喜欢用out参数的,特别是当函数须要有多于1个返回的时候,我比较愿意用out,至于它好很差没研究过 ?
25)特性可以放到某个方法的参数上?若是能够,这有什么用?
能够,做用能够对参数有进一步限定,好比输入参数为int类型,能够经过容许AttributeTargets=ParameterInfo
的Attribute自定义实现来限定输入参数的大小,好比当输入参数小于100的时候便抱错。
对方法的参数设置Attribute的例子
[AttributeUsage(AttributeTargets.Parameter)]
public class ParameterAtt : Attribute
{
public int Min = 100;
}
public class AttributeTest
{
public void TestMethod([ParameterAtt(Min = 100)] int par1)
{
ParameterInfo para = MethodInfo.GetCurrentMethod().GetParameters()[0];
ParameterAtt att = ParameterAtt.GetCustomAttribute(para, typeof(ParameterAtt)) as
ParameterAtt;
if (att.Min > par1)
{
throw new Exception("要求para1最小为" + att.Min);
}
}
}
9.执行下面代码后:
String strTemp ="abcdefg 某某某";
Int i System.Text.Encoding.Default.GetBytes(strTemp).Length;
Int j = strTemp.Length;
问:i=(14 ) ;j=(11 )
i=(14 ) ;j=(11 ) 中文两个字节
12.概述.NET里对 remoting 和 webservice 两项技术的理解和实际中的应用。
远程逻辑调用,remoing接口只能用在.net中
9. 如何给服务器端控件增长客户端脚本。
答:控件的Attributes
6.私有程序集与共享程序集有什么区别?
一个私有程序集一般为单个应用程序所使用,而且存储于这个应用程序所在的目录之中,或此目录下面的一个子
目录中。共享程序集一般存储在全局程序集缓存(Global Assembly Cache)之中,这是一个由.NET运行时所维
护的程序集仓库。共享程序集一般是对许多应用程序都有用的代码库,好比.NET Framework类。
10 .请解释ASP.NET中以什么方式进行数据验证
Aps.net 中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集
中验证信息处理控件
11.WEB控件能够激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为何要
使用自动传回。
在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,而后根据传
回的状态信息自动调用服务端事件自动传回是当咱们在点击客户端控件时,采用提交表单的形式将数据直接传回
到务端
只有经过自动传回才能实现服务端事件的机制,若是没有自动回传机制就只能调用客户端事件,而不能调用服务
端事件
13. 请解释web.config文件中的重要节点
appSettings包含自定义应用程序设置。
system.web 系统配置
compilation动态调试编译设置
customErrors自定义错误信息设置
authentication身份验证,此节设置应用程序的身份验证策略。
authorization受权, 此节设置应用程序的受权策略.
14. 请解释ASP。NET中的web页面与其隐藏类之间的关系?
一个ASP.NET页面通常都对应一个隐藏类,通常都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx
的页面声明以下
<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" 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等)时就要以使用此对象
16、解释一下ajax及实现原理
答:Ajax的核心是JavaScript对象XmlHttpRequest,它使您能够使用JavaScript向服务器提出请求并处理响应, 而不阻塞用户,异步请求。
1、delegate是引用类型仍是值类型?enum、int[]和string呢(难度系数40%)?
答案:delegate引用类型,enum值类型,int[]引用类型,string引用类型。
3、base这个关键字有哪几种语法?override呢?
答案:base两个语法,分别是调用基类构造函数和调用基类方法,override用于重写基类方法。
4、请指出C#中是否有下列关键字?virtual、sealed、abstract、import、as、in、goto、final、Const、signed、
String(提示,仅指出C#中没有的便可)(难度系数50%)。
答案:没有的关键字:import、final、Const、signed、String
5、在循环:for( int i = 0; i < 100; i++ ) Console.WriteLine( i );中,请指出i++的执行时机。
答案:在Console.WriterLine( i );执行以后
6、试说明continue关键字的用处。
答案:立刻开始下一次循环,忽略循环体余下的语句
7、object是C#的关键字吗?请指出C#中有哪些类型关键字,如int、float。(提示,写得越多越好)。
答案:是,object、int、uint、long、ulong、short、ushort、byte、sbyte、char、float、double、decimal、boo
l,如回答:enum、struct、class、delegate也算对。
8、C#的XML文档注释中(以///开头的注释),<summary>标签用于描述什么?<param>标签呢?
答案:<summary>用于某个元素的概要说明,<param>用于某个方法的参数概要说明。
9、咱们知道[]是数组和索引器的访问操做符,但它还有一个语法,是什么?
答案:特性(Attribute)
18.请叙述属性与索引器的区别。
属性 索引器
经过名称标识。 经过签名标识。
经过简单名称或成员访问来访问。 经过元素访问来访问。
能够为静态成员或实例成员。 必须为实例成员。
属性的 get 访问器没有参数。 索引器的 get 访问器具备与索引器相同的形参表。
属性的 set 访问器包含隐式 value 参数。 除了 value 参数外,索引器的 set 访问器还具备与索引
器相同的形参表。
1) 描述线程与进程的区别?
线程(Thread)与进程(Process)两者都定义了某种边界,不一样的是进程定义的是应用程序与应用程序之间的边
界,不一样的进程之间不能共享代码和数据空间,而线程定义的是代码执行堆栈和执行上下文的边界。一个进程可
以包括若干个线程,同时建立多个线程来完成某项任务,即是多线程。而同一进程中的不一样线程共享代码和数据
空间。用一个比喻来讲,若是一个家庭表明一个进程,在家庭内部,各个成员就是线程,家庭中的每一个成员都有
义务对家庭的财富进行积累,同时也有权利对家庭财富进行消费,当面对一个任务的时候,家庭也能够派出几个
成员来协同完成,而家庭以外的人则没有办法直接消费不属于本身家庭的财产。
2) 什么是Windows服务,它的生命周期与标准的EXE程序有什么不一样
Windows服务是运行在windows后台指定用户下(默认System)的应用程序,它没有标准的UI界面,想比标准
的EXE程序,Windows服务是在服务开始的时候建立,而在服务结束的时候销毁,并且能够设置服务是否与操做
系统一块儿启动,一块儿关闭。它支持三种方式:1)自动方式 2)手动方式 3)禁用 。自动方式的时
候,windows服务将在OS启动后自动启动运行,而手动方式则必须手工启动服务,禁用的状况下服务将不能被
启动。另外标准的EXE默认使用的当前登陆的用户,而windows服务则默认使用System用户,这在对系统资源访
问的时候特别须要注意。
3) Windows单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存同样吗?这对于系统设计有什么
影响?
这个须要针对硬件平台,公式为单个进程能访问的最大内存量=2的处理器位数次方/2,好比一般状况下,32位
处理器下,单个进程所能访问的最大内存量为:232 /2 = 2G 。单个进程能访问的最大内存量是最大虚拟内存
的1/2,由于要分配给操做系统一半虚拟内存。
4) 什么是强类型,什么是弱类型?哪一种更好些?为何?
强类型是在编译的时候就肯定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会肯定类型。没有
好很差,两者各有好处,强类型安全,由于它事先已经肯定好了,并且效率高。通常用于编译型编程语
言,如c++,java,c#,pascal等,弱类型相比而言不安全,在运行的时候容易出现错误,但它灵活,多用于解释型编
程语言,如javascript,vb等
5) PID是什么?在作系统的故障排除时如何使用它?
PID是进程编号,在系统发现故障的时候,能够根据它寻找故障所发生的具体进程,而且可经过visual studio.net
等ide将故障进程附加到进程中进行调试(debug)
6) 单个TCP/IP端口上可以被多少个进程侦听?
1个
7) 什么是GAC?它解决了什么问题?
Gloal Assembly Cache,全局应用程序集缓存。它解决了几个程序共享某一个程序集的问题。没必要再将那个被共
享的程序集拷贝到应用程序目录了,其实这道理很简单,.net应用程序在加载的时候,会首先查看全局应用程序
集缓存,若是有就能够直接使用,没有再到应用程序目录进行查找。
1.白盒测试和黑盒测试
答:黑盒测试:已知产品的功能设计规格,能够进行测试证实每一个实现了的功能是否符合要求。
白盒测试:已知产品的内部工做过程,能够经过测试证实每种内部操做是否符合设计规格要求,全部内部成
分是否以通过检查。
软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看作一个黑盒子,测试人员彻底
不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明
。所以黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现如下几类错误:
一、是否有不正确或遗漏的功能?
二、在接口上,输入是否能正确的接受?可否输出正确的结果?
三、是否有数据结构错误或外部信息(例如数据文件)访问错误?
四、性能上是否可以知足要求?
五、是否有初始化或终止性错误?
软件的白盒测试是对软件的过程性细节作细致的检查。这种方法是把测试对象看作一个打开的盒子,它容许
测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序全部逻辑路径进行测试。经过在不
同点检查程序状态,肯定实际状态是否与预期的状态一致。所以白盒测试又称为结构测试或逻辑驱动测试。白盒
测试主要是想对程序模块进行以下检查:
一、对程序模块的全部独立的执行路径至少测试一遍。
二、对全部的逻辑断定,取“真”与取“假”的两种状况都能至少测一遍。
三、在循环的边界和运行的界限内执行循环体。
四、测试内部数据结构的有效性,等等。
请简述一下用Socket进行同步通信编程的详细步骤
一、在应用程序和远程设备中使用协议和网络地址初始化套接字
二、在应用程序中经过指定端口和地址创建监听
三、远程设备发出链接请求
四、应用程序接受链接产生通讯scoket
五、应用程序和远程设备开始通信(在通信中应用程序将挂起直到通信结束)
六、通信结束,关闭应用程序和远程设备的Socket回收资源
OSI网络结构的七层模型及其核心思想是什么
第七层:应用层
定义了用于在网络中进行通讯和数据传输的接口 – 用户程式;
提供标准服务,好比虚拟终端、文件以及任务的传输和处理;
第六层:表示层
掩盖不一样系统间的数据格式的不一样性;
指定独立结构的数据传输格式;
数据的编码和解码;加密和解密;压缩和解压缩
第五层:会话层
管理用户会话和对话;
控制用户间逻辑链接的创建和挂断;
报告上一层发生的错误
第四层:传输层
管理网络中端到端的信息传送;
经过错误纠正和流控制机制提供可靠且有序的数据包传送;
提供面向无链接的数据包的传送;
第三层:网络层
定义网络设备间如何传输数据;
根据惟一的网络设备地址路由数据包;
提供流和拥塞控制以防止网络资源的损耗
第二层:数据链路层
定义操做通讯链接的程序;
封装数据包为数据帧;
监测和纠正数据包传输错误
第一层:物理层
定义经过网络设备发送数据的物理方式;
做为网络媒介和设备间的接口;
定义光学、电气以及机械特性。
2 几十上百万行,如何快速查询出表数据
答:用分页存储过程
/*
函数名称: GetRecordFromPage
函数功能: 获取指定页的数据
参数说明: @tblName 包含数据的表名
@fldName 关键字段名
@PageSize 每页记录数
@PageIndex 要获取的页码
@OrderType 排序类型, 0 – 升序, 1 – 降序
@strWhere 查询条件 (注意: 不要加 where)
*/
CREATE PROCEDURE GetRecordFromPage
@tblName varchar(255), — 表名
@fldName varchar(255), — 字段名
@PageSize int = 10, — 页尺寸
@PageIndex int = 1, — 页码
@OrderType bit = 0, — 设置排序类型, 非 0 值则降序
@strWhere varchar(2000) = ” — 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar(6000) — 主语句
declare @strTmp varchar(1000) — 临时变量
declare @strOrder varchar(500) — 排序类型
if @OrderType != 0
begin
set @strTmp = ‘<(select min’
set @strOrder = ‘ order by [' + @fldName + '] desc’
end
else
begin
set @strTmp = ‘>(select max’
set @strOrder = ‘ order by [' + @fldName +'] asc’
end
set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from ['
+ @tblName + '] where [' + @fldName + ']‘ + @strTmp + ‘(['
+ @fldName + ']) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ ['
+ @fldName + '] from [' + @tblName + ']‘ + @strOrder + ‘) as tblTmp)’
+ @strOrder
if @strWhere != ”
set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from ['
+ @tblName + '] where [' + @fldName + ']‘ + @strTmp + ‘(['
+ @fldName + ']) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ ['
+ @fldName + '] from [' + @tblName + '] where ‘ + @strWhere + ‘ ‘
+ @strOrder + ‘) as tblTmp) and ‘ + @strWhere + ‘ ‘ + @strOrder
if @PageIndex = 1
begin
set @strTmp = ”
if @strWhere != ”
set @strTmp = ‘ where (‘ + @strWhere + ‘)’
set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from ['
+ @tblName + ']‘ + @strTmp + ‘ ‘ + @strOrder
end
exec (@strSQL)
GO
3、数据库查询优化:
一、多态性,多种数据库兼容;
二、支持翻页,支持查询总数,页码显示;
三、能处理100万以上数据量;
答:
CREATE PROCEDURE dbo.LSP_SP_SelectElementByPage
@SelectFields varchar(200),/*要查询的字段列表*/
@Condition varchar(300),/*查询条件*/
@PageSize int =20,/*页面大小,默认为20*/
@PageNumber int =1/*页号,默认为第一页*/
/*@PageCount int out返回知足条件的总页数*/
AS
begin
declare @count int
select @count =count(*) from lsp_t_elementInfo
if(@count %@PageSize=0)
set @count = @count/@PageSize
else
set @count = @count/@PageSize +1
select @count PageCount
select IDENTITY(int,1,1) as iid,ElementName,Type into #temptable from LSP_T_ElementInfo
select * from #temptable where iid between @PageSize * (@PageNumber -1) and @PageSize * @PageNumber
end
GO
1.两个表,写查询语句,根据两个字段一个是升序,一个将序。
答:select * from a,b where a.字段1 = b.字段1 order by a.字段2 asc,b.字段2 desc
2.根据第一题,每页面显示10条记录,在第25页时怎样显示
答:
/*
函数名称: GetRecordFromPage
函数功能: 获取指定页的数据
参数说明: @tblName 包含数据的表名
@fldName 关键字段名
@PageSize 每页记录数
@PageIndex 要获取的页码
@OrderType 排序类型, 0 – 升序, 1 – 降序
@strWhere 查询条件 (注意: 不要加 where)
*/
CREATE PROCEDURE GetRecordFromPage
@tblName varchar(255), — 表名
@fldName varchar(255), — 字段名
@PageSize int = 10, — 页尺寸
@PageIndex int = 1, — 页码
@OrderType bit = 0, — 设置排序类型, 非 0 值则降序
@strWhere varchar(2000) = ” — 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar(6000) — 主语句
declare @strTmp varchar(1000) — 临时变量
declare @strOrder varchar(500) — 排序类型
if @OrderType != 0
begin
set @strTmp = ‘<(select min’
set @strOrder = ‘ order by [' + @fldName + '] desc’
end
else
begin
set @strTmp = ‘>(select max’
set @strOrder = ‘ order by [' + @fldName +'] asc’
end
set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from ['
+ @tblName + '] where [' + @fldName + ']‘ + @strTmp + ‘(['
+ @fldName + ']) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ ['
+ @fldName + '] from [' + @tblName + ']‘ + @strOrder + ‘) as tblTmp)’
+ @strOrder
if @strWhere != ”
set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from ['
+ @tblName + '] where [' + @fldName + ']‘ + @strTmp + ‘(['
+ @fldName + ']) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ ['
+ @fldName + '] from [' + @tblName + '] where ‘ + @strWhere + ‘ ‘
+ @strOrder + ‘) as tblTmp) and ‘ + @strWhere + ‘ ‘ + @strOrder
if @PageIndex = 1
begin
set @strTmp = ”
if @strWhere != ”
set @strTmp = ‘ where (‘ + @strWhere + ‘)’
set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from ['
+ @tblName + ']‘ + @strTmp + ‘ ‘ + @strOrder
end
exec (@strSQL)
GO
2.写出一条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)
3.public class c{ public c(string a) : this() {;}; public c() {;} } 解释第一个构造函数中发生了什么?这个构造函数有什么用?
(第一个构造函数调用了第二个构造函数,这个构造函数构造了一个c对象的实例。)
4.一个长度为10000的字符串,经过随机从a-z中抽取10000个字符组成。请用c#语言编写主要程序来实现。
答:
using System.Text;
StringBuilder sb = new StringBuilder(0, 10000);
string strABC = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
string[] ABC = strABC.Split(‘,’);
int len = ABC.Length;
Random rd = new Random();
for (int i = 0; i < 10000; i++)
{
sb.Append(ABC[rd.Next(len)]);
}
5.产生一个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];
2.如何把一个Array复制到ArrayList里
答:
foreach( object o in array )arrayList.Add(o);
8.用C#写一段选择排序算法,要求用本身的编程风格。
答:private int min;
public void xuanZhe(int[] list)//选择排序
{
for (int i = 0; i < list.Length – 1; i++)
{
min = i;
for (int j = i + 1; j < list.Length; j++)
{
if (list[j] < list[min])
min = j;
}
int t = list[min];
list[min] = list[i];
list[i] = t;
}
}
4.写一个函数计算当参数为N的值:1-2+3-4+5-6+7……+N
答:public int returnSum(int n)
{
int sum = 0;
for (int i = 1; i <= n; i++)
{
int k = i;
if (i % 2 == 0)
{
k = -k;
}
sum = sum + k;
}
return sum;
}
public int returnSum1(int n)
{
int k = n;
if (n == 0)
{
return 0;
}
if (n % 2 == 0)
{
k = -k;
}
return aaa(n – 1) + k;
}
7. 某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循以下规则 :
(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
62-63=1 等式不成立,请移动一个数字(不能够移动减号和等于号),使得等式成立,如何移动?
答案:62移动成2的6次方
17、列出经常使用的使用javascript操做xml的类包
答:
XML.prototype.xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
XML.prototype.InitXML=InitXML;
XML.prototype.getFirstChild=getFirstChild;
XML.prototype.getLastChild=getLastChild;
XML.prototype.getChild=getChild; // 取得节点值
XML.prototype.getNodeslength=getNodeslength; // 最得节点下的子节点的个数
XML.prototype.getNode=getNode; // 取得指定节点
XML.prototype.delNode=delNode; // 删除指定节点,若是节点相同,则删除最前面的节点.
XML.prototype.getNodeAttrib=getNodeAttrib; // 取得节点的指定属性值.
XML.prototype.InsertBeforeChild=InsertBeforeChild; // 在指定节点以前插入一个节点.
XML.prototype.InsertChild=InsertChild; // 在指定节点下插入节点.
XML.prototype.setAttrib=setAttrib; // 设置指定属性的值.
XML.prototype.setNodeValue=setNodeValue; // 设置指定节点的值.
XML.prototype.CreateNodeS=CreateNodeS; // 建立一个指定名的节点.
XML.prototype.addAttrib=addAttrib; // 为指定节点添加指定属性,并设置初值.
XML.prototype.FindString=FindString; // 在指定节点下查找字符串.
给定如下XML文件,完成算法流程图<FileSystem>
< DriverC >
<Dir DirName=”MSDOS622”>
<File FileName =” Command.com” ></File>
</Dir>
<File FileName =”MSDOS.SYS” ></File>
<File FileName =” IO.SYS” ></File>
</DriverC>
</FileSystem>
请画出遍历全部文件名(FileName)的流程图(请使用递归算法)。
答:
void FindFile( Directory d )
{
FileOrFolders = d.GetFileOrFolders();
foreach( FileOrFolder fof in FileOrFolders )
{
if( fof is File )
You Found a file;
else if ( fof is Directory )
FindFile( fof );
}
}
6.C#代码实现,确保windows程序只有一个实例(instance)
///<summary>
///应用程序的主入口点。
///</summary>
[STAThread]
staticvoid Main()
{
//防止程序屡次运行
if(!OneInstance.IsFirst("GetPayInfo"))
{
MessageBox.Show ("警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!","程序错误提
示:",MessageBoxButtons.OK,MessageBoxIcon.Stop);
return;
}
Application.Run(new Form1());
}
// ******************* 防止程序屡次执行 **************************
publicabstractclass OneInstance
{
///<summary>
///判断程序是否正在运行
///</summary>
///<param name="appId">程序名称</param>
///<returns>若是程序是第一次运行返回True,不然返回False</returns>
publicstaticbool IsFirst(string appId)
{
bool ret=false;
if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero)
{
CreateMutex(IntPtr.Zero,0,appId);
ret=true;
}
return ret;
}
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticextern IntPtr OpenMutex(
uint dwDesiredAccess, // access
int bInheritHandle, // inheritance option
string lpName // object name
);
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticextern IntPtr CreateMutex(
IntPtr lpMutexAttributes, // SD
int bInitialOwner, // initial owner
string lpName // object name
);
}
做者:曾祥展
出处:学无止境-博客园 (http://www.cnblogs.com/zengxiangzhan/)
版权声明:本文的版权归做者与博客园共有。转载时须注明本文的详细连接,不然做者将保留追究其法律责任。
————————————————————————————————————————————–
从学习中获得乐趣,从乐趣中获得灵感,从灵感中创造真知。Think well,just do it.
1.C#中全部类型的基类是什么?请具体说明。
答:在.NET CTS(Common TypeSystem)中,每个类型都直接或间接继承自Object类,全部这些类型其实都包含于命名空间System中,因此C#中全部类型的基类是 System.Object。CTS中所定义的每种类型,若是不是引用类型,那么就是值类型。引用类型直接继承自Object,全部值类型直接继承自 ValueType,ValueType又继承自Object。
.NET中引用类型包括:Class, Interface, Array, String, Delegate等.除此以外的那些类型都是值类型。
2. 简述 private、 protected、 public、 internal 修饰符的访问权限。
答:private : 私有成员, 在类的内部才能够访问。
protected : 保护成员,在该类内部和继承类中能够访问。
public : 公共成员,彻底公开,没有访问限制。
internal: 在同一命名空间内能够访问。
3.列举ASP.NET页面之间传递值的几种方式。
答:1.URL传值
这是经典的传值方式, 如XXX.aspx?id=1&name=c; 不过所传递的值是会显示在浏览器的地址栏上的,并且不能传递对象。因此这种方法通常用于传递的值少且安全性要求不高的状况下。
2.Session传值
这种方法将每份数据存储于服务器变量中,能够传递比较多的数据,而且安全性较高,因此经常使用于用户身份的验证功能中。不过,Session变量若是存储过多的数据会消耗过多的服务器资源,编程者在使用时应该慎重。Session可在应用程序的多个页面中以名称/值对的方式共享,直到浏览用户关闭本身的浏览器或者服务器Session超时(可设置,默认为20分钟)中止。
Session具备如下特色:
Session中的数据保存在服务器端;
Session中能够保存任意类型的数据;
Session默认的生命周期是20分钟,能够手动设置更长或更短的时间。
3.Cookie传值
Cookie 是一种比较特殊的数据存储方式,由于这种方式将数据存储于浏览用户的电脑中,以文本文件的形式存在于磁盘中。这种方式很是有意思,不少登陆系统就是利用 Cookie实现用户自动登陆。即用户登陆一次的登陆信息将被写入到用户电脑的Cookie文件中,下次登陆时,网站自动读取该Cookie完成身份验证。经过Cookie传递数据虽然很方便,保存时间能够自由设置,可是安全性不高,编程者不该过于依赖Cookie,而应采用结合的方式完成敏感数据的存储。
Cookie保存数据有如下特色:
Cookie中的数据保存在客户端;
Cookie中只能保存字符串类型的数据,若是须要在Cookie中保存其它类型数据,须要将其转换成字符串类型后保存;
Cookie也有其默认生命周期,也能够手动设置,最大可设置成50年以后过时。
4.Server.Transfer传值
这个方法的步骤相对较多,使用该方法能够在另外一个页面以公开对象属性的方式来存取值,使用这种方法是面向对象的。该方法的代码编写并不复杂,首先经过定义一个public权限的属性,该属性可返回所需传递的值。而后在第二个页面中,使用Context.Handler属性来得到前一个页面实例对象的引用,便可经过访问自定义的属性获取须要的值。
5.Application传值
严格地说应该是经过HttpApplication对象在服务器端生成一个状态变量来存储所需的信息,该HttpApplication对象变量的可用范围覆盖整个WEB应用程序。因此该对象通常存储一些要公布的信息,如在线人数等,而对于那些涉及用户我的的敏感数据则不用这种方法存储。 HttpApplication对象有两个经常使用的方法,即Lock和UnLock方法,可用于处理多个用户对存储在Application变量中的数据进行写入的问题。Lock方法锁定所有的Application变量,从而阻止其余用户修改Application对象的变量值,UnLock方法则解除对 HttpApplication对象变量的锁定。经过HttpApplication对象传值的方法和Session比较类似,可是Session是对于每一个单独的用户,当该用户关闭浏览器,则Session失效。HttpApplication对象存储的变量是针对全部访问程序的用户,即便有用户关闭了浏览器,变量的值不会丢失。
6.跨页面传送
跨页面传送和调用HttpServerUtility对象的Transfer方法有类似之处,不过效率更高。由于调用HttpServerUtility对象的Transfer方法是基于服务器的方法,而跨页面传送是基于浏览器端的。这个方法主要是设置控件的“PostBackUrl”属性,使该控件(如 Button)操做后转向指定页面,而且这个指定页面能够直接获取前一个页面的全部控件对象及其属性值。
7.若是有特殊须要,还能够使用其余方法,例如经过数据库存储临时数据等。
4.什么是委托?事件是否是一种委托?委托和事件的区别?为何要使用委托?
答 : 委托是指具备相同函数签名(返回类型相同,参数类型、参数顺序及参数个数相同)的函数或方法的抽象,关键字为delegate。
主要用途是三个:1)函数回调;2)传递方法;3)事件机制。
一个委托就是一个对象,它包含一个引用,指向一个方法。一旦建立并加以初始化,就能够将委托做为参数传入另外一个方法并调用,委托不带方法体。
事件是一种消息机制,一个狭义的委托,也就是事件是一个用于事件驱动模型的专用委托,对事件的声明,实际是声明一个私有的委托变量,对委托变量进行封装,即委托变量加上event关键字后,无论其前面的访问修饰符是public仍是private,编译器都会将其编译为private。事件是一种特殊的委托。
委托是一个类,它定义了方法的类型,使得能够将方法看成另外一个方法的参数来进行传递,这种将方法动态地赋给参数的作法,能够避免在程序中大量使用If-Else(Switch)语句,同时使得程序具备更好的可扩展性。以委托为参数的函数具备必定的通用性。使用委托能够将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是由于此变量表明一个方法),能够依次调用全部绑定的方法。
5.override与重载的区别
答 :重载是方法的名称相同,但参数或参数类型不一样。进行屡次重载以适应不一样的需求。
override 是进行对基类中方法的重写。主要针对标识virtual的虚函数。两者实质就不一样。
6.一列数的规则以下: 一、一、二、三、五、八、1三、2一、34…… 求第30位数是多少, 用递归算法实现。
答:public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if(i > 0 && i <= 2)
return 1;
else return Foo(i -1) + Foo(i – 2);
}
}
7.请编程遍历页面上全部TextBox控件并给它赋值为string.Empty?
答:
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
tb.Text = String.Empty ;
}
}
8.请编程实现一个冒泡排序算法?
答:
int [] array = new int ;
int temp = 0 ;
for (int i = 0 ; i < array.Length – 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
}
}
9.求如下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
答:
int Num = this.TextBox1.Text.ToString() ;
int Sum = 0 ;
for (int i = 0 ; i < Num + 1 ; i++)
{
if((i%2) == 1)
{
Sum += i ;
}
else
{
Sum = Sum – I ;
}
}
System.Console.WriteLine(Sum.ToString());
System.Console.ReadLine() ;
10.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
答:C# 中的索引器一般用于索引数组,索引器不单能索引数字(数组下标),还能索引一些HASHMAP的字符串,因此,一般来讲,C#中类的索引器一般只有一个,就是THIS,但也能够有无数个,只要你的参数列表不一样就能够了,索引器和返回值无关。 不是只能根据数字进行索引,能够用任意类型。
11.在下面的例子里
using System;
class A
{
public A()
{
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B()
{
y=-1;
}
public override void PrintFields()
{
Console.WriteLine("x={0},y={1}",x,y);
}
}
当使用new B()建立B的实例时,产生什么输出?
答:X=1,Y=0;
12.ASP.net的身份验证方式有哪些?分别是什么原理?
答:Windows验证(默认)用IIS,Forms验证用帐户,Passport验证用密钥。
13.在C#中,string str = null 与 string str = "" 请尽可能使用文字或图象说明其中的区别。
答:string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间。
14.请详述在.NET中类(class)与结构(struct)的异同?
答:结构不能有默认的构造函数,为结构的副本是由编译器建立和销毁的,因此不须要默认的构造函数和析构函数。结构是值类型,因此对结构变量所作的改变不会影响其原值,而类是引用类型,改变其变量的值会改变其原值。向方法传递结构时是经过值传递的,而不是经过引用。Class能够被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的。类能够实现接口。Class默认成员访问为private的,而结构是public的。
15.根据委托(delegate)的知识,请完成如下用户控件中代码片断的填写:
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
//请在如下补齐代码用来调用OnDBOperate委托签名的OnNew事件。
}
}
}
答:if( OnNew != null )
OnNew( this, e );
16.分析如下代码,完成填空
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i= j=
答:i=13,j=10
17.给定如下XML文件,完成算法流程图。
<FileSystem>
< DriverC >
<Dir DirName=”MSDOS622”>
<File FileName =” Command.com” ></File>
</Dir>
<File FileName =”MSDOS.SYS” ></File>
<File FileName =” IO.SYS” ></File>
</DriverC>
</FileSystem>
请画出遍历全部文件名(FileName)的流程图(请使用递归算法)。
答:伪代码:
void FindFile( Directory d )
{
FileOrFolders = d.GetFileOrFolders();
foreach( FileOrFolder fof in FileOrFolders )
{
if( fof is File )
You Found a file;
else if ( fof is Directory )
FindFile( fof );
}
}
C#:
Public void DomDepthFirst(XmlNode currentNode)
{
XmlNode node=currentNode.FirstChild;
while(node!=null)
{
DomDepthFirst(node);
node=node.NextSibling;
}
if(node.Name=="File")
{
Console.Write(((XmlElement)node).GetAttribute("FileName")+"\r\n");
}
}
18.GC是什么? 为何要有GC?
答:GC是垃圾收集器。程序员不用担忧内存管理,由于垃圾收集器会自动进行管理。要请求垃圾收集,能够调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
19.String s = new String("xyz");建立了几个String Object?
答:两个对象,一个是“xyz”,一个是指向“xyz”的引用对象s。
20.抽象类和接口有什么区别?
答:抽象类是abstract修饰符用于表示所修饰的类不是完整的,而且只能用做基类。它用于要建立一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的状况。抽象类不能建立类的实例,然而能够建立一个变量,其类型是一个抽象类,并让它含有对非抽象类的实例的引用。不能有抽象构造函数或抽象静态方法。abstract 类的子类为它们父类中的全部抽象方法提供实现,不然它们也是抽象类。抽象类不能被密封。
接口(interface)是抽象类的变体。接口中的全部方法都是抽象的,没有一个有程序体。多继承性可经过实现这样的接口而得到。接口只能够定义static final成员变量。接口的实现与子类类似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)全部这种接口的方法。而后,它能够在实现了该接口的类的任何对象上调用接口的方法。因为有抽象类,它容许使用接口名做为引用变量的类型。一般的动态联编将生效。引用能够转换到接口类型或从接口类型转换,instanceof 运算符能够用来决定某对象的类是否实现了接口。
21.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,因此不能显式转化为short型,可修改成s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。
22.谈谈final, finally, finalize的区别。
答:
final,修饰符(关键字)若是一个类被声明为final,意味着它不能再派生出新的子类,不能做为父类被继承。所以 一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,能够保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在之后的引用中只能读取,不可修改。被声明为 final的方法也一样只能使用,不能重载。
finally,在异常处理时提供 finally 块来执行任何清除操做。若是抛出一个异常,那么相匹配的 catch 子句就会执行,而后控制就会进入finally 块(若是有的话)。
finalize,方法名。Finallize表示是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法。
23.进程和线程的区别?
答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程能够有多个线程,这些线程共享这个进程的资源。
24.产生一个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];
25.大概描述一下ASP.NET服务器控件的生命周期。
答:页请求->开始->页初始化-> 加载-> 验证-> 处理回发事件-> 预呈现-> 保存状态-> 呈现-> 卸载.
26.HashMap和Hashtable的区别。
答:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap键值能够为空(null),因为非线程安全,效率上可能高于Hashtable.
27.error和exception有什么区别?
答:error 表示恢复不是不可能但很困难的状况下的一种严重问题。好比说内存溢出。不可能期望程序能处理这样的状况。exception 表示一种设计或实现问题。也就是说,它表示若是程序运行正常,从不会发生的状况。
28.下面的例子中
using System;
class A
{
public static int X;
static A()
{
X=B.Y+1;
}
}
class B
{
public static int Y=A.X+1;
static B(){}
static void Main()
{
Console.WriteLine("X={0},Y={1}",A.X,B.Y);
}
}
产生的输出结果是什么?
答:x=1,y=2
29.死锁的必要条件?怎么克服?
答:系统的资源不足,进程的推动的顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已得到资源不放,进程得到资源时,未使用完前,不能强行剥夺。
30.接口是否能够继承接口?抽象类是否能够实现接口?抽象类是否能够继承实体类?
答:接口是能够继承接口的,抽象类是能够实现接口的,抽象类能够继承实体类,可是有个条件,条件是,实体类必需要有明确的构造函数。
31.New有几种用法?
答:有3种,第一种是,实例化如:New Class()。第二种是,public new 隐藏基类的方法。
第三种是,在泛型类申明中的任何类型参数都必须有公共的无参构造函数。
32.UDP和TCP链接有和异同?
答:TCP 是传输控制协议,提供的是面向链接的,是可靠的,字节流服务,当用户和服务器彼此进行数据交互的时候,必须在他们数据交互前要进行TCP链接以后才能传输数据。TCP提供超时重拨,检验数据功能。UDP是用户数据报协议,是一个简单的面向数据报的传输协议,是不可靠的链接。
33.什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别做何解释?
答:应用程序域:就是为安全性,可靠性,隔离性,和版本控制,及卸载程序提供的隔离边界。它一般由运行库宿主建立,应用程序域提供了一个更安全,用途更广的处理单元。
托管代码:使用CLR编译语言编辑器开发编写的代码就叫托管代码。
装箱和拆箱:是把值类型转换为引用类型的过程,是隐式的,相反的过程就是拆箱,是显式的。
装箱分3部:
1)分配内存空间。包括要装箱的值类型的空间、方法表、SynBlockIndex,其中后二者用来管理引用对象。
2)值复制。把堆栈中要装箱的值复制到堆上。
3)返回引用对象的引用。
拆箱也分3部:
1) 检查类型,确保引用类型是装箱的结果。
2)指针返回,返回要拆箱的引用类型中的值的地址。
3)字段拷贝,把引用类型中的字段拷贝到堆栈中。
CTS是通用类型系统,CLS是通用语言规范,CLR通用语言运行时。
强类型系统:每一个变量和对象都必须具备申明类型。
34.web service 数据传输有什么限制? 为何?DataTable能够做为web service参数传递吗?
答:所传输的数据必须是可序列化的。由于须要转换为XML格式以能够穿越防火墙,作到真正的数据共享。由于DataSet处理DataTable的序列化以便进行封送处理,因此没法传递单个DataTable。在ADO.NET 的三个基本数据对象 — DataReader、DataTable 和 DataSet 中,只有 DataSet 能够与 Web服务之间传递。这是由于,为了与 Web 服务进行通讯,对象必须是可序列化的。(序列化是一个过程,它用于将对象的公共属性转换为 XML,而且由于XML 只是纯文本,因此能够将其从一个应用程序传输到另外一个应用程序,而且能够穿越防火墙,从而克服了 COM的主要障碍之一。)DataReader 没法序列化,由于它们须要到服务器的开放链接。而且,由于 DataSet 处理 DataTable的序列化以便进行封送处理,因此您也没法传递单个 DataTable。
35.垃圾回收机制?
答:CLR实现的自动内存管理。须要清楚的几点:
1)什么被认为是可回收的对象?
GC采用必定的算法遍历全部的对象,找出可达对象和不可达对象,不可达对象是可回收的对象。
2)何时回收?
一般状况下:内存不足溢出时,确切的说,是第一代对象已满的时候。
3)如何回收?
垃圾收集进程来释放不可达对象的内存空间。
4)回收完后,还须要作什么?
避免托管堆上的内存碎片,从新分配内存,压缩托管堆。
5)避免垃圾回收带来的性能影响,采用代龄机制。
36.string和stringBuilder的区别,为何同时存在2个类?
答:String类对象是不可改变的(只读),对于String对象的从新赋值在本质上是从新建立了一个String对象并将新值赋予该对象,其方法ToString对性能的提升并不是很显著。 由于一旦建立了该对象,就不能修改该对象的值。
在处理字符串时,最好使用stringBuilder类,其.NET命名空间是System.Text。该类并非建立新的对象,而是经过 append,remove,insert等方法直接对字符串进行操做,经过toString方法返回操做结果,所以当你须要大量拼接、删除、修改字符串时,使用stringBuilder能够优化性能。
37.在.net中,配件的意思是?
答:程序集。包括(中间语言(IL),元数据(metaData),资源(resource),装配清单(AL))。
38.谈一下remoting和webservice两项技术的理解(或有什么区别)以及实际中的应用。
答:WS 主要是可利用HTTP,穿透防火墙。而Remoting能够利用TCP/IP,二进制传送提升效率。remoting是.net中用来跨越 machine, process, appdomain进行方法调用的技术,对于三层结构的程序,就能够使用remoting技术来构建.它是分布应用的基础技术.至关于之前的DCOM 。主要用在C/S架构的系统中。webService是一种构建应用程序的普通模型,并能在全部支持internet 网通信的操做系统上实施。webService使基于组件的开发和web的结合达到最佳,基于组件的对象模型。主要用在B/S架构的系统中。
39.须要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,若是字符串中间还有连续空格的话,仅保留一个空格,即容许字符串中间有多个空格,但连续的空格数不可超过一个.
答:string inputStr=" xx xx ";
inputStr = Regex.Replace(inputStr.Trim(), @"\s+", " ");
40.用.net作B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为何要这样分层?
答:通常为3层 数据访问层,业务层,表示层。 数据访问层对数据库进行增删查改。业务层通常分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。 表示层为了与用户交互例如用户添加表单。 优势:分工明确,条理清晰,易于调试,并且具备可扩展性。 缺点: 增长成本。
41.写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增加的ID做为主键,注意:ID可能不是连续的。
答:解1: 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)
42.ADO。NET相对于ADO等主要有什么改进?
答:1:ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序
2:不使用com
3:不在支持动态游标和服务器端游
4:,能够断开connection而保留当前数据集可用
5:强类型转换
6:xml支持
43.读下列程序,你能说出其中进行了几回装箱和拆箱的操做吗?
using System;
class sample1
{
public static void Main()
{
int i=10;
object obj=i;
Console.WriteLine(i+","+(int)obj);
}
}
其中发生了三次装箱操做和一次拆箱操做。第一次object obj=i;将i装箱;而Console.WriteLine方法用的参数是String对象,所以,i+","+(int)obj中,i须要进行一次装箱(转换成String对象),(int)obj将obj对象拆箱成值类型,而根据WriteLine方法,比较将(int)obj值装箱成引用类型。