.net 面试题1
1. 水仙花数
三位正整数、153=1~3 + 5~3+3~3
For(int i=100; i<1000; i++)
{
Int bai = 0;
Int shi = 0;
Int ge = 0;
Int baiYushu = 0;
bai=i/100;
baiYushu=i%100;
shi = baiYushu /10;
ge = baiYushu % 10;
if(i== bai*bai*bai + shi*shi*shi+ge*ge*ge)
{
Response.Write(“水仙花数:”+i+”<br>”);
}
}
2. 斐波数列::::递归
1,1,2,3,5,8,13,21,……….
private int Fun_Feibo(int intN)
{
int intResult = 0;
if(intN==1)
{
intResult = 1;
}
else
{
if(intN==2)
{
intResult = 1;
}
else
{
//这里需要递归
intResult = Fun_Feibo(intN-2)+Fun_Feibo(intN-1);
}
}
return intResult;
}
3. C#中的委托是什么?事件是不是一种委托?
委托, 顾名思义,就是中间代理人的意思。
[可以把一个方法作为参数代入另一个方法]
委托可以理解为指向一个函数的引用,【指向函数的指针】
是,是一种特殊的委托
//1.声明委托
//delegate void(int,string) deleName(参数列表);
//2.声明方法
//修饰符返回类型 方法名(参数列表)
// {
// 方法体;
// }
//3 创建委托对象,指向所希望包含方法
//deleName objDele = new deleName(具体的方法名);
//4, 委托对象调用包含在其中的各个方法
//objDele(实参);
//1.声明委托, 放到类类边,并且和方法平行,并且不能有【委托体】(不能带一对花括号)
delegate int deleTwoInt(int a, int b);
//2.声明方法
public string Add(int m, int n)//参数签名:参数个数、参数类型、参数顺序:返回类型不能构成重载
{
return m+n;
}
public int Surplus(int m, int n)
{
return m-n;
}
//3 创建委托对象,指向所希望包含方法
int a = 10;
int b = 3;
deleTwoInt dele = new deleTwoInt(Add);
//4, 委托对象调用包含在其中的各个方法
Response.Write(dele(a,b)+'<br>');
4.重载, 覆盖===》多态
A overload
【方法的签名】:参数个数+参数类型+参数顺序
返回类型不能构成重载
B override, virtual
子类覆盖父类中对应的虚函数
C,override与overload的区别
a. overload在同一个类里,不同的【方法签名】
b. override在不同的类里边,并且这两个类存在继承关系,并且子类的方法要覆盖父类的同签名的方法,
c. overload是多个方法、override是一个方法
d. 继承 的时候,子类首先继承父类的构造方法
Override的时候,首先继承父类的构造方法,如果构造方法调用了虚函数,那么紧接着调用子类的覆盖方法
然后,才进入子类的构造方法
5. 列举ASP.NET 页面之间传递值的几种方式。
A. post, Request.Params[“上一个页面控件的Name”]
<input name=’txtName’ /> Request.Params[“txtName”]
Html?aspx, aspx?aspx
B. get, Request.QueryString[“参数名”]
abc.aspx?id=xxx&name=zhangsan, Request.QueryString[“id”]
C. 如何在不改变url的情况下转到另一个页面
Server.Transfer(“目的url”, true);
只能是: apsx?aspx
Request.Form[“上一个页面控件的ID,属性名,公共方法名”]
D. Session, Application, Cookie, 多个页面之间共享【变量】,
webForm1:
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.TextBox lblName;
//公共属性
public string Time
{
get{return DateTime.Now.ToString();}
}
//公共方法
public string TestFun()
{
return 'Function of WebForm1 Called';
}
WebForm2:
string strTxt='';
WebForm1 oForm=(WebForm1)this.Context.Handler;
strTxt+='文本框1:'+Request.Form['TextBox1'] +'<br>';
strTxt+='Time Property:'+oForm.Time +'<br>';
//strTxt+='Context String:'+Context.Items['Context'].ToString() +'<br>';
strTxt += '姓名:'+Request.Form['lblName'].Trim()+'<br>';
strTxt+=oForm.TestFun() +'<br>';
Literal1.Text =strTxt;
6. 请说明Cookie和Session的区别
A Cookie是客户端的,Session是服务器端的
B, Session是真正面向对象的概念,它可以存储任何数据类型
C, Cookie 安全性低,Session安全性高
D Cookie省服务器资源, Session耗服务器资源
E, 他们都可以在页面之间传递参数
7.请说明Session和Application的区别
A, 他们都可以传递参数,他们都在global中初始化
B, Session是对应于多个客户端,并且每个存放的值都不同
C, Application只要名字相同,存放的值就相同
8.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?只能用在Windows项目里
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 ;
}
}
9.请编程实现一个冒泡排序算法?
Int[] arrAge = new int[5];
给数组元素赋初始值
For(int i=0; i<5; i++)
{
Int intTemp = 0;
For(int j=i+1; j<5; j++)
{
If(arrAge[i]<arrAge[j])
{
intTemp = arrAge[i];
arrAge[i] = arrAge[j];
arrAge[j] = intTemp;
}
}
}
10. 描述一下C#中【索引器】的实现过程,是否只能根据数字进行索引???????????????????
答:不是。可以用任意类型。
11.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
String strSQL = “”;
For(int i=1; i<=m; i++)
{
If(i==1)
{
strSQL += i;
}
Else
{
If(i%2==0)
{
StrSQL += “-“ + I;
}
Else
{
StrSQL += “+”+ I;
}
}
}
12.在下面的例子里
using System;
class A
{
public A()
{
PrintFields();
}
public virtual void PrintFields(){} // 虚方法、
}
class B:A
{
int x=1;
int y;
public B()
{
y=-1;
////2.
PrintFields();
}
public override void PrintFields()
{
Console.WriteLine('x={0},y={1}',x,y);
}
当使用new B()创建B的实例时,产生什么输出?
///1. X=1, y=0,,,
///2. X=1, y=0
X=1,y=-1
13.CTS、CLS、CLR分别作何解释?
答:CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库??????????????????
CTS: common language system
CLS: common language criterion:
CLR: common language runtime
14. 什么是装箱和拆箱?
Boxing, unboxing::value(结构struct、枚举???), ref(string, 数组、类、委托)
从 值类型 转换到引用类型装箱。从引用类型转换到值类型拆箱。
Object obAge = “3”;
Int intAge = (unBoxing)obAge;????
15. 什么是受管制的代码?
答:unsafe:非托管代码。不经过CLR运行。
16. 什么是强类型系统?
答:RTTI:类型识别系统::【每一个变量必须有明确的类型】
C#: int, string, char, bool,
Int intAge = 102;
Int intTemp =intAge/100;
Javascript: 变量不定义,而直接使用,它的类型根据运算结果来确定!
intMM = 102/5;
17.net中读写数据库需要用到那些类?他们的作用?
1)SqlServer:
SqlConnection,连接数据库, 用到ConnectionString
SqlCommand, :传递sql命令
SqlDataAdapter,:适配器,将数据库返回的结果(table方式)转换成.Net里的DataSet.Tables[0](DataTable)
DataSet: 容器
--------------------------------------------------------
System.Data.SqlClient.SqlConnection;
System.Data.SqlClient.SqlCommand;
System.Data.SqlClient.SqlDataAdapter;
System.Data.DataSet;
System.Data.SqlClient.SqlParameter;
--------------------------------------------------------
SqlConnection sqlCn = new SqlConnection(ConnectionString);
SqlCommand sqlCmd = new SqlCommand(sql语句, sqlCn);
sqlCmd.ExecuteNonQuery();
SqlDataAdapter sqlAdapter = new SqlDataAdapter(Sql语句,sqlCn);
sqlAdapter.Fill(DataSet, “名字”);
2) Access, DB2,
OleDbConnection:
OleDbCommand:
OleDbDataAdapter:
DataSet
3) Oracle:
OracleConnection:
OracleCommand:
OracleDataAdapter:
DataSet
18. 在.net中,配件的意思是?
答:程序集(assembly)。(中间语言,源数据,资源,装配清单)
Dll, CLR(通用语言运行时)
19.常用的调用WebService的方法有哪些
在互联网之间共享dll,????????
1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜单选项
创建方法:第一步,创建webservice文件,
第二步, 在另外一个项目中,通过URL来添加web引用
第三步, 通过完整命名空间来调用webservice里提供的方法
20.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。????????
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)
21.给定以下XML文件,完成算法流程图。
<FileSystem>
< DriverC > 盘符
<Dir DirName=”MSDOS622”> 文件夹
<File FileName =” Command.com” ></File> 文件名
</Dir>
<File FileName =”MSDOS.SYS” ></File>
<File FileName =” IO.SYS” ></File>
</DriverC>
< DriverD >
<Dir DirName=”项目管理”>
<File FileName =” abc.htm” ></File>
</Dir>
<File FileName =”hello.txt” ></File>
<File FileName =” web.dll” ></File>
</DriverD>
</FileSystem>
请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。
答:
void FindFile( Directory d )
{
//System.IO.Directory
FileOrFolders = d.GetFileOrFolders();
foreach( FileOrFolder fof in FileOrFolders )
{
if( fof is File )
You Found a file+'FileName';
else if ( fof is Directory )
FindFile( fof );
}
}
22. GC是什么? 为什么要有GC?::Gallery Collection
答:GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
//Ds.Dispose();
//net机制,隔一定的时间,它会自动释放无用的资源(内存)
23.String s = new String('xyz');创建了几个String Object?
答:两个对象,一个是“xyz”,一个是指向“xyz”的引用对像s(指针)。
24.abstract class和interface有什么区别?
答:
声明方法的存在而不去实现它的类被叫做抽像类(abstract class),
它用于要创建一个体现某些基本行为的类,抽象类不能被实例化
abstact class A
{}
A a = new A(); //这个是错误的
class B:A
{}
B b = new B();
A a = b;
-------------------
然而可以创建一个变量,其类型是一个抽像类,
并让它指向【具体子类】的一个实例。
-------------------
===》不能有抽像构造函数或抽像静态方法。
抽象类的方法必须全部被子类继承::如果子类也是抽象的,那么就不必全部继承
接口(interface)是抽像类的【变体】。
在接口中,所有方法都是抽像的;;在抽象类中,有些方法可以不是抽象的。
多继承性可通过接口实现。
接口中的所有方法都是抽像的,没有一个有【方法体】。
interface A
{}
interface B
{}
abstract class A1()
{}
abstract class A2
{}
class c:A1,A,B
{}
25.接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)?
答:接口可以继承接口。抽像类可以实现(implements)接口,
抽像类是可继承实体类,
但前提是实体类必须有明确的构造函数。
26. 构造器Constructor是否可被override?
答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
构造函数可以被重载;每一个类都有一个默认的构造函数,该函数没有参数;它可以不写!!
////////但是,如果你想重载构造函数,就必须把默认的构造函数明确的写出来!/////
==》构造函数不能被继承,当然就不能被override
27 是否可以继承String类? StringBuilder, int,double,……
答:String类是final类故不可以继承。
//final类不能被继承
28. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:switch(expr1)中,expr1是一个整型(int,short,long,byte,ushort,uint,ulong,sbyte),字符或字符串,
因此可以作用在byte和long上,也可以作用在string上。
29. abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
答:都不能。
30. 数组有没有length()这个方法? String有没有length()这个方法?
答:数组和string都没有Length()方法,只有Length属性。
31.short s1 = 1; s1 = s1 + 1;有m没有什么错? 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正确。
32. 谈谈final, finally, finalize的区别。
答:
===【final-修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。
因此 一个类不能既被声明为 abstract的,又被声明为final的。
抽象类必须被继承,而final必须不被继承。。。
将变量或方法声明为final,可以保证它们在使用中 不被改变。
被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。
被声明为 final的方法也同样只能使用,不能重载;更不更被override】
===finally【try..catch..finally】-再异常处理时提供 finally 块来执行任何清除操作。
如果抛出一个异常,那么相匹配的 catch 子句就会 执行,
然后控制就会进入 finally 块(如果有的话)。finalize-方法名。。
===finalize() 方法是在垃圾收集器删除对像之前对这个对象调用的。
33. 如何处理几十万条并发数据?
答:用存储过程或事务。
取得最大标识的时候同时更新..
注意主键是自增量方式这种方法并发的时候是不会有重复主键的..
取得最大标识要有一个存储过程来获取.getMaxID() select max(id) from TableName
34. Session有什么重大BUG,微软提出了什么方法加以解决?【Session会丢失】
答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,
可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,
而且无法捕获Session的END事件。
35.堆和栈的区别?
答:栈是编译期间就分配好的内存空间,
因此你的代码中必须就栈的大小有明确的定义;
int a = 0;a = 5;
堆是程序运行期间动态分配的内存空间,
你可以根据程序的运行情况确定要分配的堆内存的大小
System.Text.StringBuild strValue = new System.Text.StringBuild();
strValue.Append(@'hello,world'+'\r\n');
strValue.Append(@'张三你好!'+'\r\n');
36.成员变量和成员函数前加static的作用?
答:它们被称为,又称为类成员变量和类成员函数。
分别用来反映类的状态。
比如类成员变量可以用来统计类实例的数量,
类成员函数负责这种统计的动作。
====>静态的,它就是不能被实例化,每次运行的时候,直接用类名来调用。
37.ASP。NET与ASP相比,主要有哪些进步?
答:asp解释形,aspx编译型,性能提高,(前、后台代码分离,幕后代码)可以跟美工的工作分开进行,更有利于团队开发。
38.产生一个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];
39.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
答:
1.Session,Cookie,Application
2.Get: xxx.aspx?id=5&name=张三:::Request.QueryString['id']
3.Post:把整个表单提交过去,:::Request.Params['控件name']
4.Server.Transfer('target.aspx',true);
5.ViewState['name']
6.数据库
session(viewstate) 简单,但【易丢失】
application 全局
cookie 简单,但可能不支持,可能被伪造,不安全
---》input type='hidden' 简单,可能被伪造::ViewState['namexxx'] = 'zxxxa'; string strName = ViewState['namexxx'].ToString();
url参数 简单,显示于地址栏,长度有限::最大传递的参数不能超过2k
数据库 稳定,安全,但性能相对弱
40.请指出GAC的含义?
答:全局程序集缓存。Global Assembly Cache
41.向服务器发送请求有几种方式?
答:get,post。
get一般为链接方式,url
post一般为按钮方式,提交按钮<input type=’submit’ /> <asp:button
42. DataReader.Next()与Dataset有什么区别?while(DataReader.End())
答:一个是只能向前的只读游标,一个是内存中的表。
43. 软件开发过程一般有几个阶段?每个阶段的作用?
答:需求分析(分析系统的所有功能),
系统设计:(概要设计(数据结构设计)、详细设计(开发进度、技术难点))
架构设计:设计系统架构,B/S, C/S, 三层、N层
代码编写:只占整个开发的30%左右
QA:quality Assure::测试
部署:CS,打包,安装;BS:发布网站
44. 在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
using 指令 和语句 new 创建实例 new 隐藏基类中方法。
答:using 引入名称空间或者使用非托管资源(unsafe)
new 新建实例
45. 【Regex】需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉.Trim(),
如果字符串中间还有连续空格的话,仅保留一个空格,
即允许字符串中间有多个空格,但连续的空格数不可超过一个.
答:string inputStr=' xx xx ';
inputStr=Regex.Replace(inputStr.Trim(),' *',' ');
46. 下面这段代码输出什么?为什么?
int i=5;
int j=5;
if (Object.ReferenceEquals(i,j))
Console.WriteLine('Equal');
else
Console.WriteLine('Not Equal');
答:不相等,因为比较的是对像
47. 什么叫做SQL注入,如何防止?请举例说明。
答:利用sql语言漏洞获得合法身份登陆系统。如身份验证的程序设计成:
SqlCommand com=new SqlCommand('Select * from users where username=''+t_name.text+'' and pwd=''+t_pwd.text+''');
object obj=com.ExcuteScale();
if(obj!=null)
{
//通过验证
}
这段代码容易被sql注入。
如用户在t_name中随便输入,在t_pwd中输入' admin and 1=1-- ' 就可以进入系统了。
48. 什么是反射?
答:动态获取程序集(PPS.SqlServerDAL)信息
49.什么是Application Pool?应用程序池
答:Web应用,类似Thread Pool,提高并发性能。
50.什么是虚函数(virtual)?什么是抽像函数?
答:虚函数:可由子类(override)继承并重写的函数。
抽像函数(abstract):规定其非虚子类必须实现的函数,必须被重写。
51.什么是XML?
答:XML即可扩展标记语言。extensible markup language
extensible Markup Language.标记是指计算机所能理解的信息符号
<Earth>
<China>
<beijing>
<haidian>
<qinghexiaoying>
</qinghexiaoying>
</haidian>
</beijing>
<shanghai>
</shanghai>
<heilongjiang>
</heilongjiang>
</China>
<America>
<Washington.D.C>
</Washington.D.C>
</America>
....
</Earht>
52.什么是ASP.net中的用户控件?
答:用户控件一般用在内容多为静态,
或者少许会改变的情况下..
它可以共享代码,减少代码冗余
53.列举一下你所了解的XML技术及其应用
答:xml用于配置,用于保存静态数据类型.接触XML最多的是web Services..和config文件[web.config,App.config]
54.ADO.net中常用的对象有哪些?分别描述一下。
答:Connection 数据库连接对像
Command 数据库命令
DataReader 数据读取器
DataAdapter:适配器
DataSet 数据集
55.什么是code-Behind技术【幕后代码、代码分离】。
答:ASPX,RESX(资源文件 )和CS三个后缀的文件,
这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理.
56.什么是SOAP,有哪些应用。是一种通信技术,传输协议
通用性
答:SOAP(Simple Object Access Protocol )
简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,
是一个基于XML的协议。
使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),
可以允许任何类型的对象或代码,
在任何平台上,
以任何一直语言相互通信。
这种相互通信采用的是XML格式的消息。
57.XML 与 HTML 的主要区别
答:1. XML是严格区分大小写字母的,HTML不区分。
2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>之类的结束标记。在XML中,绝对不能省略掉结束标记。
3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用查找结束标记了。
4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。
5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。
58.c#中的三元运算符是?唯一一个三目运算符
答:?:
单目运算符:!, ++, --, 位运算符
59.当整数a赋值给一个object对像时,整数a将会被?
答:装箱。boxing, unboxing
value-->ref:boxing
ref-->value:unboxing
60.类()有_____种成员?
变量、属性、方法
61.public static const int A=1;这段代码有错误么?是什么?
答:const不能用static修饰。
定义常数: const double PI = 3.1315926;
const, 和 static 不能同时使用
62.float f=-123.567F; int i=(int)f;i的值现在是_____?
答:-123。
63.委托声明的关键字是______?
答:delegate.
1)delegate int deleTwoInt(int a,int b);
2) public int Add(int a, int b){return a+b;}
3) deleTwoInt objDele = new deleTwoInt(Add);
4) int a=12,b=3;
int intTemp = objDele(a,b);
64.在Asp.net中所有的【自定义用户控件】都必须继承自________?
答:Control。
控件: 系统自带控件、用户控件、复合控件、用户自定义控件
65.在.Net中所有可序列化的类都被标记为_____?
答:[serializable] serial lizable
66.在.Net托管代码中我们不用担心内存漏洞,这是因为有了______? Rubbish, garbage
答:GC。Garbage Collector:垃圾回收器
67.下面的代码中有什么错误吗?_______
using System;
class A
{
public virtual void F(){
Console.WriteLine('A.F');
}
}
abstract class B:A
{
public abstract override void F(); 答:abstract override 是不可以一起修饰.
static, const
final, orverride
} // new public abstract void F();
68.下面这段代码有错误么?
switch (i){
case(): 答://case()条件不能为空,必须跟一个常量
CaseZero();
break;
case 1:
CaseOne();
break;
case 2:
答://wrong,格式不正确
CaseTwo();
break;
dufault;
break;
}
69.在.Net中,类System.Web.UI.Page 可以被继承么?
答:可以。
70..net的错误处理机制是什么?
答:.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。
71.某一密码仅使用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
72.62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?
答案:62移动成2的6次方
73.样的一个枚举类型:
enum Color:byte
{
Red,
Green=3,
Blue,
Orange=8
}
答:string[] ss=Enum.GetNames(typeof(Color));
byte[] bb=Enum.GetValues(typeof(Color));
ss: Red, Green, Blue, Orange
bb: 0,3,4,8
74. C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
答: attribute:自定义属性的基类;
property :类中的属性
public string Name
{
get{}
set{}
}
避免了传递全部变量,能够实现C#中真正的封装和面向对象
75. .C#可否对内存进行直接的操作?
答:在.net下,.net引用了垃圾回收(GC)功能,
它替代了程序员 不过在C#中,不能直接实现Finalize方法,
而是在析构函数(与构造函数想对应)中调用基类的Finalize()方法
===>在托管代码中,不可以操作内存; 在非托管代码中,可以直接操作内存。
76. ADO。NET相对于ADO等主要有什么改进?
答:1:ado.net不依赖于ole db提供程序(odbc,数据连接桥),而是使用.net托管提供的程序,
-----2:不使用com,【中间件】
-----3:不在支持动态游标和服务器端游
4:,可以断开connection而保留当前数据集可用
5:强类型转换 ,
6:xml支持
77. 写一个HTML页面,实现以下功能,左键点击页面时显示“您好”,
右键点击时显示“禁止右键”。并在2分钟后自动关闭页面。
答:<script ***script>
setTimeout('window.close();',3000); //仅执行一次
function show()
{
if (window.event.button == 1)
{
alert('左');
}
else if (window.event.button == 2)
{
alert('右');
}
}
</script>
78. 大概描述一下ASP。NET服务器控件的生命周期
答:
初始化
加载视图状态(就是服务器端,ViewState==),整个。net自动回发机制是基于ViewState
处理回发数据(读取页面控件的值)
再加载 (Page_Load,, ISPostBack)
发送回发更改通知(给服务器发送预先通知)
处理回发事件 (真正触发事件)
卸载
79. &和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).
//....位运算符
int a = 3; //11
int b = 2; //10
int c = a & b; //按位与
System.Console.WriteLine(c);
c = a | b; //按位或
System.Console.WriteLine(c);
c = a ^ b; //异或:相同为,不同为
System.Console.WriteLine(c);
80. <%# %> 和 <% %> 有什么区别?
答:<%# %>表示绑定的数据源[绑定字段]<%# DataBinder.Eval(Container.DataItem, '字段名') %>
<% %>是服务器端代码块,for,if,....
81你觉得ASP.NET 2.0(VS2005)和你以前使用的开发工具(.Net 1.1或其他)有什么最大的区别?
你在以前的平台上使用的哪些开发思想(pattern / architecture)
可以移植到ASP.NET 2.0上 (或者已经内嵌在ASP.NET 2.0中)
答:1 ASP.NET 2.0 把一些代码进行了封装打包,所以相比1.0相同功能减少了很多代码.
2 同时支持代码分离和页面嵌入服务器端代码(<%.....%>)两种模式,
3 代码和设计界面切换的时候,2.0支持光标定位.这个我比较喜欢
4 可视化操作功能更强大,方便了初学者
5 在ASP.NET中增加了40多个新的控件,减少了工作量,出现了一大堆问题
6.vs2005慢的象牛,
82. 重载与覆盖的区别?
答:1、方法的覆盖是子类和父类之间的关系,是垂直关系;
方法的重载是同一个类中方法之间的关系,是水平关系
2、覆盖只能由一个方法,方法的重载是多个方法之间的关系。
3、覆盖要求方法签名相同;重载要求方法签名不同。==>方法名、参数列表、返回类型不能构成重载
4、覆盖关系中,调用那个方法体,是根据对象的类型(对像对应存储空间类型)来决定;
重载关系,是根据调用时的实参表与形参表来选择方法体的。
83. 如果传入的connectionString是一模一样的话,可以正确使用
【数据库连接池】-->。net连接数据库的时候,把同一操作的数据放到一起。
【应用程序连接池】---配置dll文件
不过一模一样的意思是,连字符的空格数,顺序完全一致。
84. 什么是WSE?目前最新的版本是多少?Web Service::.asmx
.aspx, .ascx
答:WSE (Web Service Extension) 包来提供最新的WEB服务安全保证,目前最新版本2.0。
85. 下面的例子中
using System;
class A
{
public static int X;
//222222222222222222222222222222
static A(){
X=B.Y+1;
}
}
class B
{
//33333333333333333333333333333333
public static int Y=A.X+1;
static B(){}
static void Main(){
//11111111111111111111111111111111111
Console.WriteLine('X={0},Y={1}',A.X,B.Y);
}
}
产生的输出结果是什么?
答:x=1,y=2
86.请你说说.NET中类和结构的区别?
答:结构和类具有大体的语法,但是结构受到的限制比类要多。
结构不需要默认的构造函数和析构函数。
结构是值类型,所以对结构变量所做的改变不会影响其原值,
而类是引用类型,改变其变量的值会改变其原值。
申明结构用Struck关键字,申明类用class关键字,
与类不同,结构的实例化可以不使用New关键字。
类可以实现接口,结构不能实现结口
87.死锁的必要条件?怎么克服?
答:系统的资源不足,
进程的推进的顺序不合适(比如说死循环)
资源分配不当,
一个资源每次只能被一个进程使用,未使用完前,不能强行剥夺;否则容易造成死锁
88.接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?
接口是否可以继承抽象类,接口是否可以继承实体类?
接口只能继承接口。
答:接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类,
但是有个条件,条件是,实体类必须要有明确的构造函数。
89.构造器Constructor是否可以被继承?是否可以被Override?
答:Constructor不可以被继承,因此不能被重写(Overriding),但可以被重载(Overloading).
子类继承父类的时候,先走父类的构造函数;但是没有继承它!!
90.当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的方法?
答:不可以,一个对象的方法只能由一个线程访问。
91.Error和Exception有是区别?
答:error表示已经发生错误了,但是可以恢复,
exception表示一种异常,程序运行期间,就不可能发生
92.谈谈final,finally,finallize的区别?
答:final:修饰符:,可以修饰类/方法/变量,
finally:try....catch...finally表示不管是否有异常,总是执行的部分。
finallize: GC的时候使用
final用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承。
Finally是异常处理语句结构中,表示总是执行的部分。
Finallize表示是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法。
93.Collection和Collections的区别?
答:Collection是集合类的上级接口,
Collections是针对集合类的一个帮助类,它
提供一系列静态方法来实现对各种集合的搜索,排序,线程安全化操作。
94.C#中委托是什么?事件是不是一种委托?
答:委托类似于C语言中的函数指针,就是可以把一个方法名作为参数。
但是她比指针要安全的多,它可以把方法作为一个参数传递给另一个方法,
可以理解为指向函数的引用。事件是一种消息机制,它是一种特殊委托,必须用+=符号。
btn_Add_Click.Click += new System.EventHander(btn_Add_OnClick);
95.Override, Overload,的区别?
答:Override是重写的意思,它表示重写基类的方法,
而且方法的签名【名称,返回类型,参数类型,参数个数】要与基类相同。
Overload是重载是意思,它也表示重写基类的方法,但是只要方法名相同,别的必须不同。
96.在一个BS结构中需要传递变量值时,不能使用session,cookie,application,你有几中方法?
答 1)get: .aspx?id=9&name=zhangsan:::Request.QueryString['ID']
2)Post:传递整个表单(form action='url') Request.Params['控件的name值']
3)Server.Transfer('url.aspx', true);跳转之后,url不会改变
4)hidden,viewState
97.New有种用法?
答:有3种,第一种是,实例化如:New Class()
第二种是,public new 隐藏基类的方法
第三种是,在泛型类申明中的任何类型参数都必须有公共的无参构造函数。
98.概述反射和序列化?
答:反射:要给反射下一个定义还是比较难的,这里先说说我的理解。
反射提供了封装程序集(assembly),模块和类型对象,
可以用反射动态地创建类型的实例,将类型绑定到现有对象
序列化:将对象转换为另一种媒介传输的格式过程。
如,序列化一个对象,用Http通过internet在客户端和服务器之间传递该对象,
在另一端用【反序列化】从该流中重新得到对象。
id=9&name=zhangsan===>01010101010000000000011110101111
<====id=9&name=zhangsan
99.Const和ReadOnly?
答:Const用来申明编程时申明常量,ReadOnly用来申明运行时常量。
100.UDP和TCP连接有和异同?
答:TCP是传输控制协议,提供的是面向连接的,是可靠的,字节流服务,
当用户和服务器彼此进行数据交互的时候,必须在他们数据交互前要进行TCP连接之后才能传输数据。
TCP提供超时重拨,检验数据功能。:::有状态的,可靠的连接,必须先建立连接,再传输
UDP是用户数据报协议,是一个简单的面向数据报的传输协议,是不可靠的连接。
:无状态的,不可靠的连接,直接就传输
101.进程和线程分别该怎么理解?
答:进程是比线程大的程序运行单元,都是由操作系统所体会的系统运行单元,
一个程序中至少要有一个进程,有一个进程中,至少要有一个线程,
线程的划分尺度要比进程要小,进程拥有独立的内存单元,线程是共享内存,
从而极大的提高了程序的运行效率同一个进程中的多个线程可以并发执行。
102.什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?
什么是重载?CTS、CLS和CLR分别作何解释?
答:应用程序域:就是为安全性,可靠性,隔离性,和版本控制,及卸载程序提供的隔离边界。
它通常由运行库宿主创建,应用程序域提供了一个更安全,用途更广的处理单元。(window应用程序,web应用程序,service(windows, web)应用程序)
托管代码:使用CLR编译语言编辑器开发编写的代码就叫托管代码。
装箱和拆箱:是把值类型转换为引用类型的过程,是隐式的,相反的过程就是拆箱,是显式的。
CTS是公共类型系统,CLS是公共语言规范,CLR公共语言运行库。
强类型系统:每个变量和对象都必须具有申明类型。
103.值类型和引用类型的区别?
答:值类型的值是存放在栈中的,改变其值,不改变变量原有的值,
而引用类型的值是存放在栈中的,其引用的地址是存放在堆中的,
改变其值也就改变了变量原有的值。
string strName = 'abc';
值类型不允许包含null值,然而可空类型可以将null赋值给引用类型。
className objClass = null;
int intAge = null; //错误
int intaGe = 0; //值类型不能赋值为null
string strName = null; //引用类型,可以赋值为null
104.ASP.net的身份验证方式有哪些?
答:windows,forms,passport
1)windows验证,使用windows帐户进行验证
2)forms验证:
3) passport验证:asp.net自带的验证机制,可以在配置文件里进行安全设置
105.什么是SOAP?
答:是简单访问协议。是在分布式环境中,交换信息并实现远程调用的协议。
是一个基于XML的协议。使用SOAP,可以不考虑任何传输协议,
但通常还是HTTP协议,可以允许任何类型的对象或代码,
在任何平台上,以任一种语言相互通信。它是一种轻量级协议。
106.如何部署一个ASP.net页面?
最重要的是bin文件夹,然后.aspx, .htm, .asmx, .ascx,.config
一定不要发布.cs文件
答:vs2003,vs2005里边都有发布机制,vs2003可以发布然后在复制部署。
Vs2005可以直接部署到对应的位置,可以直接发布网站
107. 47.面向对象的三大基本原则?
答:封装(变量、属性、方法),继承(子类),多态(overload, override)。
108. 48.在.NET中所有类的基类是?
答:object。
109.能用foreach遍历访问的对象需要实现?
答:需要实现IEnumerable接口和GetEnumerator ()方法。\
数组、 DropDownList, ListBox, CheckBoxList, RadioButtonList:::System.Web.UI.WebControls.ListItem
foreach(ListItem item in ListBox)
{
if(item.Selected)
{
多选的情况
}
}
110.Heap与stack的差别?
答:Heap是堆,空间是由手动操作分配和释放的,它的存储区很大的自由存储区, 可以动态操作
Stack是栈,预先编译好的。是由是操作系统自动分配和释放的,栈上的空间是有限的。
程序在编译期间变量和函数分配内存都是在栈上进行的,
且在运行时函数调用时的参数的传递也是在栈上进行的
但是,引用类型的变量在 堆上进行
====================================================
1. 填空: (1)面向对象的语言具有________性、_________性、________性。
(2)能用foreach遍历访问的对象需要实现 IEnumerable接口或声明GetEnumerator()方法的类型。
(3)列举ADO.net中的五个主要对象DataConnection, DataCommand, DataAdpater, DataReader, DataSet
2. 不定项选择:
(1) 以下叙述正确的是:
A. 接口中可以有虚方法(×) B. 一个类可以实现多个接口。
C. 接口不能被实例化。 D. 接口中可以包含已实现的方法(×)。
(2) 从数据库读取记录,你可能用到的方法有:
A. ExecuteNonQuery(insert/update/delete) B. ExecuteScalar(只返回第一行的第一列)
C. Fill(SqlDataAdpater,填充DataSet) D. ExecuteReader(游标依次向后走!。Next()!)
3. 简述 private、 protected、 public、 internal 修饰符的访问权限。
private:只能在类里边
public: 没有限制
protected:类里边、、子类
internal:在同一命名空间里
4. 写出一条Sql语句: 取出表A中第31到第40记录
(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。)
1)select * from TableName where ID between 第31行对应的ID and 第40行对应的ID
select min(ID) from TableName where ID not in (select top 30 ID from TableName order by ID asc)
select max(ID) from TableName where ID in (select top 40 ID from TableName order by ID asc)
2)select top 10 * from TableName where ID not in (select top 30 ID from TableName order by ID asc)
5 .列举ASP.NET 页面之间传递值的几种方式。
Session, Cookie,Application, ViewState
Get,
Post,
Server.Transfer('target.aspx',true)
6. 写出程序的输出结果
class Class1 {
private string str000000000000000 = 'Class1.str';
private int i = 0;
static void StringConvert(string strAAAAAA)
{
strAAAAAA = 'string being converted.';
}
static void StringConvert_001(ref string strAAAAAA)
{
strAAAAAA = 'string being converted.';
}
static void StringConvert(Class1 c)
{
c.str000000000000000 = 'string being converted.========================';
}
static void Add(int i)
{
i++;
}
static void AddWithRef(ref int i)
{
i++;
}
static void Main()
{
int i1 = 10;
int i2 = 20;
string str = 'str======================';
Class1 c = new Class1();
Add(i1); //这里传递的是一个变量,传递的仅仅是i1的一个副本
AddWithRef(ref i2); //传递的是一个地址、
Add(c.i); //c.i本身是一个变量,传递的仅仅是c.i的一个副本
StringConvert(str); //虽然string是引用类型,但是传递的依然是“值”,是它的副本
//StringConvert_001(ref str);
StringConvert(c);//=============因为这里传递的是对象(本身是一块地址),
Console.WriteLine(i1);
Console.WriteLine(i2);
Console.WriteLine(c.i);
Console.WriteLine(str);
Console.WriteLine(c.str000000000000000);
}
}
7.写出程序的输出结果
public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine('A.Fun()');
}
}
public class B: A
{
public B()
{
Console.WriteLine('B');
}
//----------------隐藏自身从父类继承过来的虚函数,。。如果子类使用了new,那么就隐藏自身
//-------------------------------------------------如果使用override,那么就不走父类(覆盖覆盖)
public new void Fun()
{
Console.WriteLine('B.Fun()');
}
//-------------------------------------------------如果使用override,那么就不走父类(覆盖覆盖)
public override void Fun()
{
Console.WriteLine('B.Fun()');
}
public static void Main()
{
A a = new B(); //定义父类的一个变量,让它指向子类的一个实例 //
// 首先走子类的构造函数,因为它继承了父类,所以必须先走父类的构造函数,
//然后在走自身的构造函数
a.Fun(); //父类的变量调用自身的虚函数,
//1.如果子类使用override,那么就不走父类
//2.如果子类使用new,那么就不走子类
}
}
8. 写出程序的输出结果:
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}
public class B : A
{
public override void Fun1(int i)
{
base.Fun1 (i + 1);
}
public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);
b.Fun2(a);
}
}
2
5
1
6
9. 一列数的规则如下: 1、1、2、3、5、8、13、21、34......
求第30位数是多少,用递归算法实现。(C#语言)
int Fun_Bofei(int intIndex)
{
int intTemp = 0;
if(intIndex==1 || intIndex==2)
{
intTemp=1;
}
else
{
intTemp = Fun_Bofei(intIndex-1)+Fun_Bofei(intIndex-2);
}
return intTemp;
}
10. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)
要求: 1.要有联动性,老鼠和主人的行为是被动的。
2.考虑可扩展性,猫的叫声可能引起其他联动效应。
参考答案:
1. (1) 继承性、封装性、多态性。(考基本概念)
(2) IEnumerable 、 GetEnumerator (对foreach机制的理解,本来不想出这题的,凑分)
(3) ... (送分题, 对ADO.net的了解)
评分标准:一空1分,满分10分。
2. (1) B、C (考对接口的理解) (2) B、C、D (考查对ADO.net的熟练程度)
评分标准: 一题5分,不选或者错选均不得分。漏选得2分。满分10分。
3. . private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。
评分标准:答对1题2分,2题5分,3题7分。全对10分。 (送分题)
4. 解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)
评分标准: 写对即10分。(答案不唯一,datagrid 分页可能需要用到)
5. 1.使用QueryString, 如....?id=1; response. Redirect()....
2.使用Session变量
3.使用Server.Transfer
....
评分标准: 答对1点得3分,两点7分, 3点10分。
6. (考查值引用和对象引用)
10
21
0
str
string being converted.
评分标准:答对一点得2分,满分10分。
7. A
B
A.Fun()
评分标准: 写出A.B 得5分,写出A.Fun()得5分,满分10分。
(考查在继承类中构造函数, 以及new 方法, )
8. 2
5
1
6
评分标准: 答对一点得2分,两点得5分,3点得7分。全对得10分。
(一些人做这题,头都晕了.... ^_^ )
9.
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);
}
}
评分标准: 写出return Foo(i -1) + Foo(i - 2); 得5分。
写出if(i > 0 && i <= 2) return 1; 得5分。
方法参数过多需要扣分(扣除分数 = 参数个数 - 1)
不用递归算法扣5分
(递归算法在树结构建立等方面比较常用)
10
=====================================================
1.继承:子类继承父类,首先走父类的构造函数
2.覆盖:override:不走父类; new: 不走子类
3.接口:子类必须实现它的所有方法
=====================================================
要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象
评分标准: <1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分)
<2>从Mouse和Master中提取抽象(5分)
<3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分)
public interface Observer
{
void Response(); //观察者的响应,老鼠见到猫的反映
}
public interface Subject
{
void AimAt(Observer obs); //针对哪些观察者,这里指猫的要扑捉的对象---老鼠
}
public class Mouse : Observer
{
private string name;
public Mouse(string name, Subject subj)
{
this.name = name;
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine(name + ' attempt to escape!');
}
}
public class Master : Observer
{
public Master(Subject subj)
{
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine('Host waken!');
}
}
public class Cat : Subject
{
private ArrayList observers;
public Cat()
{
this.observers = new ArrayList();
}
public void AimAt(Observer obs)
{
this.observers.Add(obs);
}
public void Cry()
{
Console.WriteLine('Cat cryed!');
foreach (Observer obs in this.observers)
{
obs.Response();
}
}
}
class MainClass
{
static void Main(string[] args)
{
Cat cat = new Cat();
Mouse mouse1 = new Mouse('mouse1', cat);
Mouse mouse2 = new Mouse('mouse2', cat);
Master master = new Master(cat);
cat.Cry();
}
}
//---------------------------------------------------------------------------------------------
设计方法二: 使用event -- delegate设计..
public delegate void SubEventHandler();
public abstract class Subject
{
public event SubEventHandler SubEvent;
protected void FireAway()
{
if (this.SubEvent != null)
this.SubEvent();
}
}
public class Cat : Subject
{
public void Cry()
{
Console.WriteLine('cat cryed.');
this.FireAway();
}
}
public abstract class Observer
{
public Observer(Subject sub)
{
sub.SubEvent += new SubEventHandler(Response);
}
public abstract void Response();
}
public class Mouse : Observer
{
private string name;
public Mouse(string name, Subject sub) : base(sub)
{
this.name = name;
}
public override void Response()
{
Console.WriteLine(name + ' attempt to escape!');
}
}
public class Master : Observer
{
public Master(Subject sub) : base(sub){}
public override void Response()
{
Console.WriteLine('host waken');
}
}
class Class1
{
static void Main(string[] args)
{
Cat cat = new Cat();
Mouse mouse1 = new Mouse('mouse1', cat);
Mouse mouse2 = new Mouse('mouse2', cat);
Master master = new Master(cat);
cat.Cry();
}
}
=====================================================
第四部分XML
(13)下列哪一种写法是正确的XML文档格式?( )
A:<Helloword><![CDATA[]]/></Helloword>
B:<Helloword><![CDATA[]]></Helloword>
C:<Helloword><[CDATA[]]></Helloword>
D:<Helloword><[CDATA[]]/></Helloword>
(14)XML Schema如同DTD一样是负责定义和描述XML文档的结构和内容模式。
它可以定义XML文档中存在哪些元素和元素之间的关系,
并且可以定义元素和属性的数据类型。
XML Schema本身是一个XML文档,它符合XML语法结构。
以用通用的XML解析器解析它。
以下的XML文档中使用了XML Schema但有两处错误,请标出错误所在
<?xml version='1.0' standalone='yes'?>
<NewDataSet>
<xs:schema id='NewDataSet' xmlns='' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata'>
<xs:element name='NewDataSet' msdata:IsDataSet='true' msdata:UseCurrentLocale='true'>
<xs:complexType>
<xs:choice minOccurs='0' maxOccurs='unbounded'>
<xs:element name='CacheStrategys'>
<xs:complexType>
<xs:sequence>
<xs:element name='Strategy' type='xs:string' minOccurs='0' ></xs:element>
<xs:element name='Expiration' type='xs:int' minOccurs='0' ></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<CacheStrategys>
<Key>Dirtywords</Key>
<Strategy>Dependency</Strategy>
<Expiration>ggg</Expiration>
</CacheStrategys>
</NewDataSet>
15.W3C已经给出了两种样式单语言的推荐标准::::CSS, XSL
一种是层叠样式单CSS(Cascading Style Sheets),CSS
另一种是可扩展样式单语言XSL(eXtensible Stylesheet Language)XSL本身就是一个XML文档,
它是通过XML进行定义的,遵守XML的语法规则,是XML 的一种具体应用。
因此系统可以使用同一个XML解释器对XML文档及其相关的XSL文档进行解释处理
现有xml文档
<?xml version='1.0' encoding='iso-8859-1'?>
<?xml-stylesheet type='text/xsl' href='mystyle.XSL'?>
<greeting>Hello world</greeting>
要使用XLST转换为如下html
<html>
<head>
</head>
<body>
<p style='text-align:center;'>hello world</p>
</body>
</html>
试完成以下mystyle.xsl定义
<?xml version='1.0' encoding='iso-8859-1'?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/TR/WD-xsl'>
<html>
</html>
(16)XPath 是一种用于对 XML 文档的元件寻址的一语言,设计为 XSLT 和 XPointer 使用
请写出以下XPath定义的含义
Invoice
/@Invoice
//Invoice
/Invoice//LineItem[@Sku='123']/*
=================================================>
第四部分Translate-SQL(SQL Server):PL_SQL--plus
(17)有三个表:
A(用户基本信息):UserInfo
username addr postcode ...
B(用户提供的产品记录)(同一用户可能有多条记录): UserProduct
用户名 产品 产品金额 。。。
username product money 。。。
张三 书 100
张三 电脑 200
C(支付记录)(同一用户可能有多条记录)): UserPay
流水号 用户名 支付金额
ID username ActMoney ...
张三 书 30
张三 电脑 100
现要由三个表查询得到金额/支付表
用户名 地址 邮编 总金额(对产品金额求和)已支付金额(对支付金额求和)
username addr postcode totalmoney payedmoney
select username, addr, postcode , () totalmoney
from UserInfo
create proc UP_XXXXXXXXXX
@Username varchar(32)
as
begin
end
select UserName, sum(money) as TotalMoney from UserProduct group by UserName
select UserName, sum(ActMoney) as payedmoney from UserPay group by UserName
(18)一张表(表名tmp)里有
id 自动编号 int identity(1,1)
name nvarchar(20)
里面有记录状况如下显示:
1 aa
2 bb
3 aa
4 dd
5 bb
问:我现在要删除重复的数据。但是我想在重复的数据中只保留一条记录。
。请通过一句sql语句实现这功能?
××××××delete from TableName where id in(select id from TableName where name not in (select distinct name from TableName))
(19)同上例有表,试建立一个存储过程传入@name参数,如果表中存在有name=@name则返回1反之返回0
create proc UP_YYYY
@name varchar(32)
as
begin
if(exists(select * from TableName where name=@name))
return 1
else
return 0
end
(20)同上例有表,试着往表中增加字段password (32个等宽字符,非空,默认为空字符串)
alter table TableName
add password varchar(32)
第五部分C#.net
(21)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]的值是()。
A. 9
B. 2
C. 6
D. 越界
(22)abstract class BaseClass
{
public virtual void MethodA()
{
Console.WriteLine('BaseClass');
}
public virtual void MethodB()
{
}
}
class Class1 : BaseClass
{
//如果不加override, 或者new,那么: 它就是属于该类独立的方法,与父类中同名方法没有关系;
public void MethodA()
{
Console.WriteLine('Class1');
}
public override void MethodB()
{
}
}
class Class2 : Class1
{
//如果它的直接父类,有同名方法、则直接走父类的方法。
//如果父类没有同名方法,则继续往上走,再找父类的父类中同名方法
new public void MethodB()
{
}
}
class MainClass
{
public static void Main(string[] args)
{
Class2 o = new Class2();
o.MethodA();
// Console.Read();
}
}
以上代码输出的结果是?( )
A. BaseClass
B. BassClass Class1
C. Class1
D. Class1 BassClass
(23) 委托和事件这两个概念是完全配合的。
委托仅仅是函数指针,那就是说,它能够引用函数,通过传递地址的机制完成。
委托是一个类,当你对它实例化时,要提供一个引用函数,将其作为它构造函数的参数。
每一个委托都有自己的签名,例如:
Delegate int SomeDelegate(string s, bool b);是一个委托申明,在这里,提及的签名,
就是说SomeDelegate 这个委托 有 string 和 bool 类型的形参,返回一个int 类型。
System.Web.UI.WebControls.Repeater已定义了
Delegate void RepeaterItemEventHandler(void(object,RepeaterItemEventArgs) target)
请将它的ItemDataBound事件委托至rep_ItemDataBound,并写出rep_ItemDataBound方法原型
//定义委托
delegate void Repeater_ItemDataBoundEventHander(object obj, System.RepeaterItemEventArgs arg);
//定义方法
public void rep_ItemDataBound(object obj, System.RepeaterItemEventArgs arg)
{
//........................
}
//让委托指向所要包含的函数名
Repeater_ItemDataBoundEventHander deleRepeater = new Repeater_ItemDataBoundEventHander(rep_ItemDataBound);
(24)简单说明接口和【纯虚类】之间的区别
用virtual来修饰的都是虚函数;如果一个类中的方法都是虚函数,那么该类就叫做:纯虚类
虚函数可以有方法体
继承纯虚类的子类,可以不实现所有的虚函数
接口:所有方法都是抽象的、并且不能有方法体.
继承接口的类,必须实现所有的接口方法
(25)简单列举ADO.net中的常用类和简要说明
DataConnection, DataCommand, DataAdapter, DataReader, DataSet
(26)写出我国身份证号码的正则表达式15位数字/18位数字/17位数字或大小写的X
(^[0-9]{15})|(^[0-9]{18})|(^[0-9]{17}[x]|[X])
================================================
============================================================
1.new有几种用法
第一种:new Class();实例化一个类
第二种:覆盖方法 隐藏子类的方法
public new XXXX(){}
第三种:new 约束指定【泛型】类声明中的任何类型参数都必须有公共的无参数构造函数。
2.如何把一个array复制到arrayList里
foreach( object o in array )arrayList.Add(o);
3.datagrid.datasouse可以连接什么数据源 [dataset,datatable,dataview]
dataset,datatable,dataview , IList
//System.Data.DataSet ds = new DataSet();
//System.Data.DataView dv = ds.Tables[0].DefaultView;
4.概述反射和序列化
反射:程序集包含模块,而模块包含类型,类型又包含成员。
反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,
将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性
序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,
然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。
在另一端,反序列化将从该流重新构造对象。
5.概述o/r mapping 的原理
利用反射,配置 将类于数据库表映射 :::通过DALFactory映射到SqlServerDAL
6.类成员有( )种可访问形式
可访问形式?不懂。
可访问性:【public ,protected ,private,internal,static,final 】
7.用sealed修饰的类有什么特点 seal:::::密封
sealed 修饰符用于防止从所修饰的类派生出其它类。
如果一个密封类被指定为其他类的基类,则会发生编译时错误。就是说:密封类不能被继承!!
密封类不能同时为抽象类。
sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。
具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换
为非虚拟调用来处理。
8.列举ADO.NET中的五个主要对象,并简单描述
connection,command,dataReader,DataAdapter,dataset ...
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 ) 中文两个字节
10.C#中,string str = null 与 string str ='',请尽量用文字说明区别。(要点:说明详细的内存空间分配)
string str ='' 分配空间 ,但是分配大小为0
string str = null; 不分配空间
11.详述.NET里class和struct的异同!
class:放在 ? struct放在?
struct值传递
结构和类都可以继承接口;;结构不能结成接口,也不能继承类
类与结构有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。
然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。
结构的值存储在“在堆栈上”或“内联”。细心的程序员有时可以通过聪明地使用结构来增强性能。
值类型: 栈,预先分配好
引用类型: 堆,动态分配
13.什么是code-behind技术 :幕后代码、代码与界面分离
aspx and aspx.cs
14.概述三层结构体系
web/business Logic Layer/dataaccess Layer
15.asp.net如何实现MVC模式,举例说明! M:Model模型(数据结构) C:controller控制器 V:view视图,UI
web/business/dataaccess
========================================================================================
========================================================================================
1.
A.面向对象的思想主要包括什么?
面向对象是一种思想,是相对于“面向过程”
三大基本特征:封装、 继承、 多态
答:这个题范围太广,不知道说什么.
B.什么叫做.net?请说说你对.net的理解??
第一、.net是一种思想:为了下一代互联网跨平台更加方便,操作更加简单而开发的一系列工具。
第二、是一个大框架、包括三大部分:CLR(Common Language Runtime),一套功能极其强大的基础类库(System.)
集成了多种开发语言(C#,VB.Net, C++.Net, J#)
ASP.NET,ADO.NET, 一系列方便的可视化组件
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#中的接口和类有什么异同。
1.接口:interface,类:class
2.接口:所有方法都不能有修饰符、、不能有方法体;类可以
3.接口:可以被多继承、也可以被结构继承;类不能多继承、也不能被结构继承
4。接口可以定义一个变量,,但是不能new,,但是又可以让它指向子类的一个实例!
9.。net中读写数据库需要用到哪些类?他们的作用
答:这个类自已可以写的啊,你是指基类吗?那configuration,sqlconnection,sqlcommand等都要用到.
10.UDP连接和TCP连接的异同。
答:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结.
11.ASP.net的身份验证方式有哪些?分别是什么原理?
答:form认证,windows集成认证等,原理不清楚.
12.进程和线程分别怎么理解?
答:进程是老子,线程是儿子,没有老子就没有儿子,一个老子可以有多个儿子.
一个儿子可以成为别人的儿子,一个老子也可以为别的老子生儿子.
13.什么是code-Behind技术。
答:代码分离,这是个明智的东西,像ASP这样混成一堆很不爽.或者可以理解成HTML代码写在前台,C#代码写在后台.当然前台也有脚本,类的调用等,其实写在一起也是可以的.
15..net中读写XML的类都归属于哪些命名空间?
答:System.Xml
我自已写的就不一定了,嘿嘿.
16.解释一下UDDI、WSDL的意义及其作用。 web service
答:什么东西?
17.什么是SOAP,有哪些应用。
答:SOAP(Simple Object Access Protocol )简单对象访问协议是
在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。
使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),
可以允许任何类型的对象或代码,
在任何平台上,以任何一直语言相互通信
。这种相互通信采用的是XML格式的消息,具体请看:http://playist.blogchina.com/2521621.html
18.如何部署一个ASP.net页面。 网站如何发布???bin文件夹、apsx页面、htm页面、配置文件,ascx文件,asmx文件
答:随便啦,想直接上传就直接上传,想打包成EXE就打包,看个人喜好.
19.如何理解.net中的垃圾回收机制。
答:GC?对象创建了总要清除啊,不然内存哪够用? new都要分配一定的资源(内存空间)
20.常用的调用webservice方法有哪些?
答:调用就调用,.(1)asmx(URL)添加web引用、、(2)通过wsdl命令符来调用。。
======================================
1.<%# %> 和 <% %> 有什么区别?
<%# %>表示绑定的数据源【绑定字段】
<% %>是服务器端代码块
2.以下代码能否通过编译?如果不能,请改成正确代码,并说明原因。
<html>
<%
int subtract(int num1, int num2) {
return num1-num2;
}
%>
<body>
<%
int number = 100;
while (number > 0) {
Response.Write('Value: ' + number + '<br/>');
number -= 1;
}
%>
</body>
</html>
3.通过Web Site Administration Tool (in VS2005) 可以实现哪些功能?
Web Site Administration Tool 会自动对哪些文件进行修改或添加?
4.解释一下带 “original_” 前缀的Data Parameter和不带前缀的Data Parameter有什么异同。
(可用简单的代码说明)
5.修改下面的代码段,使GridView能Update数据。
<%@ Page Language='C#' %>
<html>
<head runat='server'>
<title>GridView</title>
</head>
<body>
<form id='form1' runat='server'>
<asp:GridView ID='GridView1' AllowSorting='true' AllowPaging='true' Runat='server'
DataSourceID='SqlDataSource1' DataKeyNames='id' AutoGenerateColumns='False'>
<Columns>
<asp:BoundField ReadOnly='true' HeaderText='ID' DataField='id' SortExpression='id' />
<asp:BoundField HeaderText='Last Name' DataField='lname' SortExpression='lname' />
<asp:BoundField HeaderText='First Name' DataField='fname' SortExpression='fname' />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID='SqlDataSource1' Runat='server'
SelectCommand='Select [id], [lname], [fname] FROM [authors]'
ConnectionString='<%$ ConnectionStrings:Pubs %>' />
</form>
</body>
</html>
6.GridView没有内置Insert 数据的功能,如果想在GridView内Insert数据,你有什么想法?
7.ASP.NET 2.0 哪个(些)特性是你觉得最激动人心的?为什么?(也可以谈C#2.0)
ASP.NET 2.0相对于1.1突出了3大理念,
1,提高生产力
A 一致性(masterpage)
B 会员管理
C 资料存取
D 个性化
2 管理能力的提高(例如WEB.CONFIG)
3 提升效能,满足更多人的访问
web2.0,第一,工具使用上,慢得惊人、
发布网站以后,整体反映速度比2003要慢!
代码和设计界面切换的时候,2.0支持光标定位.这个我比较喜欢
8.你觉得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多个新的控件,减少了工作量
9.把你在学习过程中做过的demo发一个给我,或者把你做过的demo组合在一个项目中发给我
1、override与重载的区别
2、.net的错误处理机制是什么try...catch..finally
3、C#中接口和类的异同
4、DataReader[必须是连接式,游标向后走]和DataSet【支持断开式,而且可以任意定义游标,就是可以使用下标】的异同
Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数
.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。
接口和类都是类,不同的事,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。
DataReader用于读取数据,DataSet用于在内存中保存数据。
重载与覆盖的区别
1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。
2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
3、覆盖要求参数列表相同;重载要求参数列表不同。
4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。
4、DataReader和DataSet的异同
DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作...
DataSet就可以理解为:内存中的虚拟数据库【数据表,row
恋花望月轻轻唱 听雨随风悄悄追