.NET/C#⾯试题汇总系列:基础语法(二)

11.⽤最有效的⽅法算出2乘以8等于⼏?

答:位运算是最快,使⽤的是位运算 逻辑左位移<<。 ⽅法是2<<3相当于0000 0000 0000 0010 (2的16位int⼆进制)左移三位就是 0000 0000 0001 0000(16的⼆进制)

12.const和readonly有什么区别?

答:都可以标识⼀个常量。主要有以下区别:
1、初始化位置不同。const必须在声明的同时赋值;readonly即可以在声明处赋值,也可以在静态构造⽅法(必须是静态构造⽅法,普通构造⽅法不⾏)⾥赋值。
2、修饰对象不同。const即可以修饰类的字段,也可以修饰局部变量;readonly只能修饰类的字段
3、const是编译时常量,在编译时确定该值;readonly是运⾏时常量,在运⾏时确定该值。
4、const默认是静态的;⽽readonly如果设置成静态需要显示声明
5、修饰引⽤类型时不同,const只能修饰string或值为null的其他引⽤类型;readonly可以是任何类型。

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

答: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.静态成员和⾮静态成员的区别

答:1.静态成员⽤statis修饰符声明,在类被实例化时创建,通过类进⾏访问
2.不带statis的变量时⾮静态变量,在对象被实例化时创建,通过对象进⾏访问
3.静态⽅法⾥不能使⽤⾮静态成员,⾮静态⽅法可以使⽤静态成员
4.静态成员属于类,⽽不属于对象

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

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

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

答:s1+1不能显式转换成short类型,可以修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BUG呢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值