.NET 面试题

说说 private、 protected、 public、 internal 有什么区别?

private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 当前程序集内可以访问。

Class 和 Struct 都有什么区别?

Class可以被实例化,属于引用类型,是分配在内存的堆上的。类是引用传递的。

Struct属于值类型,是分配在内存的栈上的。结构体是复制传递的。

C#中堆和栈的区别?

栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;局部值类型变量、值类型参数等都在栈内存中。

堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。

C# 值类型与引用类型都有哪些?

值类型:struct、enum、int、float、char、bool、decimal

引用类型:class、delegate、interface、array、object、string

C#中什么是装箱和拆箱?

装箱:把值类型转换成引用类型。
拆箱:把引用类型转换成值类型。

HTTP 协议的 Post、Get 有什么区别?

get的参数会显示在浏览器地址栏中,而post的参数不会显示在浏览器地址栏中;
使用post提交的页面在点击【刷新】按钮的时候浏览器一般会提示“是否重新提交”,而get则不会;

用get的页面可以被搜索引擎抓取,而用post的则不可以;

用post可以提交的数据量非常大,而用get可以提交的数据量则非常小(2k),受限于网页地址的长度。

什么是ASP.NET Core?

首先ASP.NET Core可以说是 ASP.NET的升级版本。它遵循了.NET的标准架构,是一个基于.NET Core的Web开发框架, 可以运行于多个操作系统上。它更快,更容易配置,更加模块化,可扩展性更强。

什么是中间件?

中间件在这里是指注入到应用中处理请求和响应的组件。是通过多个委托来嵌套形成的一个俄罗斯套娃!

Applicationbuilder的Use和Run方法有什么区别?

这两个方法都在startup 类的configure方法里面调用。都是用来向应用请求管道里面添加中间件的。
Use方法可以调用下一个中间件的添加,而run不会。run是终结式的;

ASP.NET Core 中AOP的支持有哪些?

通过Filter来支持;分别有IResourceFilter AuthorizeFilter ActionFilter ExceptionFilter ResultFilter,Filter也被称为拦截器!

ASP.NET Core Filter的注册方式有哪些?

方法注册:只对方法生效
控制器注册:对控制器中的所有方法生效
全局注册:对整个项目生效;

ASP.NET Core Filter如何支持依赖注入?

可以通过全局注册,支持依赖注入,通过TypeFilter(typeof(Filter)) 标记在方法,标记在控制器。通过ServiceType(typeof(Filter))标记在方法,标记在控制器,必须要注册Filter这类;TypeFilter和ServiceType的本质是实现了一个IFilterFactory接口;

什么是ASP.NET Core的startup 类?

startup 类是ASP.NET Core应用的入口。所有的ASP.NET Core应用必须有这个类。这个类用来配置应用。这个类的调用是在program main函数里面进行配置的。类的名字可以自己定义。

ASP.NET Core里面的路径是如何处理的?

路径处理是用来为进入的请求寻找处理函数的机制。所有的路径在函数运行开始时进行注册。

主要有两种路径处理方式, 常规路径处理和属性路径处理。常规路径处理就是用MapRoute的方式设定调用路径,属性路径处理是指在调用函数的上方设定一个路径属性。

如何在Controller中注入service?

在config services方法中配置这个service,在controller的构造函数中,添加这个依赖注入。

ASP.NET Core中如何读取静态文件?

可以通过中间件UseStaticFiles来配置读取静态文件;