1.简述区别:string str=null、string str=”” 、string str=string.empty之间的区别?
String.Empty是string类的一个静态常量;
String.Empty和string=””区别不大,因为String.Empty的内部实现是:
public static readonly string Empty;
而string str=null则是表示str未指向任何对象。
2.C#中能使用指针吗?怎么使用?
C#为了类型安全,默认并不支持指针。但是也并不是说C#不支持指针,我们可以使用unsafe关键词,开启不安全代码(unsafe code)开发模式。在不安全模式下,我们可以直接操作内存,这样就可以使用指针了。在不安全模式下,CLR并不检测unsafe代码的安全,而是直接执行代码。unsafe代码的安全需要开发人员自行检测。
3.什么是三层架构?
三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:UI层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表现层。
4.C#是否可以对内存直接进行操作?
C#可以直接对内存进行操作。但是默认情况下,为了保持类型安全,C#不支持指针运算。不过,通过使用 unsafe 关键字,可以定义可使用指针的不安全上下文。
5.多线程编程中,sleep()和wait()有什么区别?Int DataTime是否可以为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
6.Short s1=1;s1=s1+1;两句代码有错吗?请指出为什么?简述UDP和TCP的区别?
有错,
对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。
UDP和TCP区别:
1。TCP是基于连接的,UDP是基于无连接
2。对系统资源的要求(TCP较多,UDP少)
3。UDP程序结构较简单
4。流模式与数据报模式
5。TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证
8.代码编程题:1 1 2 3 5 8 13 21 34 ……递归算法算出第n位上的数?
public static void main(String[] args) {
System.out.println(cp(10));
}
if public static int cp(int n){
if(n<=0){
return -1;
}
else if(n==1||n==2){
return 1;
}
else{
return cp(n-1)+cp(n-2);
}
}
9.请编写一个冒泡排序?
int temp = 0;
int[] arr = {23, 44, 66, 76, 98, 11, 3, 9, 7};
for (int i = 0; i < arr.Length - 1; i++)
{
#region将大的数字移到数组的arr.Length-1-i
for (int j = 0; j < arr.Length - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
Console.WriteLine("排序后的数组:");
foreach (int item in arr)
{
Console.Write(item+"");
}
Console.WriteLine();
Console.ReadKey();
10.OOP中字段封装完叫属性,那么在set访问器中有个隐藏的参数名称叫什么?
简述什么是Code-Behind技术?
隐藏参数是value
Code-Behind就是代码隐藏,在ASP.NET中通过ASPX页面指向CS文件的方法实现显示逻辑和处理逻辑的分离,这样有助于web应用程序的创建。比如分工,美工和编程的可以个干各的,不用再像以前asp那样都代码和html代码混在一起,难以维护。
11.请简述List 和Dictionary<K,V>的区别和优势?
list是泛型集合。里面成装的是实体类。可以实例化。
dictionary的功能比较简单,只能算是功能强点的数组。里面储存的键值对。
12.简述一下 .net MVC设计模式和工作原理?
mvc是一种程序开发设计模式,它实现了显示模块与功能模块的分离。提高了程序的可维护性、可移植性、可扩展性与可重用性,降低了程序的开发难度。它主要分模型、视图、控制器三层。
1、模型(model)它是应用程序的主体部分,主要包括业务逻辑模块(web项目中的Action,dao类)和数据模块(pojo类)。模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性
2、视图(view) 用户与之交互的界面、在web中视图一般由jsp,html组成
3、控制器(controller)接收来自界面的请求 并交给模型进行处理 在这个过程中控制器不做任何处理只是起到了一个连接的做用
13.简述asp.net六大内置对象及用法?
1)Response (将对象返回给客户端)
2)Request (服务器接收客户端数据)
3)Server
4)Application (存储公共变量)
5)Session (存储在服务器)
6)Cookie (存储在客户端)
14.Get和Post区别?
GET请求的参数是放在URL里的,POST请求参数是放在请求body里的;
GET请求的URL传参有长度限制,而POST请求没有长度限制;
GET请求的参数只能是ASCII码,所以中文需要URL编码,而POST请求传参没有这个限制;
15.简述WebService技术及在开发过程中的使用?
以 HTTP 协议为基础,通过 XML 进行客户端和服务器端通信的框架 / 组件
1、创建空解决方案
2、创建空Web应用程序工程(这里面没有web服务工程...)
3、创建Web服务(asmx)
16.什么是SQL注入式攻击,如何方法?
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串中,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。
1.替换单引号
2.删除用户输入内容中的所有连字符
3.对于用来执行查询的数据库帐户,限制其权限
4.限制表单或查询字符串输入的长度
5.检查用户输入的合法性
6.用存储过程来执行所有的查询
17.简述HTML和服务器控件的区别?
1)前者可以触发服务器控件特有的事件,后者只能通过回递的方式触发服务器上的页面级事件。
2)输入到前者中的数据在请求之间可以维护(即具有状态管理功能),而后者无法自动维护数据,只能使用页面级的脚本来保存和恢复。
3)前者可以自动检测浏览器并调整到恰当的显示,而后者没有自动适应功能,必须在代码中手动检测浏览器。
4)每个服务器控件都具有一组属性,可以在服务器端的代码中更改控件的外观和行为,而后者只有HTML属性。
如果某些控件不需要服务器端的事件或状态管理功能时,可以选择HTML控件,这样可以提高应用程序的性能。
18.Asp.net中你知道多少种页面传值的方式,请一一列举
19.什么是SoAP协议?
SOAP 是用于访问网络服务的协议。
20.简述ADO.NET五大对像?
1、Connection(连接数据库)
2、Command(执行T-SQL语句)
3、DataAdapter(用户填充DataSet,断开模式)
4、DataReader(读取数据库,一种只读模式,只向前的)
5、DataSet(数据集,好比电脑的内存)