当前位置: 首页 > article >正文

ASP.NET Core 面试宝典【刷题系列】

文章目录

      • 引言
      • 1、什么是 dot net core 的 startup class?
      • 2、什么是中间件?
      • 3、application builder 的 use 和 run 方法有什么区别?
      • 4、dot net core 管道里面的map拓展有什么作用?
      • 5、dot net core 里面的路径是如何处理的?
      • 6、如何在 dot net core 中激活 session 功能?
      • 7、描述一下依赖注入后的服务生命周期?
      • 8、dot net core跟dot net比较有哪些更好的地方?
      • 9、asp dot core有哪些好的功能?
      • 10、什么是 ASP.NET Core?它与 ASP.NET 有什么区别?
      • 11、ASP.NET Core 的启动过程是怎样的?
      • 12、ASP.NET Core 中的路由是如何工作的?
      • 13、如何实现 RESTful API 的路由?
      • 14、什么是模型绑定?
      • 15、如何进行模型验证?
      • 16、ASP.NET Core 中的日志系统是如何工作的?
      • 17、 如何优化 ASP.NET Core 应用程序的性能?
      • 18、 如何部署 ASP.NET Core 应用程序?
      • 19、如何使用 Docker 部署 ASP.NET Core 应用程序?
      • 20、什么是 Kestrel?
      • 结语


引言

ASP.NET Core 是一个跨平台、高性能的开源框架,用于构建现代云原生的 Web 应用程序和 API。随着 .NET Core 的普及,ASP.NET Core 成为了许多企业和开发者的首选框架。如果你正在准备 ASP.NET Core 相关的面试,这篇博文将为你提供一份全面的面试宝典,帮助你从基础知识到高级特性全面掌握 ASP.NET Core。


在这里插入图片描述


1、什么是 dot net core 的 startup class?

答:Startup classdot net core 应用的入口。所有的 dot net core 应用必须有这个class 这个类用来配置应用。
这个类的调用是在 program main 函数里面进行配置的。类的名字可以自己定义。

2、什么是中间件?

答:中间件是处理 HTTP 请求和响应的组件,它们按照顺序组成请求处理管道。每个中间件可以选择处理请求并将其传递给下一个中间件,或者直接终止管道。

示例:

public void Configure(IApplicationBuilder app)
{
    app.Use(async (context, next) =>
    {
        // 在处理请求之前执行的代码
        await next.Invoke();
        // 在处理请求之后执行的代码
    });

    app.Run(async context =>
    {
        await context.Response.WriteAsync("Hello, World!");
    });
}

3、application builder 的 use 和 run 方法有什么区别?

答:这两个方法都在 start up classconfigure 方法里面调用。都是用来向应用请求管道里面添加中间件的。Use 方法可以调用下一个中间件的添加,而 run 不会。

4、dot net core 管道里面的map拓展有什么作用?

答:可以针对不同的路径添加不同的中间件。

5、dot net core 里面的路径是如何处理的?

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

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

6、如何在 dot net core 中激活 session 功能?

答:首先要添加 session 包. 其次要在 config service 方法里面添加 session 。然后又在 configure 方法里面调用 usesession

7、描述一下依赖注入后的服务生命周期?

答:asp.net core 主要提供了三种依赖注入的方式

其中 AddTransientAddSingleton 比较好区别

  • AddTransient 瞬时模式:每次都获取一个新的实例
  • AddSingleton 单例模式:每次都获取同一个实例

AddTransientAddScoped 的区别更不容易区别一点

首先这两种方式每次请求得到的都不是同一个对象,从这点看会发现这两个都一样。

但是我们可以继续分细一点,虽然不同的请求得到的结果不同,但是我们可以在同一次请求中去获取多次实例测试。

📌小总结:

  • AddTransient瞬时模式 :每次请求,都获取一个新的实例。即使同一个请求获取多次也会是不同的实例
  • AddScoped:每次请求,都获取一个新的实例。同一个请求获取多次会得到相同的实例
  • AddSingleton单例模式:每次都获取同一个实例

