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

.NET题目(收集来自网络)

程序员文章站 2022-04-15 11:09:44
1: .NET和c#有什么区别? 2: c#中的委托是什么?事件是不是一种委托? 3: 简述 private , protected , public , internal 修饰符的访问权限 4: 重写与重载的区别? 5: 请遍历页面上所有的textbox控件并给他们赋值为string.Empty ......

1: .net和c#有什么区别?

答: .net一般是指.net framework框架,是一种平台,一种技术
    c#是一种编程语言,是可以基于.net平台的应用

2: c#中的委托是什么?事件是不是一种委托?

答:
1:委托可以理解为指向一个函数的引用,它可以把一个方法作为参数代入另一个方法
2:是,事件是一种特殊的委托

3: 简述 private , protected , public , internal 修饰符的访问权限

答:
private: 私有成员,在类内部才可以访问
protected: 保护成员,该类内部和子类中可以访问
public: 公共成员, 完全公开,没有访问权限
interna: 在同一命名空间可以使用
范围大小: public > protected > interna > private

4: 重写与重载的区别?

答:
1: 方法重写是子类与父类之间的关系,是垂直关系. 重载是同一个类中方法之间的关系,是水平关系
2: 重写是只能由一个方法或一对方法产生关系.重载是多个方法之间的关系
3: 重写要求参数列表相同,重载要求参数列表不同
4: 重写调用哪个方法是由调用的对象决定的,重载调用哪个方法是由参数列表来决定的
5: 重载与返回类型和异常无关

5: 请遍历页面上所有的textbox控件并给他们赋值为string.empty

答:
foreach(control control in this.controls){
    if(control is textbox tb){
         tb.text = string.empty;      
      }      
}

6: 描述一下c#中索引器的实现过程,是否只能根据数字进行索引

答:
1: 索引器没有名字
class indexer<t>{
  private t[] data = new t[100];
  public t this[int i]{
        get{return data[i];}
        set{data[i] = value;}
    }
}
2: 不是,可以用任意类型

7:下面例子输出的结果是?

using system;
class a
{
public a()
{
printfields();
}
public virtual void printfields(){}
}
class b:a
{
int x=1;
int y;
public b()
{
y=-1;
}
public override void printfields()
{
console.writeline("x={0},y={1}",x,y);
}
}
当使用new b() 创建b的实例时,产生什么输出?
答: x=1,y=0

派生类及构造函数的调用顺序: 实力成员初始化 -> 基类构造函数 -> 派生类构造函数

8: cts , cls , clr 分别是什么?

答:
cts: 通用类型系统
cls: 通用语言规范
clr: 公共语言运行库

9: 什么是装箱,拆箱?

答:
装箱: 值类型 -> 引用类型
拆箱: 引用类型 -> 值类型

如何避免装箱,拆箱:使用泛型

10: 什么是受管制的代码?

答:
托管代码,由公共语言运行库环境(而不是直接由操作系统)执行的代码

11: 什么是请类型系统?

答:
要求变量和对象有明确的类型

12: .net中读写数据库需要用到哪些类,以及作用?

答:
dataset: 数据库存储器
datacommand: 执行命令语句
dataadapter: 数据集合,用语填充

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

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

14: 常用的调用webservice的方法有哪些?

答:
1: 使用wsdl.exe命令行工具
2: 使用vs.net的add web reference 菜单选项

15: .net remoting的工作原理是什么?

答:
服务器端向客户端发送一个进程编号,一个程序与编号,以确定对象的位置

16: 在c# 中 string str = "" string str = null 有什么不同?

答:
null是不分配内存空间
""是分配了长度为空的内存空间

17: 描述 类和结构的异同?

答:
类是属于引用类型,可以被实例化,是分配在内存堆上的
结构是属于值类型,是分配在内存栈上面的

18: 分析以下代码完成填空

string strtmp = "abcdefg某某某";
int i = system.text.encoding.default.getbytes(strtmp).length;
int k = system.text.encoding.utf8.getbytes(strtmp).length;
int j = strtmp.length;

答:
i = 13, j = 10 , k = 16
默认一般为gbk,英文占一个字节,中文两个字节.如果是utf8 英文占一个字节,中文占三个字节

19: sql server服务器中,给定表table1 中有两个字段 id、lastupdatedate,id表示更新的事务号,lastupdatedate表示更新时的服务器时间,请使用一句sql语句获得最后更新的事务号

答:
select id from table1 where lastupdatedate = ( select max(lastupdatedate) from teble1)

先找出最大的更新时间,再找出最大更新时间对应的编号

20: 简要谈一下对微软.net 框架下remoting 和 webservice两项技术的理解以及实际中的应用?

答:
remoting 可以利用tcp/ip ,二进制传送提高效率
ws主要是可利用http ,穿透防火墙

21: 写出一条sql语句:取出表a中第31到第40记录(sql server,以自动增长的id作为主键,注意:id可能不是连续的。

答:
select top 10 * from a where id not in (select top 30 id from a)

22: 面向对象语言具有继承,封装和多态三大特性

23: 能用foreach遍历访问的对象需要实现ienumerable接口或声明ienumerator方法的类型

24: gc是什么?为什么要有gc?

答:
gc是垃圾回收机制.程序员不用担心内存管理,因为垃圾回收机制会自动进行管理
要请求垃圾收集,可以调用下面方法之一: mark sweep/compact gc.collect();

25: string s = new string("xyz");创建了几个对象?

答:
两个对象,一个是xyz对象,一个是指向xyz的引用对象s

26: 启动一个线程是用run() 还是 start()?

答:
start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由jvm调度并执行,这髌骨意味着线程就会立即运行
run()方法可以产生必须退出的标志来停止一个线程

27: 接口是否可以继承接口?抽象类是否可实现接口?抽象类是否可以继承实体类?

答: 
接口可以继承接口
抽象类可以实现接口
抽象类可以继承实体类

28: 构造器是否可被重写?

答:
构造器不能被继承,因此不能被重写,但可以被重载

29: 是否可以继承string类?

答:
string类是密封类,故不可以被继承

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

答:
会执行,在return前执行

31: 两个对象值相同(x.equals(y)== true),但却可有不同的hash code,这句话对不对?

答:
不对,有相同的hash code

32: short s1 = 1; s1 = s1+1;有错吗?有什么错?

答:有错,不能被隐式转换
s1 是short型, s1+1是int型,不能被隐式转换为short型.可修改为s1 = (short)(s1+1)

33: 如何处理几十万条并发数据?

答:
用存储过程或者事务.取得最大标识的时候同时更新,注意主键不是自增量方式,这种方法并发的时候是不会有重复的主键的,,取得的最大标识要有一个存储过程来获取

34: session有什么重大bug,微软提出了什么方法来解决?

答:
是iis中由于有进程回收机制,系统繁忙的话session会丢失,可以用stateserver或者sql server数据库的方式存储session,不过这种方式比较慢,而且无法捕获session的end事件

35: 进程和线程的区别?

答:
进程是系统进行资源分配和调度的单位
线程是cpu调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源