.NET软件开发工程师面试题库

1.简述区别:string str=null、string str=””、string str=string.emptyjavascript

答:html

string str = null; 定义了一个字符串对象,赋值为null也就是没有分配内存java

string str=””分配了内存空间 ,值为空
web

string.Empty 是系统预约义的一个空字符串对象(长度为0的字符串对象)已经分配内存算法

2. C#中能使用指针吗?怎么使用?数据库

答:C#仅是语言层面的,因此C#自己是存在指针类型的,能够引用指针。但在.net开发时,凡是使用指针、开辟内存等不受托管处理的都为非安全开发。也就是说,指针之类的引用在.net中必须加在unsafe关键词之词。并且在编译时也必须选中容许非安全编译才能够经过。编程

若是不在unsafe中,.net是不容许使用指针类型的。非安全程序的优势,性能较高,能够写较高性能的程序代码;但劣势也是十分明显——不支持移植性,GC甚至没法管理内存等系统资源等等。因此通常状况下不建议非安全编程,在安全编程中是不能够有指针等类型的!

3.什么是三层架构?后端

答:三层架构辑层、数据访问层。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最多见,也是最重要的一种结构。微软推荐的分层式结构通常分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。设计模式

4.C#是否能够对内存直接进行操做?数组

答:C#能够直接对内存进行操做。可是默认状况下,为了保持类型安全,C#不支持指针运算。不过,经过使用 unsafe 关键字,能够定义可以使用指针的不安全上下文。

5.多线程编程中,sleep()和wait()有什么区别?Int DataTime是否能够为null?

答:因此sleep()和wait()方法的最大区别是:sleep()睡眠时,保持对象锁,仍然占有该锁;其余线程没法访问,而wait()睡眠时,释放对象锁。其余线程能够访问。

Int DataTime,在赋值时未给予赋值,此时系统会分配给它一个最小的时间,不会是null值,Int DataTime,不会有null类型,C#提供了“可空类型”这种语法,只要在类型后加?就构成了可空的数据类型,好比int?、bool?,这样int? i=null 就能够了

6.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速度慢一点,要求系统资源较多

7. String s=new String(“abc”);建立了几个String Object?

答:若是在字符串常量池中不存在其表明的对象,就建立两个,若是存在就建立一个.

8.代码编程题: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)
    }
}复制代码

9.编写一个冒泡排序?

int[] list= { 5, 9, 15, 22, 30 }
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;
}复制代码

10.OOP中字段封装完叫属性,那么在set访问器中有个隐藏的参数名称叫什么?简述什么是Code-Behind技术?

答:

public string Name
    {
        get{
            return name; 
        }
        set 
        {
            name = value;
        }
    }
复制代码

在set访问器中隐藏的参数名是value他的类型和声明的属性类型相同

Code-Behind技术 就是代码隐藏,在ASP.NET中经过ASPX页面指向CS文件的方法实现显示逻辑和处理逻辑的分离,这样有助于web应用程序的建立。好比分工,美工和编程的能够个干各的,不用再像之前asp那样都代码和html代码混在一块儿,难以维护

11.请简述List<T>和Dictionary<K,V>的区别和优点?

答:List<T>就是一个集合,它能够存储某种类型的列表, Dictionary<T1,T2>咱们俗称其为字典,他包含一个Key和与之对应的Value,其目的是可以根据Key迅速地找到Value相比之下List<T>的效率要快不少在Dictionary中,除了要存储咱们实际须要的Value外,还须要一个辅助变量Key,这就形成了内存空间的双重浪费(摘抄自百度:一样是集合,为何性能会有这样的差距。咱们要从存储结构和操做系统的原理谈起。

首先咱们清楚List<T>是对数组作了一层包装,咱们在数据结构上称之为线性表,而线性表的概念是,在内存中的连续区域,除了首节点和尾节点外,每一个节点都有着其惟一的前驱结点和后续节点。咱们在这里关注的是连续这个概念。

而HashTable或者Dictionary,他是根据Key而根据Hash算法分析产生的内存地址,所以在宏观上是不连续的,虽然微软对其算法也进行了很大的优化。

因为这样的不连续,在遍历时,Dictionary必然会产生大量的内存换页操做,而List只须要进行最少的内存换页便可,这就是List和Dictionary在遍历时效率差别的根本缘由)

12.简述一下.net MVC设计模式和工做原理?

  答:MVC是一种软件开发架构,它包含了不少的设计模式,最为密切是如下三种:观察者模式,组合模式和策略模式

  MVC架构把数据处理,程序输入输出控制及数据显示分离开来,而且描述了不一样部件的对象间的通讯方式,使得软件可维护性,可扩展性,灵活性以及封装性大大提升。

