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调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源