日期:2014-05-16  浏览次数:21061 次

ASP.NET 面试题(二)
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,那么死锁会发生)

30.简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。
答:WS主要是可利用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记录(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) 

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 运算符可以用来决定某对象的类是否实现了接口。