• .NET面试题汇总


    1、抽象类和接口的区别?

     抽象类接口
    不同点 用abstract定义 用interface定义
      只能继承一个类 可以实现多个接口
      非抽象派生类必须实现抽象方法 实现接口的类必须实现所有成员
      需要override实现抽象方法 直接实现
    相同点 不能实例化  
      包含未实现的方法  
      派生类必须实现未实现的方法  

    2、什么是委托?

    概念:委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用

    委托的好处:

    1.相当于用方法作为另一方法参数(类似于C的函数指针)

    2.在两个不能直接调用的方法中作为桥梁,如:在多线程中的跨线程的方法调用就得用委托

    3.当不知道方法具体实现什么时使用委托,如:事件中使用委托

    3、什么是泛型

    概念:通过参数化类型来实现在同一份代码上操作多种数据类型,利用“参数化类型”将类型抽象化,从而实现灵活的复用。

    优点:使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。泛型最常见的用途是创建集合类。

    缺点:在性能上不如数组快

    记:通过参数化类型来实现在同一份代码上操作多种数据类型,使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。

    4、装箱和拆箱

    装箱:值类型转引用类型

    拆箱:引用类型转值类型

    5、值类型和引用类型分别有哪些?

    值类型:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型。

    引用类型:数组,用户定义的类、接口、委托,object,字符串。

    6、c#事件和委托的区别

    使用位置不同:事件只能在本类型内部“触发”,委托不管在本类型内部还是外部都可以“调用”。

    使用符号不同:在类的外部,事件只能用“+=”和“-=”去订阅/取消订阅,如果是委托的话还可以使用“=”。

    7、MVC提交表单的几种方式

    1、HtmlHelper方法

    2、传统Form表单Aciton属性提交

    3、Jquery+Ajax 提交表单

    4、MVC Controller控制器和表单参数传递

    8、NET中的错误处理机制是什么?

    采用 try-catch-finally结构,发生错误时,层层上抛,直到找到匹配的catch为止。

    9、什么是过滤器?

    过滤器作用:  一般用于记录日志、异常处理、身份验证、行为记录等。

    .Net MVC 常用的4种过滤器:

    Action行为过滤器:在Action执行之前和执行之后调用

    Result结果过滤器:在结果之前和之后调用。

    Exception异常过滤器:在发生异常时调用。

    Authorization权限效验过滤器:身份验证时调用。

    10、垃圾(GC)回收机制

    .net平台会自动把声明的那些不再使用的变量,或者是对象占用的空间释放, 而不用你自己书写代码实现这样的功能

    11、C# 托管与非托管的理解

    运行于.net平台上的代码,分配的资源一般会自动由平台的垃圾回收器释放,这样的资源就是托管资源。

    但是一些例外的资源,如System.IO.StreamReader等各种流、各种连接所分配的资源,需要显式调用Close()或Dispose()释放,这种资源就叫做非托管资源。

    12、a是10,b是15,不用中间变量交换 a ,b

    a = a + b;

    b = a - b;

    a = a - b;

    13、&和&&的区别

    &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)

    14、post、get的区别

    1.post的参数不会显示在浏览器地址栏中,get的参数会显示在浏览器地址栏中

    2.用post可提交较大的数据量,get提交的数据量则非常小(2k)

    3.用post可进行文件的提交,而用get则不可以

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

    会执行,在return前执行。

    16、StringBuilder 和 String 的区别?

    1.StringBuilder 是可扩展的,在大量字符串拼接时使用

    2.String 在进行运算时会产生一个新的实例

    17、Equal与==的区别

    ==操作符判断的是堆栈中的值,Equlas判断的是堆中的值

    18、=、==和===的区别

    =是赋值的意思

    ==是判断等于的意思

    ===也是判断的,但是它要比==判断的严谨一点,它的判断必须什么都相等,比如说类型

    19、ADO.NET中读写数据库需用到哪些对象?作用是什么

    DataConnection 连接数据库

    DataCommand 执行语句命令

    DataSet 数据存储器

    DataAdapter 适配器,用于填充数据

    DataReader 数据读取器,用于向前只读的数据流

    20、详细描述三层架构开发模式以及三层架构的好处?

    界面层:设计界面,与用户交互;

    业务逻辑层(BLL):维护界面层和数据访问层之间的安全性,对传送的数据进行判断分析,将正确值进行传送;

    数据访问层(DAL):主要是存放对数据类的访问,即对数据库的增删改查的操作;

    好处:目的是“高内聚,低耦合“的思想,分工明确,条理清晰,易于调试 ,而且具有可扩展性

    21.重写和重载的区别?

    重写:当一个子类继承一个父类,而子类中的方法与父类中的方法名称、参数个数、参数类型一致时,就说明这个子类重写了父类的方法;

    重载:方法名称相同,参数类型不同。调用时,编译器会根据实际传入参数的形式,选择与其匹配的行。

    22、数组和集合的区别?

    数组声明元素类型,集合不声明;

    数组定长,占用内存小,速度快,集合不定长,占用内存大,速度慢;

    数组存放类型只能是一种,集合不止一种

    23、值类型和引用类型的区别?

    值类型:存放在堆栈中,存储空间小,调用速度快,直接存储其值,从System.ValueType中派生,内存自动释放,简单类型,枚举,结构;

    引用类型:存放在堆中,存储空间大,调用速度慢,存储对值的引用,从System.Object中派生,由GC自动释放,接口类型,数组类型,委托类型;

    值类型的变量直接存储数据

    引用类型的变量持有的是数据的引用,数据存储在数据堆中

    24、请详细描述C#中的访问修饰符都有哪些?

    private:私有成员,类内部可访问;

    protected:保护成员,类内部和继承类可访问;

    public:公开成员,没有访问限制;

    internal:同一程序集可访问;

    protected internal/internal protected:同一程序集和子类可访问

    25、设计模式六大设计原则

    单一职责原则:一个类值负责一个功能的职责

    开闭原则:扩展开放,修改关闭。

    里氏代换原则:使用父类的地方都能使用子类对象

    依赖倒转原则:针对接口编程,

    接口隔离原则:针对不同部分用专门接口,不用总接口,需要哪些接口就用哪些接口

    迪米特法则: 软件实体类,尽量不与其他实体类发生关系相互作用,对外都统一的暴露接口就行了

    26、面向对象三大特性

    封装、继承、多态

    27、你是如何理解面向对象思想?

    面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。
    面向对象的特点:抽象,封装,继承,多态。

    引用一段话:
    假如我是上帝,我要造人(对象),首先,人要有思想,人要有肉体(这个过程就是抽象)
    因为人数量大,我需要找别人帮我一起造人,但是我不想让知道我的技术,我可以把我的造人技术封装起来,他只知道他要做什么样的人类就好了【封装】
    当我在造人的时候累了,我可能要用我之前造人的模板进行”复制“,”粘贴“。用模板造出来的人具有模板的特征,就像孩子一样具有父母的形状。【继承】
    为了让人类更丰富一些,我们又对它进行了改变。这个过程叫多态【多态】

    面向过程编程思想:

    1. 冰箱门打开,返回值是打开的冰箱门
    2. 大象装进去,返回值是打开的门,装进大象的冰箱
    3. 冰箱门关上,返回值是关着门装进大象的冰箱

    面向对象的编程思想:

    1. 冰箱.开门()
    2. 冰箱.装进大象()
    3. 冰箱.关门()
    4. 万物皆对象

    缺点:解决问题时候需要先创建对象
    优点:更加贴近生活,解决问题。

  • 相关阅读:
    LDAP 总结
    关于OpenLDAPAdmin管理页面提示“This base cannot be created with PLA“问题. Strong Authentication Required问题
    PHP 7.0 5.6 下安裝 phpLDAPadmin 发生错误的修正方法
    ldap、additional info: no global superior knowledge
    ldap安装配置过程中遇到的错误,以及解决方法
    转: LDAP有啥子用? 用户认证
    Mac 安装 brew
    go test 单元函数测试
    haproxy httpcheck with basic auth
    architecture and business process modelling
  • 原文地址:https://www.cnblogs.com/zpblogs/p/16172691.html
Copyright © 2020-2023  润新知