信息交流、传播、提炼

nice to meet you

博客园 首页 新随笔 联系 订阅 管理

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

2.ADO.net中常用的对象有哪些?分别描述一下。
答:Connection 数据库连接对象
Command 数据库命令
DataReader 数据读取器
DataSet 数据集

3.值类型和引用类型的区别?写出C#的样例代码。
答:值类型是在内存中保存,引用类型是在内存中保存一副本.你在内存中可以有多个某种引用对象..但是值类型始终只有一个.
最常见的值类型就是static,struct;
例如:
static int aa = 1;//值类型
如果多个用户改变aa的值则,aa的值会以最后一个修改的记录为准.其他人的修改则会被冲掉.
引用类型,最能说明问题的就是实例化..你new出来的对象单独分配一个独立的内存..所以值不会互相冲突/

4.如何理解.net中的垃圾回收机制。
垃圾回收体制如下:
如果发现内存不够,则垃圾回收器,将全部对象作为无效对象(被回收对象),然后先将全局变量,static,处于活动中的局部变量,以及当前CG指针指向的对象放入一个表中.然后
会搜索新列表中的对象所引用的对象.加入列表中,其他没有被加入列表的对象都会被回收.

5.常用的调用webservice方法有哪些?
我一般用的是WSDL..或者web引用..

 

6.C#中的委托是什么?事件是不是一种委托?
答:委托本质上是一种“方法接口”,它相当于C/C++中的函数指针,当然它比函数指针安全,在C#中通常用于事件处理。事件不是委托,不过由于事件的性质决定了处理它的程序逻辑能访问的参数,因此,在C#中处理事件的逻辑都包装为委托。

7.概述反射和序列化?
  答:反射:公共语言运行库加载器管理应用程序域。这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。
序列化:序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。


8.C#中,string str = null 与 string str ="",请尽量用文字说明区别。
答:string str =""初始化对象分配空间,而string str=null初始化对象

9.C#中的接口和类有什么异同。
答:异:不能直接实例化接口。接口不包含方法的实现。接口、类和结构可从多个接口继承。但是C# 只支持单继承:类只能从一个基类继承实现。类定义可在不同的源文件之间进行拆分。
同:接口、类和结构可从多个接口继承。接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。接口可以包含事件、索引器、方法和属性。一个类可以实现多个接口。


10.请编程实现一个冒泡排序算法?
答: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 ;
    }
  }
}

Part2.
1.维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么?
答:尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策。
2.什么是事务?什么是锁?
答:事务是指一个工作单元,它包含了一组数据操作命令,并且所有的命令作为一个整体一起向系统提交或撤消请求操作,即这组命令要么都执行,要么都不执行。
锁是在多用户环境中对数据的访问的限制。SqlServer自动锁定特定记录、字段或文件,防止用户访问,以维护数据安全或防止并发数据操作问题,锁可以保证事务的完整性和并发性。
3.什么是索引,有什么优点?
答:索引象书的目录类似,索引使数据库程序无需扫描整个表,就可以在其中找到所需要的数据,索引包含了一个表中包含值的列表,其中包含了各个值的行所存储的位置,索引可以是单个或一组列,索引提供的表中数据的逻辑位置,合理划分索引能够大大提高数据库性能。
4.视图是什么?游标是什么?
答:视图是一种虚拟表,虚拟表具有和物理表相同的功能,可以对虚拟表进行增该查操作,视图通常是一个或多个表的行或列的子集,视图的结果更容易理解(修改视图对基表不影响),获取数据更容易(相比多表查询更方便),限制数据检索(比如需要隐藏某些行或列),维护更方便。
游标对查询出来的结果集作为一个单元来有效的处理,游标可以定位在结果集的特定行、从结果集的当前位置检索一行或多行、可以对结果集中当前位置进行修改、
5.什么是存储过程?有什么优点?
答:存储过程是一组予编译的SQL语句,它的优点有1.允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。2.允许更快执行,如果某操作需要执行大量SQL语句或重复执行,存储过程比SQL语句执行的要快。3.减少网络流量,例如一个需要数百行的SQL代码的操作有一条执行语句完成,不需要在网络中发送数百行代码。4.更好的安全机制,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。
6.什么是触发器?
答:出发器是一种特殊类型的存储过程,出发器主要通过事件触发而被执行的,触发器的优点:1.强化约束,触发器能够提供比CHECK约束。2.跟踪变化,触发器可以跟踪数据库内的操作,从而不允许未经允许许可的更新和变化。3.联级运算,比如某个表上的触发器中包含对另一个表的数据操作,而该操作又导致该表上的触发器被触发
7.T-SQL中is null和null 的区别?
答:is null 和 null 区别相当于 "是空盒子" 和 "空盒子"的区别
8.什么叫做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中输入1' and 1='1     就可以进入系统了。

Part3.
1.C#中的接口和类有什么异同。
答   接口只能包含抽象方法,不能包含任何方法实现,不能创建接口实例,接口成员没有访问修饰符,接口成员必须是方法属性事件或者索引器不能包含常数字段运算符也不能有静态成员 。
2.请解释一下。NET多层应用程序中层与层之间以那几种方式进行数据传递。并解释你自己的项目中采用那种方式进行。  
答   这个传递方式不定,很多都是传递DataSet, XML也可以 。
3. 什么是viewstate,能否禁用?是否所用控件都可以禁用? 
答  可以全部禁用,viewstate就是hidden   input,只不过加上了微软的编码方式记录控件的状态 .
4.  ASP。NET中共有几种类型的控件?各有什么区别?  
答      Html   控件   传统的html标记  
        Web     控件     可以回传数据,事件驱动  
        自定义   控件   在原有控件的基础上增加功能  
        复合控件         多个子控件复合成一个新的控件   .
5.ASP.net的身份验证方式有哪些?分别是什么原理?
答:Windwos(默认)用IIS...
    From(窗体)用帐户
    Passport(密钥)
6.override与重载的区别
答 :
override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要
Override 是进行基类中函数的重写。为了适应需要。
7. 简述 private、 protected、 public、 internal 修饰符的访问权限。
答   private :   私有成员, 在类的内部才可以访问。 
     protected : 保护成员,该类内部和继承类中可以访问。 
     public :    公共成员,完全公开,没有访问限制。 
     internal:   在同一命名空间内可以访问。
8.如何把一个array复制到arrayList里
答 foreach( object o in array )arrayList.Add(o);
9简要谈一下您对微软.NET   构架下remoting和webservice两项技术的理解以及实际中的应用。(10)  
  remoting是.net   中用来跨越machine,   process,   appdomain   进行方法调用的技术,对于三成结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的DCOM  Web   Service是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。Web   Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型 
10.如何理解委托?
答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.
msdn2005中是这样解释的:
委托具有以下特点:
委托类似于 C++ 函数指针,但它是类型安全的。
委托允许将方法作为参数进行传递。
委托可用于定义回调方法。
委托可以链接在一起;例如,可以对一个事件调用多个方法。
方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。
C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。

11.const 和 static readonly 区别?
答:const
用 const 修饰符声明的成员叫常量,是在编译期初始化并嵌入到客户端程序
static readonly
用 static readonly 修饰符声明的成员依然是变量,只不过具有和常量类似的使用方法:通过类进行访问、初始化后不可以修改。但与常量不同的是这种变量是在运行期初始化

 

posted on 2008-03-25 19:22  seeyou  阅读(289)  评论(0)    收藏  举报