8、dot net core跟dot net比较有哪些更好的地方?

  1. 第一是跨平台,它可以运行在三大操作系统上面,windows, Linux和MAC。
  2. 第二是对架构本身安装没有依赖,因为所有的依赖都跟程序本身在一起。
  3. 第三是 dot net core 处理请求的效率更高,能够处理更多的请求。
  4. 第四是 dot net core 有更多的安装配置方法。

9、asp dot core有哪些好的功能?

  1. 第一是依赖注入。
  2. 第二是日志系统架构。
  3. 第三是引入了一个跨平台的网络服务器,kestrel。可以没有 iis, apache和nginx 就可以单独运行。
  4. 第四是可以使用命令行创建应用。
  5. 第五是使用 APP settings json file 来配置工程。
  6. 第六是使用 start up 来注册服务。
  7. 第七是更好的支持异步编程。
  8. 第八是支持 web socketsignal IR
  9. 第九是对于跨网站的请求的预防和保护机制。

10、什么是 ASP.NET Core?它与 ASP.NET 有什么区别?

答:
ASP.NET Core 是 ASP.NET 的下一代版本,它是一个跨平台、高性能的开源框架,用于构建现代 Web 应用程序和 API。与传统的 ASP.NET 相比,ASP.NET Core 具有以下优势:

  • 跨平台:可以在 Windows、Linux 和 macOS 上运行。
  • 高性能:经过优化,性能显著提升。
  • 模块化:通过 NuGet 包管理,按需引入功能。
  • 依赖注入:内置支持依赖注入。
  • 统一框架:MVC 和 Web API 使用统一的编程模型。

11、ASP.NET Core 的启动过程是怎样的?

ASP.NET Core 应用程序的启动过程主要包括以下几个步骤:

  1. 创建主机:通过 CreateHostBuilder 方法创建主机。
  2. 配置服务:在 ConfigureServices 方法中注册服务。
  3. 配置中间件:在 Configure 方法中配置请求处理管道。
  4. 运行应用程序:调用 Run 方法启动应用程序。
public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

12、ASP.NET Core 中的路由是如何工作的?

ASP.NET Core 使用路由系统将传入的 HTTP 请求映射到相应的控制器和操作方法。路由可以通过两种方式配置:

  • 约定路由:在 Startup 类的 Configure 方法中使用 MapRoute 方法配置。
  • 属性路由:在控制器和操作方法上使用 [Route] 属性配置。

示例:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

13、如何实现 RESTful API 的路由?

在 ASP.NET Core 中,可以使用属性路由来实现 RESTful API 的路由。

[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
    [HttpGet]
    public IActionResult Get()
    {
        // 获取所有产品
    }

    [HttpGet("{id}")]
    public IActionResult GetById(int id)
    {
        // 根据 ID 获取产品
    }

    [HttpPost]
    public IActionResult Create(Product product)
    {
        // 创建新产品
    }

    [HttpPut("{id}")]
    public IActionResult Update(int id, Product product)
    {
        // 更新产品
    }

    [HttpDelete("{id}")]
    public IActionResult Delete(int id)
    {
        // 删除产品
    }
}

14、什么是模型绑定?

模型绑定是将 HTTP 请求中的数据映射到控制器操作方法参数的过程。ASP.NET Core 支持多种模型绑定方式,包括查询字符串、表单数据、路由数据、请求体等。

15、如何进行模型验证?

ASP.NET Core 提供了数据注解(Data Annotations)来进行模型验证。常用的数据注解包括 [Required]、[StringLength]、[Range] 等。

public class Product
{
    [Required]
    public int Id { get; set; }

    [StringLength(100)]
    public string Name { get; set; }

    [Range(0, 1000)]
    public decimal Price { get; set; }
}

