第一问:C#中变量类型分为哪两种?
值类型和引用类型,值类型变量自身存储数据,引用类型存储的势实际数据的引用,通过引用找到实际的数据。
第二问:Class和Struct的区别?
Class为引用类型,可以被实例化,存储实际的引用;Struct为值类型,值类型自身存储数据数据。
第三问:C#中类的修饰符和类成员的修饰符有哪些?
C#中可以修饰类的修饰符为:public、internal、sealed、abstract
C#中不能修饰类的修饰符为:private和protected
C#中成员的修饰符为:public、internal、protected、private
public:完全公开,没有访问限制。
internal:可以应用于当前应用程序以及类库。
protected:在当前类和子类中可以使用。
private:只有在当前类中可以使用。
sealed:密封类,不能被其他类型继承。
abstract:抽象类,不能创建实例。
第四问:面向对象的三个特征(特点)是什么?
封装:把对象的属性或者行为邓庄起来,类似于一个类。
继承:子类可以继承父类。
多态:父类可以应用于子类,子类可以去使用父类的一些特征方法。
第五问:面向对象和面向过程的区别?
面向对象:把问题分解成多个对象,强调的是解决问题行为标准(方式)
面向过程:分析问题并解决问题的步骤,强调的势解决问题的步骤。
第六问:什么是装箱和拆箱?
装箱:从值类型转换到引用类型。
拆箱:从引用类型到值类型的转换。
第七问:什么是IOC?
控制反转,是一种思想(设计模式)而不是一种技术实现。
控制:拥有创建对象的权利。
反转:把控制权交给IOC容器。
优点: 1、对象之间的耦合度或依赖度降低。
2、资源容易管理
传统模式下:在一个类中需要new关键字去实例化另一个类。
IOC设计模式:不需要new去创建对象,直接从IOC容器中获取。
第八问:什么是OOP?
面向对象编程
提取共有的属性和方法,形成一个父类。
第九问:什么是AOP?
面向切面的编程,在不改变原有的业务逻辑情况下,横切逻辑代码,解耦合代码,避免横切代码重复。
切:指的是横向逻辑,就是保证原有的业务逻辑代码不变,操作横切逻辑代码,所以就是面相横切编程。
面:横切代码影响的是很多方法,每个方法如同一个点,很多点就形成面。
应用场景:事务控制,权限效验、日志信息等。
多个方法的相同位置出现重复代码。
第十问:什么是DI?
依赖注入
DI是IOC设计思想的实现方式
一个类去引用另外一个类,就会产生依赖。
优点:如果添加另一个类,不需要修改之前代码,只要修改注入的地方将实现类进行替换。
实例化接口的时候,不用手动new来狗仔实现类,交给IOC容器进行构建。
实现了解耦
DIP:依赖注入倒置原则:依赖于抽象,不依赖预聚体,高层模块不依赖于低层模块,它们依赖于抽象。
标签:面试题,C#,代码,修饰符,引用,类型,net,IOC From: https://www.cnblogs.com/MuyingBlog/p/17624899.html