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

4(100)、5(101)、8(1000)、16(10000)
取模运算:
用number%2==0可以判断,但是这个有点低级
位运算:(使用位运算逻辑并,两个位上的都为1才是1,其余都是0,判断是否等于0)
4&3相当于100&011 ,结果是000等于0,所以4是2的n次方
5&4相当于101&100,结果是100不等于0,所以5不是2的n次方
如果要问如果是2的N次方,这个N是多少?这该怎么算?

private static byte get(int n) { byte number = 1; while (n/2!=1) { n = n / 2; number += 1; } return number; } 14.CTS、CLS、CLR分别作何解释

CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。

CTS:Common Type System 通用类型系统。Int32、Int16→int、String→string、Boolean→bool。每种语言都定义了自己的类型,.Net通过CTS提供了公共的类型,然后翻译生成对应的.Net类型。

CLS:Common Language Specification 通用语言规范。不同语言语法的不同。每种语言都有自己的语法,.Net通过CLS提供了公共的语法,然后不同语言翻译生成对应的.Net语法。

CLR:Common Language Runtime 公共语言运行时,就是GC、JIT等这些。有不同的CLR,比如服务器CLR、Linux CLR(Mono)、Silverlight CLR(CoreCLR)。相当于一个发动机,负责执行IL。

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

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

16.分析下面代码,a、b的值是多少? string strTmp = "a1某某某"; int a = System.Text.Encoding.Default.GetBytes(strTmp).Length; int b = strTmp.Length;

分析:一个字母、数字占一个byte,一个中文占占两个byte,所以a=8,b=5

17.Strings = new String(“xyz”);创建了几个String Object?

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

18.能用foreach遍历访问的对象需要实现 ______接口或声明______方法的类型。

IEnumerable 、 GetEnumerator

19.静态成员和非静态成员的区别

1.静态成员用statis修饰符声明,在类被实例化时创建,通过类进行访问
2.不带statis的变量时非静态变量,在对象被实例化时创建,通过对象进行访问,
3.静态方法里不能使用非静态成员,非静态方法可以使用静态成员
4.静态成员属于类,而不属于对象

20.c#可否对内存直接操作

C#在unsafe 模式下可以使用指针对内存进行操作, 但在托管模式下不可以使用指针,C#NET默认不运行带指针的,需要设置下,选择项目右键->属性->选择生成->“允许不安全代码”打勾->保存

21.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

s1+1不能显式转换成short类型,可以修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确

22.什么是强类型,什么是弱类型?哪种更好些?为什么?

强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会确定类型。没有好不好,二者各有好处,强类型安全,因为它事先已经确定好了,而且效率高。一般用于编译型编程语言,如c++,java,c#,pascal等,弱类型相比而言不安全,在运行的时候容易出现错误,但它灵活,多用于解释型编程语言,如javascript,vb,php等

23.using关键字的作用

1.引用命名空间
2.释放资源,实现了IDisposiable的类在using中创建,using结束后会自定调用该对象的Dispose方法,释放资源。

24.ref和out有什么区别

1.都是按引用类型进行传递
2.属性不是变量不能作为out、ref参数传递
3.ref参数必须初始化。out不需要初始化
4.作用,当方法有多个返回值时,out非常有用

25.a.Equals(b)和a==b一样吗?

不一样,a==b仅仅表示a和b值相等,a.Equals(b)表示a与b一致

26.下面这段代码求值 class Class1 { internal static int count = 0; static Class1() { count++; } public Class1() { count++; } } Class1 o1 = new Class1(); Class1 o2 = new Class1();

o1.count的值是多少?
答案:3,静态 构造方法计算一次,两个实例化对象计算两次。

27.关于构造函数说法正确的是哪个?

a)构造函数可以声明返回类型。

b)构造函数不可以用private修饰

c)构造函数必须与类名相同

d)构造函数不能带参数
答案:c ,构造函数必须与类名相同,可以传递多个传递,作用就是便于初始化对象成员,不能有任何返回类型

28.Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

c#里面都是12

29.&和&&的区别

&是位运算逻辑与运算符,如true&true 结果是true,0&0结果是0,2&3的结果是(10&11=10)2
&&是与运算符,两个都为true才是true
参考链接https://www.cnblogs.com/zhangmumu/p/10781201.html

30. i++和++i有什么区别?

1.i++是先赋值,然后再自增;++i是先自增,后赋值。
2.i=0,i++=0,++i=1; Console.WriteLine(++i==i++); 结果位true

31.float f = 3.4; 是否正确?

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

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