MVC(Model-View-Controller)把系统的组成分解为M(模型)、V(视图)、C(控制器)三种部件。V(视图)表示数据在屏幕上的显示;C(控制器)提供处理过程控制,它在模型和视图之间起链接做用。控制器自己不输出任何信息和作任何处理,它只负责把用户的请求转成针对Model的操做,和调用相应的视图来显示Model处理后的数据。

13.简述asp.net六大内置对象及用法?

答:

Response对象:Response对象是HttpResponse类的一个对象,与一个HTTP响应相对应,经过该对象的属性和方法能够控制如何将服务器端的数据发送到客户端浏览器
Request对象:Request对象是HttpRequest类的对象。当客户发出请求执行,客户端的请求信息会包装在Request对象中。这些请求信息包括请求头、请求方法(post,get)、提交的信息等
Server对象:Server对象的属性反应了Web服务器的各类信息,他提供了服务器能够提供的各类服务

Application对象:Application对象在实际网络开发中的用途就是记录整个网络的信息,如上线人数、在线名单、意见调查和网上选举等。在给定的应用程序的多有用户之间共享信息,并在服务器运行期间持久的保存数据

Session对象:内置对象Session负责存储、读取和改变一个特定用户的会话信息,对于每一个用户的每次访问Session对象都是惟一的。
Cookie对象:在Web程序设计中,它表示一个长度不超过4k的文本文件,这个文件在用户的硬盘上,能够由Web浏览器进行访问

14. Get和Post区别?

答:get请求会暴露用户请求的参数在url地址中,而且数据有大小限制,可是处理速度快

post请求不会暴露用户的请求参数,对数据没有大小限制,可是处理速度相对get请求较慢

15.简述WebService技术及在开发过程当中的使用?

答:WebService采用HTTP协议传输数据,采用XML格式封装数据。XML是WebService平台中表示数据的格式。除了易于创建和易于分析外,XML主要的优势在于它既是平台无关的,又是厂商无关的。无关性是比技术优越性更重要的,在开发过程当中WebService向外界暴露出一个能经过Web进行调用的API,客户端能够经过请求这个接口来获取数据。实现先后端的分离加快开发效率

16.什么是SQL注入式攻击,如何方法?

答:所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令,从而对数据库的数据进行操做的一种攻击手段

1.进行字符替换,替换掉一些敏感字符

2.使用存储过程完成数据的查询

3.限制表单输入的字符长度

4.在后端对用户输入的信息校验合法性

5.检查提取数据的查询所返回的记录数量

6.将用户登陆名称、密码等数据加密保存进行消毒处理

17.简述HTML和服务器控件的区别?

答:html 就是咱们一般的说的 html 语言标记,这些语言标记在已往的静态页面和其余网页里存在,不能在服务器端控制的,只能在客户端经过 javascript等程序语言来控制

asp.net的服务器控件是运行在服务器上的,直接封装了操做该控件的方法,先后代码不分离

一个运行在客户端一个运行在服务端

18. Asp.net中你知道多少种页面传值的方式,请一一列举

答:

1.Request.QueryString:获取http查询字符串变量集合即Request.QueryString[string name]

2.Request.Form:获取窗体变量集合即Request.Form[string name]

3.Session:即Session["string"]=string

19.什么是SoAP协议?

答:SOAP是Web Service的通讯协议。当用户经过UDDI找到你的WSDL描述文档后,他经过能够SOAP调用你创建的Web服务中的一个或多个操做。SOAP是XML文档形式的调用方法的规范,能够支持不一样的底层接口,像HTTP(S)或者SMTP。应用程序经过使用远程过程调用(RPC)在诸如 DCOM 与 CORBA 等对象之间进行通讯的方式会产生兼容性以及安全问题;防火墙和代理服务器一般会阻止此类流量。经过 HTTP 在应用程序间通讯是更好的方法,由于 HTTP 获得了全部的因特网浏览器及服务器的支持。SOAP 提供了一种标准的方法,使得运行在不一样的操做系统并使用不一样的技术和编程语言的应用程序能够互相进行通讯。

20.简述ADO.NET五大对像?

答:

一、Connection(链接数据库)

二、Command(执行T-SQL语句)

三、DataAdapter(用户填充DataSet,断开模式)

四、DataReader(读取数据库,一种只读模式)

五、DataSet(数据集,比如电脑的内存)
相关文章
相关标签/搜索