当前位置:K88软件开发文章中心编程语言.NETC# → 文章内容

c#面试题及答案整理

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-23 14:00:50

由 xqjrorz 创建,Carrie 最后一次修改 2018-05-10 下文是W3Cschool为大家整理的一些比较经典的C#面试题,大家不妨来试试,不看答案,你能答对几题呢?1.简述 private、 protected、 public、internal 修饰符的访问权限答:private:私有成员, 在类的内部才可以访问(只能从其声明上下文中进行访问)。  protected:保护成员,该类内部和从该类派生的类中可以访问。 Friend:友元 ,声明 friend 元素的程序集中的代码可以访问该元素,而不能从程序集外部访问。Protected Friend:在派生类或同一程序集内都可以访问。public:公共成员,完全公开,没有访问限制。  internal:在同一命名空间内可以访问。(很少用)2.列举ASP.NET页面之间传递值的几种方式答:1.使用QueryString,如....?id=1;response. Redirect()....2.使用Session变量3.使用Server.Transfer4.使用Application5.使用Cache6使用HttpContext的Item属性7.使用文件8.使用数据库9.使用Cookie3.一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第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); }}4.C#中的委托是什么?事件是不是一种委托?答:委托是将一种方法作为参数代入到另一种方法。是,事件是一种特殊的委托。  //比如:onclick事件中的参数就是一种方法。5.实现多态的过程中overload 重载与override 重写的区别答:overload 重载是方法的名称相同,参数或参数类型不同,进行多次重载以适应不同的需要。Override 是进行基类中函数的重写,实现多态。6.请编程实现一个冒泡排序算法?答: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 ;        }     }  }或者 public static void bubble_sort(int[] x) { for (int i = 0; i < x.Length; i++) { for (int j = i; j < x.Length; j++) { if (x[i] < x[j])   //从大到小排序 { int temp; temp = x[i]; x[i] = x[j]; x[j] = temp; } } } } static void Main(string[] args) { int[] huage = { 1, 5, 2, 9, 3, 7, 6,4,8,0}; bubble_sort(huage); foreach (var a in huage) { Console.WriteLine(a ); } }7.描述一下C#中索引器的实现过程,是否只能根据数字进行索引答:C#通过提供索引器,可以象处理数组一样处理对象。特别是属性,每一个元素都以一个get或set方法暴露。索引器不单能索引数字(数组下标),还能索引一些HASHMAP的字符串,所以,通常来说,C#中类的索引器通常只有一个,就是THIS,但也可以有无数个,只要你的参数列表不同就可以了。索引器和返回值无关, 索引器最大的好处是使代码看上去更自然,更符合实际的思考模式.微软官方一个示例:索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。在下面的示例中,定义了一个泛型类(class SampleCollection<T>),并为其提供了简单的 get  和 set 访问器方法(作为分配和检索值的方法)。Program 类为存储字符串创建了此类的一个实例。class SampleCollection<T>{ private T[] arr = new T[100]; public T this[int i] //注意,定义索引器。this 关键字用于定义索引器。 { get { return arr[i]; //访问器采用参数 } set { arr[i] = value; //访问器采用参数 } }}// This class shows how client code uses the indexerclass Program{ static void Main(string[] args) { SampleCollection<string> stringCollection = new SampleCollection<string>(); stringCollection[0] = "Hello, World"; //这里 使用索引器进行引用 System.Console.WriteLine(stringCollection[0]); }}索引器使得对象可按照与数组相似的方法进行索引。get 访问器返回值。set 访问器分配值。this 关键字用于定义索引器。value 关键字用于定义由 set 索引器分配的值。索引器不必根据整数值进行索引,由您决定如何定义特定的查找机制。索引器可被重载。索引器可以有多个形参,例如当访问二维数组时。8.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?答:使用MVC模式分层一般为3层:数据访问层,业务层,表示层。数据访问层对数据库进行增删查改。业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。表示层为了与用户交互例如用户添加表单。9.什么是装箱和拆箱?答:装箱就是隐式的将一个值型转换为引用型对象。拆箱就是将一个引用型对象转换成任意值型。比如:int i=0;Syste.Object obj=i;这个过程就是装箱!就是将 i 装箱!比如:int i=0;System.Object obj=i;int j=(int)obj;这个过程前2句是将 i 装箱,后一句是将 obj 拆箱!10.什么是受管制(托管)的代码?答:托管代码是运行.NET 公共语言运行时CLR的代码。unsafe:非托管代码,不经过CLR运行,程序员自行分配和释放内存空间。11.ADO.net中常用的对象有哪些?分别描述一下。答:DataSet:数据集。DataCommand:执行语句命令。DataAdapter:数据的集合,用语填充。DataReader:数据只读器Co

[1] [2] [3]  下一页


c#面试题及答案整理