net必问的面试题系列之基本概念和语法

上个月离职了,这几天整理了一些常见的面试题,整理成一个系列给大家分享一下,机会是给有准备的人,面试造火箭,工作拧螺丝,不慌,共勉。
1.net必问的面试题系列之基本概念和语法
2.net必问的面试题系列之面向对象
3.net必问的面试题系列之设计模式
4.net必问的面试题系列之集合、异常、泛型
5.net必问的面试题系列之简单算法
6.net必问的面试题系列之数据库
7.net必问的面试题系列之web前端

1. 字符串中string str=null和string str=""的区别

string str="" ,初始化对象,并分配一个空字符串的内存空间
string str=null,初始化对象,不会分配内存空间

2. byte b = 'a'; byte c = 1; byte d = 'ab'; byte e = '啊'; byte g = 256; 这些变量有些错误是错再哪里?

a 本题考查的是数据类型能承载数据的大小。
b 1byte =8bit,1个汉字=2个byte,1个英文=1个byte=8bit
c 所以bc是对的,deg是错的。'a'是char类型,a错误
d java byte取值范围是-128~127, 而C#里一个byte是0~255

3.string和StringBuilder的区别,两者性能的比较

a 都是引用类型,分配再堆上
b StringBuilder默认容量是16,可以允许扩充它所封装的字符串中字符的数量.每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。
c 对于简单的字符串连接操作,在性能上stringbuilder不一定总是优于string。因为stringbulider对象的创建也消耗大量的性能,在字符串连接比较少的情况下,过度滥用stringbuilder会导致性能的浪费而非节约,只有大量无法预知次数的字符串操作才考虑stringbuilder的使用。从最后分析可以看出如果是相对较少的字符串拼接根本看不出太大差别。
d Stringbulider的使用,最好制定合适的容量值,否则优于默认值容量不足而频繁的进行内存分配操作,是不妥的实现方法。
参考链接:https://www.cnblogs.com/haofuqi/p/4826262.html

4.什么是扩展方法?

a 一句话解释,扩展方法使你能够向现有类型“添加”方法,无需修改类型
b 条件:按扩展方法必须满足的条件,1.必须要静态类中的静态方法2.第一个参数的类型是要扩展的类型,并且需要添加this关键字以标识其为扩展方法
c建议:通常,只在不得已的情况下才实现扩展方法,并谨慎的实现
d使用:不能通过类名调用,直接使用类型来调用

5.byte a =255;a+=5;a的值是多少?

byte的取值范围是-2的8次方至2的8次方-1,-256至258,a+=1时,a的值时0,a+=5时,a的值是0,所以a+=5时,值是4

6.什么是装箱和拆箱?

装箱就是隐式地将一个值类型转换成引用类型,如:
int i=0;
Syste.Object obj=i;
拆箱就是将引用类型转换成值类型,如:
int i=0;
System.Object obj=i;
int j=(int)obj;(将obj拆箱)

7.值类型和引用类型的区别

值类型变量是直接包含值。将一个值类型变量赋给另一个值类型变量,是复制包含的值,默认值是0。引用类型变量的赋值只复制对对象的引用,而不复制对象本身,默认值是null

值类型有整形、浮点型、bool、枚举。引用类型有class、delegate、Object、string

值类型存储在栈中,引用了类型存储在堆中

8.new关键字的作用

运算符:创建对象实例

修饰符:在派生类定义一个重名的方法,隐藏掉基类方法

约束:泛型约束定义,约束可使用的泛型类型

public class ItemFactory where T : IComparable, new()
{
}

9. int?和int有什么区别

int?为可空类型,默认值可以是null,int默认值是0,int?是通过int装箱为引用类型实现

10. C#中的委托是什么?

一句话解释就是:将方法当作参数传入另一个方法的参数。
.net中有很多常见的委托如:Func 、Action
作用:提高方法的扩展性

11.用最有效的方法算出2乘以8等于几?

位运算是最快,使用的是位运算 逻辑左位移<<。
方法是2<<3相当于0000 0000 0000 0010 (2的16位int二进制)左移三位就是 0000 0000 0001 0000(16的二进制)
相关参考链接:https://www.cnblogs.com/zhangmumu/p/10781201.html

12.const和readonly有什么区别?

都可以标识一个常量。主要有以下区别:

1、初始化位置不同。const必须在声明的同时赋值;readonly即可以在声明处赋值,也可以在静态构造方法(必须是静态构造方法,普通构造方法不行)里赋值。
2、修饰对象不同。const即可以修饰类的字段,也可以修饰局部变量;readonly只能修饰类的字段
3、const是编译时常量,在编译时确定该值;readonly是运行时常量,在运行时确定该值。
4、const默认是静态的;而readonly如果设置成静态需要显示声明
5、修饰引用类型时不同,const只能修饰string或值为null的其他引用类型;readonly可以是任何类型。

13.现有一个整数number,请写一个方法判断这个整数是否是2的N次方

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyfsgg.html