page contents

c#面试题及答案整理

本文讲述了c#面试题及答案整理!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2022-10-lQ3qeb6n6340d9ec61847.png

本文讲述了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.Transfer
  4. 使用Application
  5. 使用Cache
  6. 使用HttpContext的Item属性
  7. 使用文件
  8. 使用数据库
  9. 使用Cookie

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

答:

publicclass 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 类为存储字符串创建了此类的一个实例。

classSampleCollection<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 indexer
class 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;
System.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:数据只读器

Connection:数据库连接对像

Command:数据库命令

12.什么是Code-Behind技术?

答:代码后置。

13.在.net中,配件的意思是?

答:程序集。(中间语言,源数据,资源,装配清单)

14.常用的调用WebService的方法有哪些?

答:

1.使用WSDL.exe命令行工具。

2.使用VS.NET中的Add Web Reference菜单选项

15.在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。

答:

string str = null ​是不给他分配内存空间,而​string str = ""​ 给它分配长度为空字符串的内存空间。

16.请详述在C#中类(class)与结构(struct)的异同?

答:

class可以被实例化,属于引用类型,class可以实现接口和单继承其他类,还可以作为基类型,是分配在内存的堆上的。

struct属于值类型,不能作为基类型,但是可以实现接口,是分配在内存的栈上的。

17.写出一条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 id from A )as A)

18.GC是什么? 为什么要有GC?

答:

GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:

System.gc()​或者​Runtime.getRuntime().gc()

19.String s = new String("xyz");创建了几个String Object?

答:

两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。

20.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

答:

会执行,在return后执行。

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2022-10-08 09:59
  • 阅读 ( 314 )
  • 分类:C/C++开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. Pack 1131 文章
  3. 小柒 1046 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章