1.C#中的垃圾回收机制?
GChtml
(1)、提升了软件开发的抽象度;程序员
(2)、程序员能够将精力集中在实际的问题上而不用分心来管理内存的问题;web
(3)、可使模块的接口更加的清晰,减少模块间的偶合;算法
(4)、大大减小了内存人为管理不当所带来的Bug;数据库
(5)、使内存管理更加高效。
2.什么是面向对象?
封装:用抽象的类型将数据和基于数据的操做封装在一块儿,数据被保护在抽象类的内部。
继承:子类继承父类的全部数据和操做。
多态:一个程序中同名的不一样方法。
3.什么是拆箱和装箱?
装箱:值类型到引用类型的转换。
拆箱:引用类型到值类型的转换。
4.简述private、 protected、 internal 、public 修饰符的访问权限?
private:私有成员,只能在类的内部访问。
protected:保护成员,在该类内部和继承类中能够访问。
internal:同一个程序集内进行访问。
public:公共成员,彻底公开。
5.C#中的委托是什么?事件是否是一种委托
委托是引用类型的变量,他能够包含对方法的引用,当程序必须经过调用一个方法来执行某个操做,但在编译时不知道该方法是什么时,就可使用委托。委托容许在程序运行时指定调用的方法,委托的特色是面向对象的,类型是安全的。委托和事件是C#的亮点优点。 事件不是委托,在C#中处理事件的逻辑包装为委托。
6.C#中重写和重载的区别?
重载就是在同一个类中,方法名相同,参数列表不一样
重写就是子类重写父类的方法,在调用的时候,子类的方法会覆盖父类的方法,也就是会调用子类的方法
7..net的错误处理机制是什么?
try>catch>finall结构,发现错误时层层上抛直到找到匹配的catch为止。
8.线程和进程的区别?编程
进程是资源的分配与调度的独立单元,线程是CPU调度的基本单元。 同一进程能够有多个线程,且线程共享整个进程的资源,一个进程至少包含一个线程。 线程是轻量级的进程,其建立与销毁的所需时间比进程少不少。
9.什么是wcf?什么是WebServices?
WCF:是由微软发展的一组数据通讯的应用程序开发接口,能够翻译为Windows通信接口,它是.NET框架的一部分。
WCF 是一个分布式应用的开发框架,属于特定的技术,或者平台。既不是标准也不是规范。
webservice是一种跨平台,跨语言的规范,用于不一样平台,不一样语言开发的应用之间的交互。
10. Public static const int a=1;这段代码错在哪里? const不能被修饰为static ;由于定义为常量 (const )后就是静态的(static )。
11.在.net中不想让一个类被继承用哪一个单车修饰?序列化一个类用哪一个单词标记?json
sealed Serializable()
12.简述C#中类与接口的区别?
接口是功能的定义。类是功能的具体实现。
13.在C#中咱们定义参数时常常会用到ref和out简述一下区别?
1).ref型传递变量前,变量必须初始化,不然编译器会报错,而out型则不须要初始化
2).ref型传递变量,数值能够传入方法中,而out型没法将数据传入方法中。换而言之,ref型有进有出,out型只出不进。
14.C# 中有几种循环?分别用在什么场合?
do while:无论符不符合条件都会运行一次,在运行一次在以后再进行判断是否符合条件。
while:首先判断是否符合条件在进行运行。
for:和while的意思差很少只是表达形式不一样;通常须要定义局部性控制循环的的变量使用。
foreach:只能对数据进行读;在其做用域内不能对进行遍历的值作修改,其遍历顺序只能递增并且其控制循环变量是默认的只能++。
15.随便写出一个json对象数组?
[{"UserID":1,"Name":"张福威","Sex":"男"}]
16.C#实现代码编程题:定义一个int数组,长度为100,并向其中随机插入1-100的数字,保证不重复?后端
int[] arr = new int[100];
List<int> list = new List<int> ();
for (int i = 0; i < arr.Length; i++)
{
list.Add (i + 1);
}
Random rd = new Random ();
int Index = 0;
while (list.Count > 0)
{
int num = rd.Next (0, list.Count);
int temp = list [num];
arr [Index] = temp;
Index++;
list.Remove (temp);
}
复制代码
17.C#实现代码编程题:编写一个冒泡排序的方法,参数传入一个int数组?设计模式
public static int[] Sort(int[] n1)
{
int temp;
for (int i = 0; i < n1.Length - 1; i++)
{
for (int j = 0; j < n1.Length - 1 - i; j++)
{
if (n1[j] > n1[j + 1])
{
temp = n1[j];
n1[j] = n1[j + 1];
n1[j + 1] = temp;
}
}
}
return n1;
}
复制代码
18.谈谈你对remoting和webservice两项技术的理解?
remoting是.net 中用来跨越machine, process, appdomain 进行方法调用的技术数组
Web Service是一种构建应用程序的普通模型,并能在全部支持internet网通信的操做系统上实施
19.C#代码编程题: 1 1 2 3 5 8 13 21 34 55 用递归算法编写一个方法,计算第n位上的数值(n>0)
public static int fn(int a)
{
if (a>2)
{
return fit(a - 1) + fit(a - 2);
}
else
{
return 1;
}
}
复制代码
20.C#实现代码编程题:1-2+3-4+……+m 输出结果?
public static int sum(int shu)
{
int sum=0;
for (int i = 1; i <= shu; i++)
{
if(i%2==0)
{
sum-=i
}
else
{
sum+=i
}
}
}
复制代码
21.简述区别:string str=null、string str=””、string str=string.empty
String str1 = null; str引用为空 String str2 = ""; str应用一个空串 也就是null没有分配空间, ""分配了空间, 所以str1还不是一个实例化的对象,而str2已经实例化。 null不是对象,""是对象。
23.什么是三层架构?
三层架构(3-tier architecture) 一般意义上的三层架构就是将整个业务应用划分为:UI层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最多见,也是最重要的一种结构。微软推荐的分层式结构通常分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表现层。
24.C#是否能够对内存直接进行操做?
C#能够直接对内存进行操做。可是默认状况下,为了保持类型安全,C#不支持指针运算。不过,经过使用 unsafe 关键字,能够定义可以使用指针的不安全上下文。
25.多线程编程中,sleep()和wait()有什么区别?IntDataTime是否能够为null?
wait()和sleep()均可以经过interrupt()方法来打断线程的暂停状态 ,一旦该线程进入到 wait()/sleep()/join()后,就会抛出InterruptedException;若是线程在正常运行中,则不会抛出这个异常,在实际编码中,可使用try..catch来安全结束线程。 区别: 1)wait()是Object类的方法,sleep()是Thread类的方法 2)wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep能够在任何地方使用 3)sleep必须捕获异常,而wait,notify和notifyAll不须要捕获异常 Datetime是struct,值类型,值类型是不能为null的.只有Datetime的泛型表达DateTime?类型能够赋值为null,但这只是一种简写,DateTime?的实际类型为Nullable.全部值类型均可以转换为这种形式来赋值为null
26.Short s1=1;s1=s1+1;两句代码有错吗?请指出为何?简述UDP和TCP的区别?
s1 + 1,s1是short类型,1是int型,s1会自动转换为int型的1,与1相加后,获得int型的2,要向左侧的short类型的s1看齐,即须要经过强制类型转换。正确写法:s1 = (short) (s1 + 1);
UDP是面向无链接的通信协议,UDP数据包括目的端口号和源端口号信息。
优势:UDP速度快、操做简单、要求系统资源较少,因为通信不须要链接,能够实现广播发送
缺点:UDP传送数据前并不与对方创建链接,对接收到的数据也不发送确认信号,发送端不知道数 据是否会正确接收,也不重复发送,不可靠。
TCP是面向链接的通信协议,经过三次握手创建链接,通信完成时四次握手
优势:TCP在数据传递时,有确认、窗口、重传、阻塞等控制机制,能保证数据正确性,较为可靠。
缺点:TCP相对于UDP速度慢一点,要求系统资源较多
27. String s=new String(“abc”);建立了几个String Object?
咱们能够把上面这行代码分红String str、=、"abc"和new String()四部分来看待
String str只是定义了一个名为str的String类型的变量,所以它并无建立对象;=是对变量str进行初始化,将某个对象的引用赋值给它,也没有建立对象 new()建立了一个对象 "abc"是一个对象 因此一共两个
28.代码编程题:1 1 2 3 5 8 13 21 34……递归算法算出第n位上的数?
public int fn(n)
{
if(n<=2)
{
return 1
}
else
{
return fn(n-1)+fn(n-2)
}
}
复制代码
29.编写一个冒泡排序?
int[] list= { 1, 5, 2, 3, 7 }
public int[] fn(int[] list)
{
int temp=0;//用于进行交换的临时数
for(int i=0;i<=list.Length;i++)
{
for(int j=0;j<list.Length-1-i;j++)
{
if (list[j - 1] > list[j])
{
temp = list[j - 1];
list[j - 1] = list[j];
list[j] = temp;
}
}
}
return list;
}
复制代码
30.OOP中字段封装完叫属性,那么在set访问器中有个隐藏的参数名称叫什么?简述什么是Code-Behind技术?
public string Name
{
get{
return name;
}
set
{
name = value;
}
}
复制代码
在set访问器中隐藏的参数名是value他的类型和声明的属性类型相同
Code-Behind技术 就是代码隐藏,在ASP.NET中经过ASPX页面指向CS文件的方法实现显示逻辑和处理逻辑的分离,这样有助于web应用程序的建立。好比分工,美工和编程的能够个干各的,不用再像之前asp那样都代码和html代码混在一块儿,难以维护
31.请简述List和Dictionary<K,V>的区别和优点?
List就是一个集合,它能够存储某种类型的列表,
Dictionary<T1,T2>咱们俗称其为字典,他包含一个Key和与之对应的Value,其目的是可以根据Key迅速地找到Value相比之下List的效率要快不少在Dictionary中,除了要存储咱们实际须要的Value外,还须要一个辅助变量Key,这就形成了内存空间的双重浪费
32.简述一下.net MVC设计模式和工做原理?
MVC是一种软件开发架构,它包含了不少的设计模式,最为密切是如下三种:观察者模式,组合模式和策略模式
MVC架构把数据处理,程序输入输出控制及数据显示分离开来,而且描述了不一样部件的对象间的通讯方式,使得软件可维护性,可扩展性,灵活性以及封装性大大提升。
MVC(Model-View-Controller)把系统的组成分解为M(模型)、V(视图)、C(控制器)三种部件。V(视图)表示数据在屏幕上的显示;C(控制器)提供处理过程控制,它在模型和视图之间起链接做用。控制器自己不输出任何信息和作任何处理,它只负责把用户的请求转成针对Model的操做,和调用相应的视图来显示Model处理后的数据。
33.简述asp.net六大内置对象及用法?
Response对象:Response对象是HttpResponse类的一个对象,与一个HTTP响应相对应,经过该对象的属性和方法能够控制如何将服务器端的数据发送到客户端浏览器
Request对象:Request对象是HttpRequest类的对象。当客户发出请求执行,客户端的请求信息会包装在Request对象中。这些请求信息包括请求头、请求方法(post,get)、提交的信息等
Server对象:Server对象的属性反应了Web服务器的各类信息,他提供了服务器能够提供的各类服务
Application对象:Application对象在实际网络开发中的用途就是记录整个网络的信息,如上线人数、在线名单、意见调查和网上选举等。在给定的应用程序的多有用户之间共享信息,并在服务器运行期间持久的保存数据
Session对象:内置对象Session负责存储、读取和改变一个特定用户的会话信息,对于每一个用户的每次访问Session对象都是惟一的。
Cookie对象:在Web程序设计中,它表示一个长度不超过4k的文本文件,这个文件在用户的硬盘上,能够由Web浏览器进行访问
get请求会暴露用户请求的参数在url地址中,而且数据有大小限制,可是处理速度快
post请求不会暴露用户的请求参数,对数据没有大小限制,可是处理速度相对get请求较慢
35.简述WebService技术及在开发过程当中的使用?
WebService采用HTTP协议传输数据,采用XML格式封装数据。XML是WebService平台中表示数据的格式。除了易于创建和易于分析外,XML主要的优势在于它既是平台无关的,又是厂商无关的。无关性是比技术优越性更重要的,在开发过程当中WebService向外界暴露出一个能经过Web进行调用的API,客户端能够经过请求这个接口来获取数据。实现先后端的分离加快开发效率
36.什么是SQL注入式攻击,如何防范?
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令,从而对数据库的数据进行操做的一种攻击手段
1.进行字符替换,替换掉一些敏感字符
2.使用存储过程完成数据的查询
3.限制表单输入的字符长度
4.在后端对用户输入的信息校验合法性
5.检查提取数据的查询所返回的记录数量
6.将用户登陆名称、密码等数据加密保存
37.简述HTML和服务器控件的区别?
1)前者能够触发服务器控件特有的事件,后者只能经过回递的方式触发服务器上的页面级事件。
2)输入到前者中的数据在请求之间能够维护(即具备状态管理功能),然后者没法自动维护数据,只能使用页面级的脚原本保存和恢复。
3)前者能够自动检测浏览器并调整到恰当的显示,然后者没有自动适应功能,必须在代码中手动检测浏览器。
4)每一个服务器控件都具备一组属性,能够在服务器端的代码中更改控件的外观和行为,然后者只有HTML属性。
若是某些控件不须要服务器端的事件或状态管理功能时,能够选择HTML控件,这样能够提升应用程序的性能。
1.Request.QueryString:获取http查询字符串变量集合即Request.QueryString[string name]
2.Request.Form:获取窗体变量集合即Request.Form[string name]
3.Session:即Session["string"]=string
39.什么是SoAP协议?
SOAP 是基于 XML 的简易协议,可以使应用程序在 HTTP 之上进行信息交换。 或者更简单地说:SOAP 是用于访问网络服务的协议。
40.简述ADO.NET五大对像?
一、Connection(链接数据库) 二、Command(执行T-SQL语句) 三、DataAdapter(用户填充DataSet,断开模式) 四、DataReader(读取数据库,一种只读模式) 五、DataSet(数据集,比如电脑的内存)