C#面试题 1

一、AOP是啥?解决什么样的问题?

面向切面编程。(这种思想很广泛)

AOP是为了弥补OOP的不足,解决OOP的问题(共性和扩展问题)。

二、POP是啥?

面向过程编程,一种以过程为中心的编程思想。分析出解决问题所需要的步骤,然后用函数把这些步骤一步步的实现,使用的时候一个个的依次调用。它是最实际的一种思考方式,符合人类的思考方式,一种基础的方法,从实际出发。

三、OOP是啥?OOP的问题?

面向对象编程思想。解决越来越多的问题,越来越复杂的问题。程序规模不大的时候,面向过程其实是一个比较有优势的思想。OOP和POP是互补的。

一个模块功能由多个类共同实现,模块又组成了某项服务,多个服务构成一个完整的系统。类应该是固定的,不应该频繁的修改。有那么多的设计原则和设计模式,就是为了让类固定。类是横跨众多模块,在各个模块里是七零八散的。从对象的组织角度来讲,分类方式都是一样继承关系(纵向),这也是OOP思想。

只使用OOP思想会带来的问题:1.共性问题。对象设计的时候一般都是纵向思维,总会有一些共性。2.扩展问题。当我们需要对现有的对象动态增加某些行为或责任会变化的困难。

四、AOP到底是什么?

面向切面编程,横切关注点模块化。【OOP是使用类将状态(属性)和行为模块化。】类和接口组织的,横切关注点(跨越应用程序的多个模块的功能需求)。

日志记录、性能统计、安全控制、事务处理、异常处理,都可以从业务代码中划分出来;非业务逻辑的方法中,AOP就是将公共的功能提取出来,公共的模块,只关注通用功能,不关注业务逻辑。

五、AOP有什么优势?

①将通用功能从业务逻辑中抽离出来,提高代码复用性,有利于后期的维护和扩展。

②在软件设计时,抽出通用功能,有利于软件设计的模块化,降低架构的复杂度。

六、与OOP有什么区别?

OOP针对业务处理过程的实体、属性和行为进行抽象封装,逻辑单元划分;

AOP则是针对业务处理过程中的切面进行提取,面对处理过程中的某个步骤或阶段,逻辑过程中各个部分之间低耦合性。

总结:面向目标不同,OOP面向名词,AOP面向动词;

         思想结构不同,OOP是纵向,AOP是横向;

        注重方面不同,OOP业务逻辑单元划分,AOP偏重业务处理过程中的某个步骤。

你可能感兴趣的:(面试,c#)