ITPub博客

首页 > Linux操作系统 > Linux操作系统 > c#基礎必讀1

c#基礎必讀1

原创 Linux操作系统 作者:Flourish2004 时间:2011-07-29 19:39:21 0 删除 编辑

1.维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么
答:尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策

2 : ADO.NET相对于ADO等主要有什么改进?
ADO数据以Recordset 形式存储 ADO.NETDataSet形式存储
Recordset
对数据库持续连接访问ADO.NET提供对数据库断开连接
ADO.NET
ADO相比,优势在于提供了数据集和数据适配器,有利于实现分布式处理,降低对数据库服务器资源的消耗。

3 : ASP.NETASP相比,主要有哪些进步?
asp.net可以使用强类型语言页面是编译,执行速度快,增加安全性和可靠性,通过继承机制来支持代码的重用,提供声明性服务器控件减少代码行数Asp需要解释,执行速度慢,重用代码不方便,没有调试机制

4C#中的委托是什么?事件是不是一种委托?
答 委托本质上是一种方法接口,它相当于C/C++中的函数指针,当然它比函数指针安全,在C#中通常用于事件处理。与JAVA相比,可以避免使用大量小粒度的匿名类。
事件不是委托,不过由于事件的性质决定了处理它的程序逻辑能访问的参数,因此,在C#中处理事件的逻辑都包装为委托(一种方法接口)。实际上,如果你处理自定义的事件,就像JAVA中那样用接口实现也是可以的,不过这么做在C#一般没有什么特别的好处。

5new有几种用法
第一种:new Class();
第二种:覆盖方法

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

6:如何把一个array复制到arrayList
foreach( object o in array )
{
arrayList.Add(o)
}

7DataGridDataSource可以连接什么数据源
[ DataSetDataTableDataView] DataSetDataTableDataViewIList

8:概述反射和序列化
答 反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,然后,可以调用类型的方法或访问其字段和属性
答 序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

9:概述OR/Mapping 的原理
答 利用反射,配置 将类于数据库表映射

10:类成员有( )种可访问形式
答 可访问性:publicprotected privateinternal

11:用sealed修饰的类有什么特点
sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其他类的基类,则会发生编译时错误。密封类不能同时为抽象类。
sealed
修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。

12:执行下面代码后:
String strTemp =”abcdefg
某某某
Int i System.Text.Encoding.Default.GetBytes(strTemp).Length;
Int j = strTemp.Length;
问:i=(14 ) j=(11 )
i=(14 )
j=(11 ) 中文两个字节

13C#中,string str = null string str =”",请尽量用文字说明区别。(要点:说明详细的内存空间分配)
string str = null 是不分配内存空间,string str = “” 给它分配长度为空字符串的内存空间。

14:概述.NET里对 Remoting Webservices 两项技术的理解和实际中的应用
答 远程逻辑调用,Remoing接口只能用在.NET

16:概述三层结构体系
答 表示层 数据层 业务层

17:用.netB/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
答:一般为3
数据访问层,业务层,表示层。
数据访问层对数据库进行增删查改。
业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。
表示层为了与用户交互例如用户添加表单
优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。
缺点: 增加成本。

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

19:什么叫应用程序域?
什么是受管制的代码?
什么是强类型系统?
什么是装箱和拆箱?
什么是重载?
CTS
CLSCLR分别作何解释?
答 应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小
受管制的代码:unsafe:非托管代码。不经过CLR运行。
强类型系统 RTTI:类型识别系统。
装箱就是把值类型到引用类型的转换
拆箱就是引用类型到值类型的转换
重载 方法名相同 不用个数的参数或者指定不同参数类型
CTS
:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。
class box{
int aa(object i) {}
object bb(){}
}
int bb=5
new box().aa(bb) //
装箱
int conver=
intnew box().zz(); //拆箱
//
重载
public void aaa(int rad){ }
public void aaa(int len,int bre ){ }
public void aaa(sting str){ }

20:列举一下你所了解的XML技术及其应用
:XML可以统一数据格式,XML可是好东西,保存配置,站与站之间的交流,WebServices都要用它.

21 ADO.NET中常用的对象有哪些?分别描述一下。
: Connection 对象用于在应用程序和数据库之间的连接
Command
可以检索和操纵数据库中的数据
DataAdapter
对象充当DataSet和数据源之间用于检索和保存数据的桥接器
DataSet
对象从数据库检索的数据可以存储在其中能够以XML形式保存
DataReader
是查询结果的一种只进。只读的视图 不具有DataSet的任何复杂功能
所以可以加快访问和查看数据的速度 不提供断开式访问

22:如何理解委托?
:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.
msdn2005
中是这样解释的
:
委托具有以下特点:委托类似于 C++ 函数指针,但它是类型安全的。

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

23C#中的委托是什么?事件是不是一种委托?
答 委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的引用。
是,是一种特殊的委托

24UDP连接和TCP连接的异同。
:UDP前者只管传,不管数据到不到,无须建立连接.TCP后者保证传输的数据准确,须要连结。

25ASP.NET的身份验证方式有哪些?分别是什么原理?
:Forms认证,Windows集成认证等,Passport验证 None

27:什么是Code-Behind技术。
:代码分离,这是个明智的东西,或者可以理解成HTML代码写在前台,C#代码写在后台.当然前台也有脚本,类的调用等,其实写在一起也是可以的。

28.NET中读写XML的类都归属于哪些命名空间?
:System.Xml

29解释一下UDDIWSDL的意义及其作用
:UDDI 用于注册各个服务提供商提供的服务 以便可以共享它们 它还有助于WEB服务客户或web用户查找该Web服务
WSDL
web服务描述语言(web Services Description Language

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

31:如何理解.NET中的垃圾回收机制。
GC?对象创建了总要清除啊,不然内存哪够用?

32:常用的调用Webservice方法有哪些?
HTTP-get Http-post Http-soap

33 概述.NET里对 remoting webservice 两项技术的理解和实际中的应用。
答 远程逻辑调用,remoing接口只能用在.net

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

35:列举ASP.NET 页面之间传递值的几种方式。
. 1.使用QueryString,
源页面

string url;
url=”anotherwebform.aspx?name=” + TextBox1.Text
Response.Redirect(url);
目标页面
Label1.Text=Request.QueryString["name"];
2.
使用Session变量
源页面
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Server.Transfer(“anotherwebform.aspx”);
目标页面
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
Session.Remove(“name”);
Session.Remove(“email”);
3.
使用Server.Transfer
源页面代码
:
public string Name
{
get {return TextBox1.Text; }
}
//
然后调用Server.Transfer方法

private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer(“anotherwebform.aspx”);
}
目标页面代码:
private void Page_Load(object sender, System.EventArgs e)
{
WebForm1 wf1;
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
}

6:一列数的规则如下: 112358132134…… 求第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);
}
}

37override与重载的区别
答 :
override
与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要
Override
是进行基类中函数的重写。为了适应需要。

38:请编程遍历页面上所有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 ;
}
}
39
:请编程实现一个冒泡排序算法?
答:
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 ;
}
}
}

40:描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
答:不是。可以用任意类型。

41:求以下表达式的值,写出您想到的一种或几种实现方法: 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() ;

42:在下面的例子里
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

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/183242/viewspace-703573/,如需转载,请注明出处,否则将追究法律责任。

上一篇: javascript 學習
下一篇: c#基礎必讀2
请登录后发表评论 登录
全部评论

注册时间:2009-01-06

  • 博文量
    149
  • 访问量
    175180