1.XML Web Service的原理:利用SOAP(简单对象访问协议)在http上执行远程方法的调用,也可以使用WSDL(web服务描述语言)来完成完整的描述web服务,然后用UDDI注册各个服务提供商提供的服务
2..net Remoting 的工作原理: 服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置
3.PDB是用于保存调试和项目状态信息的文件,在debug的时候将产生pdb文件,调试的时候应该放在和对应应用程序集相同的目录
4.反射和序列化
反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。
序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。
5.对象一致是指两个对象是同一对象,引用相同;对象相等是指两个对象的值相等,但引用不一定相同
a.Equals(b)表示a与b一致, a==b表示a与b的值相等
6.webconfig重要节点:
system.web 系统配置
compilation 动态调试编译设置
customErrors 自定义错误信息设置
authentication 身份验证,该节设置应用程序的身份验证策略
authorization 授权,此节点设置应用程序的授权策略
7.上下文对象是指HttpContext类的Current 属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象
8.数据库查询优化
1、多态性,多种数据库兼容;
2、支持翻页,支持查询总数,页码显示;
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
9.一个长度为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)]); }
10.产生一个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];
11.用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; } }
12.写一个函数计算当参数为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; }
方法二:
对于1-2+3-4+5-6+7+...+n,可以分为2种情况,分别为:
(1)当n是偶数时,1-2+3-4+5-6+7+...+n=(1-2)+(3-4)+(5-6)+……+[(n-1)-n]
=-1×(n/2
=-n/2
(2)当n是奇数时,1-2+3-4+5-6+7+...+n=(1-2)+(3-4)+(5-6)+……+[(n-2)-(n-1)]+n
=-1×(n-1)/2 +n
=(n+1)/2
因此,最终的算法如下:
public static int CalculateCrossNumberSequence(int index) { if (index <= 0) { return 0; } return index % 2 == 0 ? -index / 2 : (index + 1) / 2;
}
13.写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的id作为主键,注意:id可能不是连续的)
解1:select top10 * from A where id not in(select top30 id from A) 解2:select top10 * from A where id >(select Max(id) from (select top30 id from A ) as A)
14.有一张表tb有A、B、C三列?如何写一条sql语句实现如下功能:如果A>B 则显示A,B>C则选出B
select case when a>b then a when b>c then b else c end as result from tb
15.简单说明一下泛型的有什么好处?
泛型:通过参数化类型来实现在同一份代码上操作多种数据类型;利用“参数化类型”将类型抽象化,从而实现灵活的复用
好处是:类型安全、减少拆箱装箱、提高性能和质量、减少重复性的编程任务
16.什么是sql注入?
1' or 1=1