欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.Net 面试题整理(一)

程序员文章站 2022-11-30 12:41:29
1、C# 的三大特性? 封装、继承、多态 2、简述 private、 protected、 public、 internal 修饰符的访问权限。 private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公 ......

1、c# 的三大特性?

封装、继承、多态

2、简述 private、 protected、 public、 internal 修饰符的访问权限。

private : 私有成员, 在类的内部才可以访问。

protected : 保护成员,该类内部和继承类中可以访问。

public : 公共成员,完全公开,没有访问限制。 

internal: 当前程序集内可以访问。

3、接口和类的区别

接口:不能实例化,方法也没有具体的实现,被继承时,继承类必须实现接口的所有方法。

类:可以被实例化,被继承时,继承类也不需要重新实现被继承类中的方法。但是如果被继承类的方法中有abstract修饰的,继承类则需要实现这个方法。

4、在对象比较中,对象一致和对象相等分别是指什么?

对象一致指的是引用相同。对象相等指的是内容相等。

5、ref修饰参数和out修饰参数的区别

ref、out都可以从函数内部传出值,区别是,ref修饰的参数必须先初始化、而out不用

6、c#中string和string有什么区别?

  • string是c#中的类,string是framework的类,
  • 如果写的是string,在编译的时候编译器会把他转换为string。所以直接使用string会让编译器少做工作,可以提高一下性能。
  • 在c#中建议使用string,比较符合规范 。
  • 在c#中string是关键字,而string不是。

7、 const和readonly两者区别? 

const:

  • 编译时常量
  • 本身就是静态变量
  • 只能定义基本类型,如int,string等等
  • 在声明的时候必须初始化,且不能修改

readonly:

  • 运行时常量
  • 不是静态变量,如果需要需加上“static”关键字
  • 可以定义一切类型
  • 可以延迟到构造函数初始化

8、public static const int a = 1; 这段代码有错误吗

错误:const 不能被修饰为 static
因为定义为常量(const)后就是静态的(static)

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

会执行,在return前执行。

10、string str = null 与 string str = "" 的区别

string str = null 是不给他分配内存空间,而 string str = "" 给它分配长度为空字符串的内存空间。
string str = null 没有 string 对象,string str = "" 有一个字符串对象。

11、什么叫做泛型?

泛型就是参数化类型

泛型的作用是减少重复代码

12、什么是反射?

动态获取程序集信息、对象信息。

13、装箱和拆箱

装箱是将值类型转化为引用类型的过程;

拆箱是将引用类型转化为值类型的过程

14、2+5+”8” 得到的结果是什么

从左向右运算,int + string 是 string,所以是 “78”

扩展:”8”+2+5 是”825”,而 “8”+(2+5)是 “87”

15、a=10,b=15,请在不使用第三方变量的情况下,把a、b的值互换

            int a = 10;
            int b = 15;
            a += b;
            b = a - b;
            a -= b;
            console.writeline("a={0}\r\nb={1}", a, b);

16、现有 1~10 共十个自然数,已随机放入一个有 8 个元素的数组 nums[8]

int[] numbers= { 3, 9, 8, 2, 4, 6, 10, 7 };

要求写出一个尽量简单的方案,找出没有被放入数组的那 2 个数,并打印这 2 个数。

            int[] numbers = { 3, 9, 5, 2, 1, 6, 10, 7 };
            for (int i = 1; i <= 10; i++)
            {
                //通过使用默认的相等比较器确定序列是否包含指定的元素。
                if (!numbers.contains(i))
                {
                    console.writeline(i);
                }
            }

17、请编程实现一个冒泡排序算法?

            int[] array = { 1, 3, 5, 7, 13, 2, 4, 6, 8, 10 };
            for (int i = 0; i < array.length; i++)
            {
                for (int j = 0; j < array.length - 1 - i; j++)
                {
                    if (array[j] > array[j + 1])
                    {
                        int temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                    }
                }
            }
            console.writeline("冒泡排序");
            foreach (var t in array)
            {
                console.writeline($"{t}");
            }

18、产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复?

            var list = new list<int>();
            var random = new random();
            while (true)
            {
                var temp2 = random.next(1, 101);
                if (list.count == 100)
                {
                    break;
                }
                if (!list.contains(temp2))
                {
                    list.add(temp2);
                }
            }
            foreach (var t in list)
            {
                console.write(t + ",");
            }