在控制器中,可以通过 ModelState.IsValid 属性来检查模型是否有效。

[HttpPost]
public IActionResult Create(Product product)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    // 处理有效的产品数据
}

16、ASP.NET Core 中的日志系统是如何工作的?

ASP.NET Core 提供了一个灵活的日志系统,支持多种日志提供程序(如控制台、调试、文件、Azure App Service 等)。日志系统通过 ILogger 接口提供记录日志的能力。

17、 如何优化 ASP.NET Core 应用程序的性能?

ASP.NET Core 提供了多种性能优化手段,包括:

  • 缓存:使用内存缓存、分布式缓存等。
  • 响应压缩:启用响应压缩以减少传输数据量。
  • 异步编程:使用异步方法提高并发处理能力。
  • 数据库优化:优化数据库查询,使用索引等。
  • CDN:使用 CDN 加速静态资源的加载。

18、 如何部署 ASP.NET Core 应用程序?

ASP.NET Core 应用程序可以部署到多种环境中,包括 IIS、Azure、Docker、Linux 等。常见的部署方式包括:

  • IIS:将应用程序发布到 IIS 服务器。
  • Azure:将应用程序发布到 Azure App Service。
  • Docker:将应用程序打包为 Docker 容器并部署到 Kubernetes 或其他容器编排平台。
  • Linux:将应用程序发布到 Linux 服务器并使用 Nginx 或 Apache 作为反向代理。

19、如何使用 Docker 部署 ASP.NET Core 应用程序?

首先,创建一个 Dockerfile 文件:

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["MyApp.csproj", "./"]
RUN dotnet restore "./MyApp.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "MyApp.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyApp.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]

然后,使用以下命令构建和运行 Docker 镜像:

docker build -t myapp .
docker run -p 8080:80 myapp

20、什么是 Kestrel?

Kestrel 是 ASP.NET Core 的跨平台 Web 服务器,它是 ASP.NET Core 应用程序的默认服务器。Kestrel 是一个高性能的服务器,支持 HTTP/2WebSocket

结语

ASP.NET Core 是一个功能强大且灵活的框架,掌握其核心概念和高级特性对于面试和实际开发都非常重要。希望这篇博文能帮助你在 ASP.NET Core 面试中脱颖而出,顺利拿到心仪的职位!

如果你有任何问题或需要进一步的帮助,欢迎在评论区留言,我会尽快回复你。祝你面试顺利!


http://www.kler.cn/a/546450.html

相关文章:

  • QT之error: LNK2038: 检测到“RuntimeLibrary”的不匹配项
  • 详解C++的存储区
  • 红队视角出发的k8s敏感信息收集——持久化存储与数据泄露
  • Debezium日常分享系列之:解码逻辑解码消息内容
  • 李宏毅机器学习笔记:【5.Batch和Momentum的训练技巧】
  • 【踩坑】pytorch模型导出部署onnx问题记录
  • 登录弹窗效果
  • 美国哈美顿零件号A203560 HAMILTON 10µl 1701 N CTC (22S/3) A200S 203560
  • AI 编程私有化部署,在使用 cline 时,可能无法避免私隐的泄漏问题
  • CentOS 系统上安装 Anaconda3-2022.05-Linux-x86_64.sh linux安装python3.9
  • SAP-ABAP:SAP屏幕数据的处理逻辑
  • 【C语言】C语言 停车场管理系统的设计与实现(源码)【独一无二】
  • python 爬虫教程 0 基础入门 一份较为全面的爬虫python学习方向
  • ubuntu服务器部署
  • Cursor AI开发微信小程序教程
  • 企业文件安全:零信任架构下的文件访问控制
  • Labview课程2:通过S7.net读取西门子PLC中变量并绘图
  • 【核心特性】深入对比:try catch 与 Go 的 error 模式
  • Linux软件编程(1)
  • JAVA学习-练习试用Java实现“结合Apache Nifi对大数据流进行自动化处理和筛查”