C#笔试精简

1.面向对象的思想主要包括什么?

答:任何事物都可以理解为对象,其主要特征: 继承。封装。多态。特点:代码好维护,安全,隐藏信息

2.装箱是将值类型转换为引用类型 ;拆箱是将引用类型转换为值类型 
      利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来 
例如: 
int val = 100; 
object obj = val; 
Console.WriteLine (“对象的值 = {0}", obj); 
这是一个装箱的过程,是将值类型转换为引用类型的过程 

int val = 100; 
object obj = val; 
int num = (int) obj; 
Console.WriteLine ("num: {0}", num); 
这是一个拆箱的过程,是将值类型转换为引用类型,再由引用类型转换为值类型的过程 

注:被装过箱的对象才能被拆箱

强类型:C#是强类型语言;因此每个变量和对象都必须具有声明类型

值类型和引用类型的区别?

答:基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。

所有的值类型均隐式派生自 System.ValueType

与引用类型不同,从值类型不可能派生出新的类型。但与引用类型相同的是,结构也可以实现接口。

与引用类型不同,值类型不可能包含 null 值。然而,可空类型功能允许将 null 赋给值类型。

每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。

值类型主要由两类组成:结构、枚举

结构分为以下几类:Numeric(数值)类型、整型、浮点型、decimal、bool、用户定义的结构。

引用类型的变量又称为对象,可存储对实际数据的引用。声明引用类型的关键字:class、interface、delegate、内置引用类型: object、string

写出一条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 idfrom A )as A)

 

18.列举ASP.NET 页面之间传递值的几种方式。

答:1.使用QueryString, 如....?id=1;response.Redirect().... 2.使用Session变量 3.使用Server.Transfer 4.使用Application变量 5.使用Cookie

22. 一列数的规则如下: 1、1、2、3、5、8、13、21、34......求第30位数是多少,用递归算法实现。(C#语言)

 

答案:

publicclass MainClass

{

publicstatic void Main()

{

Console.WriteLine(Foo(30));

}

 

publicstatic int Foo(int i)

{

if (i<= 0)

return0;

else if(i> 0 && i <= 2)

return1;

elsereturn Foo(i -1) + Foo(i - 2);

}

}

25、接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?

答案:接口是一个纯粹的抽象类,没有任何实际的东西,只是定义了一个框架,而抽象类里面可以有实际的一个方法,并不要求所有的方法都是抽象的。可以实现一个接口中的所有方法,也可以继承一个抽象的类,然后覆写其中的方法。接口一般只有方法,而没有数据成员或属性。抽象类有方法,也有数据成员或属性,一般情况下,优先考虑用接口,只有当可能要访问到数据成员或属性时,用抽象类。

28.如何把一个array复制到arrayList里

答案:foreach( object o in array )arrayList.Add(o);

37.什么叫做SQL注入,如何防止?请举例说明。

答案:SQL注入就是在正常的SQL执行语句中恶意插入攻击者想要运行的sql语句。1.最根本的,不使用组合sql的方法,而是通过使用命令参数方式来执行命令,比如我们把sql改成这种方式:string strSql = "select *from [user] where LoginName =@LoginName and Pwd =@Pwd ";,然后通过sqlcommand来执行它,就可以从根本上解决这个问题。2.控制参数的长度。因为要想进行sql注入的话,需要一定长度的字符串才能执行,如果我们规定LoginName 的长度最长不超过8个,一般不会造成损害,当然这个只是在特殊的情况下才使用,比如有些情况可能不能使用命令参数方式。

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

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

35.能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。
答:IEnumerable 、 GetEnumerator。

38.abstract class和interface有什么区别?
答:
声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽像类,并让它指向具体子类的一个实例。不能有抽像构造函数或抽像静态方法。Abstract 类的子类为它们父类中的所有抽像方法提供实现,否则它们也是抽像类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

41.构造器Constructor是否可被override?
答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

55.如何处理几十万条并发数据?
答:用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.

57.进程和线程的区别?
答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。

62.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
答:session(viewstate) 简单,但易丢失
application 全局
cookie 简单,但可能不支持,可能被伪造
url参数 简单,显示于地址栏,长度有限
数据库 稳定,安全,但性能相对弱

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值