草庐IT

4 .NET Core笔试题

郑大勇 2023-03-28 原文

1.说说.NET7中 _ViewImports文件的作用?
2.什么是Razor页面?
3.说说.NET5中 __ViewStart文件的作用?
4.如何在Razor页面中实现数据模型绑定?
5.如何在Controller中注入service?
6.描述一下依赖注入后的服务生命周期?
7.说说ASP.NET Core内置容器的特点;
8.ASP.NET Core中如何读取静态文件?
9.ASP.NET Core项目如何设置IP地址和端口号?
10.ASP.NET Core项目中,wwwroot文件夹内包含什么内容?
11.如何理解C#10 中全局的using
12.NET6 中中间件的底层实现和.NET5中间件的区别。
13.谈对ASP.NET Core kestrel的理解
14.谈谈对Autofac的理解
15.ASP.NET Core 如何支持Log4Net扩展?


1.说说.NET7中 _ViewImports文件的作用?

在.NET7中可以支持组件化编程,定义的各种组件,在项目中使用的时候,需要在_ViewImports文件中引入进来。

2.什么是Razor页面?

是ASP.NET Core中支持ASP网页表格的一种开发模型。@page 作为页面的起始标志。。 Stringbulider的使用, 好制定合适的容量值,否则优于默认值容量不足而频繁的进行内存分

3.说说.NET5中 __ViewStart文件的作用?

在控制器在返回视图的时候,开始替换视图引擎的时候,从_ViewStart.cshtml 开始,来初始化展示的视图界面;

4.如何在Razor页面中实现数据模型绑定?

使用bindproperty属性。

5.如何在Controller中注入service?

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

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

在ASP.NET Core中,我们不需要关心如何释放这些服务, 因为系统会帮我们释放掉。有三种服务的生命周期。
  • 单实例服务, 通过add singleton方法来添加。在注册时即创建服务, 在随后的请求中都使用这一个服务。
  • 短暂服务, 通过add transient方法来添加。是一种轻量级的服务,用于无状态服务的操作。
  • 作用域服务,一个新的请求会创建一个服务实例。使用add scoped方法来添加。

  • 7.ASP.NET Core跟ASP.NET比较有哪些更好的地方?

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

    8.说说ASP.NET Core内置容器的特点?

    ASP.NET Core内置容器IServiceCollection,只支持构造函数注入;支持三种声明周期:单例、瞬时、 Scoped三种声明周期管理;

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

    可以通过中间件UseStaticFiles来配置读取静态文件;
    //示例:要访问D盘的MyStaticFiles文件夹下的images文件夹下的banner1.svg问件该如何呢?
    
    public void Configure(IApplicationBuilder app)
    {
        app.UseStaticFiles();
     
        app.UseStaticFiles(new StaticFileOptions
        {
            FileProvider = new PhysicalFileProvider("D:/MyStaticFiles"),
            RequestPath = "/StaticFiles"
        });
    }
    
    //html文件
    <img src="~/StaticFiles/images/banner1.svg" alt="pic"/>
    

    10.ASP.NET Core项目如何设置IP地址和端口号?

    可以使用Properties文件夹下的launchSettings配置文件来配置不同的启动方式的时候,分别配置IP和端口号。
    //launchSettings.json
    
    {
      "iisSettings": {
        "windowsAuthentication": false,
        "anonymousAuthentication": true,
        "iisExpress": {
          "applicationUrl": "http://localhost:8088/",
          "sslPort": 0
        }
      },
      "profiles": {
        "IIS Express": {
          "commandName": "IISExpress",
          "launchBrowser": true,
          "launchUrl": "swagger",
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development"
          }
        },
        "Hx.USORST.CustomerStock.WebApi": {
          "commandName": "Project",
          "launchBrowser": true,
          "launchUrl": "swagger",
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development"
          },
          "applicationUrl": "http://localhost:8088"
        }
      }
    }
    
    

    11.ASP.NET Core项目中,wwwroot文件夹内包含什么内容?

    包含了css、js、js库、字体文件

    12.如何理解C#10 中全局的using?

    using 指令简化了您使用命名空间的方式。C# 10 包括一个新的全局 using 指令和隐式 usings,以减少您需要在每个文件顶部指定的 usings 数量。
    全局 using 指令:如果关键字 global 出现在 using 指令之前,则 using 适用于整个项目。
    隐式 usings:隐式 usings 功能会自动为您正在构建的项目类型添加通用的全局 using 指令。要启用隐式 usings,请在 .csproj 文件中设置 ImplicitUsings 属性

    13.NET6 中中间件的底层实现和.NET5中间件的区别?

    从底层实现没有太大的区别,都是委托的多层嵌套,实现中间件的组装,在.NET6中提供了更多的重载可以来调用;都是基于底层还是转换成委托的多层嵌套式。

    14.谈谈对ASP.NET Core kestrel的理解?

    A、初识Kestrel

    首先,Kestrel是一个跨平台的Web服务器,支持运行在Windows、macOS、Linux等操作系统中。Kestrel支持一下使用场景:

  • HTTPS
  • Opaque upgrade used to enable WebSockets(启用WebSocket情况下的不透明升级)
  • Unix sockets for high performance behind Nginx(Nginx高性能模式下的Unix套接字)
  • HTTP2(不支持macOS)
  • Kestrel支持运行在所有.NET 支持的平台和版本之上。

    B、Kestrel主要有两种使用模式:

    1. Kestrel直接作为Web服务器,直接接收并处理各类Http请求:

    2. 与各类反向代理服务器(例如Nginx、Apache、IIS)配合使用,反向代理服务器接收Http请求,将这些请求转发到Kestrel Web服务器

    C、使用反向代理服务器的好处有哪些呢?

  • 对外暴露有限的HTTP服务
  • 更加安全,反向代理服务器做了一层过滤、防护和转发
  • 通过反向代理服务器实现负载均衡和动态请求分发路由
  • 减少域名使用,降低WAF防火墙防护成本
  • 安全通信 (HTTPS) 配置,HTTPS转HTTP,仅反向代理服务器需要 X.509 证书,并且该服务器可使用普通 HTTP 协议与内部网络的应用服务器通信。
  • //Kestrel配置项
     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>();
                        //修改服务器侦听的IP地址、主机地址以及使用的端口号
                        webBuilder.UseUrls("http://*:5000;http://localhost:5001;https://hostname: 5002");
                        webBuilder.ConfigureKestrel((hostingContext, options) => {
                            //是否每个HTTP响应都要有Header
                            //默认为true
                            options.AddServerHeader = false;
                            //设置监听的地址和端口
                            options.Listen(IPAddress.Loopback, 6000);
                            options.Listen(IPAddress.Loopback, 6001);
                            //设置启用HTTPS并设置SSL证书
                            options.Listen(IPAddress.Loopback, 6002, listenOptions => {
                                listenOptions.UseHttps("ssl证书文件.pfx", "ssl证书文件密码");
                            });
                   
                        });
                    })
                    .ConfigureKestrel(options =>
                    {
                        //设置监听配置
                        options.Listen(IPAddress.Any, 5002,listenOptions =>
                        {
                            //设置HTTP协议,启用HTTP2
                            listenOptions.Protocols = HttpProtocols.Http2;
                        });
                    });
        }
    

    15.谈谈对Autofac的理解?

    Autofac是一个IOC容器,支持三种类型的DI依赖注入,配置文件配置映射关系,支持AOP扩展定制; 在ASP.NET Core的使用步骤如下:
    1.Nuget引入Autofac程序集
    2.在Program类中的CreateHostBuilder方法中,通过.UseServiceProviderFactory(new AutofacServiceProviderFactory())替换容器工厂,把容器替换到框架中;
    3.在StartUp中增加ConfigureContainer方法,用来配置映射关系
    public void ConfigureContainer(ContainerBuilder builder)
    {
    }
    
    //使用了Autofac以后,在IServiceCollection中注入的服务,也能生效;因为Autofac是先接受了所有的来自于IServiceCollection的服务映射后,再去读取ConfigureContainer方法中配置的映射;
    

    4.就可以在控制器中配置构造函数注入了

    有关4 .NET Core笔试题的更多相关文章

    1. JS笔试题 - 2

      二升三笔试(老田)一.数组扁平化(将一个多维数组变为一个一维数组。例如,将数组[1,2,[3,[4,5]],[6,7]]扁平化处理后输出[1,2,3,4,5,6,7];)functiongetArray(arr){letres=[];for(leti=0;i 二.合并有序数组给定两个从小到大排好序的数组,亲,请你把它两个合并成新的数组,合并后的结果依然有序。如:给定数组:[1,3,7,15,20]和数组:[-5,0,2,8,9,12]。那么结果是:[-5,0,1,2,3,7,8,9,12,15,20]functionmergeSortedArrays(arr1,arr2){varmergedA

    2. 盘点6个.NetCore+Vue前后端分离的开源项目 - 2

      今天我们一起梳理下6个,比较受到大家欢迎的.NetCore+Vue前后端分离的开源项目。1、Vol.NetCore构建的简单、跨平台快速开发框架项目简介这是一个基于.NetCore构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;集成了代码生成器,支持前后端业务代码生成,实现快速开发,提升工作效率;框架集成了表单、表格、图表等各种常用的Demo方便直接使用;后端框架支持Vue2、Vue3。技术架构1、跨平台:这是基于.NetCore开发的系统,可以部署在Docker,Windows,Linux,Mac。2、数据库支持:MicrosoftSQLServer,PostgreSQL

    3. 【Java牛客&力扣刷题特辑第五期】——诸佬们这些坑你们都踩过了吗?牛客网经典笔试题目每天刷两道,快乐充实一整天 - 2

      ✨✨【Java牛客&力扣刷题特辑第五期】——诸佬们这些坑你们都踩过了吗?✔✨前言🎉🎉大家好!好久不见我是青花瓷,今天你刷题了吗?文章目录,从易到难,层层递进,如果每一道题都吃透,你一定会在做题方面有质的飞跃,关注我,一起学习算法,一起分享好的题型。博主将持续更新算法,大厂笔试题,经典算法题,易错题,如果觉得不错,点点赞支持一下,如果有错误的地方,欢迎指正✨✨下一期:算法篇之回溯算法作者介绍:🎓作者:偷偷敲代码的青花瓷✨👀作者的Gitee:代码仓库📌系列文章推荐:✨1.Java牛客&力扣刷题特辑第一期✨2.Java牛客&力扣刷题特辑第二期✨3.Java牛客&力扣刷题特辑第三期✨4.Java牛客&

    4. c# - .NETCore 4.5.1 中是否缺少 GetTypeInfo? - 2

      我尝试将嵌入式资源(Windows8.1商店应用程序中的字体文件)作为字节流读取,但问题是对资源文件的访问。我经常用typeof(Type).GetTypeInfo.Assembly.GetMainfestResourceStream(...)但是.NETCorev.4.5.1的System.Reflection.Type中的方法GetTypeInfo()不存在。是否缺少Lib-Reference?我有点困惑^^ 最佳答案 Itisanextensionmethod,addingusingSystem.Reflection;isre

    5. c# - 替换 NetCore 1.0 中的 Array.ConvertAll - 2

      我当前的代码正在使用Array.ConvertAll,我需要将其迁移到netcore1.0。如何将其迁移到NetCore中工作。我们可以使用带有自定义转换代码的foreach语句来处理转换吗?但我不知道该怎么做。感谢任何帮助。 最佳答案 代替int[]array1=...string[]array2=Array.ConvertAll(array1,element=>element.ToString());您可以使用Linq:int[]array1=...string[]array2=array1.Select(element=>el

    6. c# - 如何修复 'Microsoft.NETCore.App' ,找不到版本 '1.1.2'? - 2

      我在尝试运行单元测试时看到此错误:Testhostprocessexitedwitherror:ItwasnotpossibletofindanycompatibleframeworkversionThespecifiedframework'Microsoft.NETCore.App',version'1.1.2'wasnotfound.-Checkapplicationdependenciesandtargetaframeworkversioninstalledat:\-Alternatively,installtheframeworkversion'1.1.2'.如何解决?

    7. c# - NETSDK1061 : The project was restored using Microsoft. NETCore.App 版本1.0.0,但使用当前设置,将使用版本2.0.9 - 2

      我正在开发移动应用程序并使用MSAppCenterforCI。昨天,单元测试项目未能在AppCenter中构建,出现以下错误。我无法在任何开发人员机器上重现该问题,此错误仅发生在AppCenter中。error:NETSDK1061:TheprojectwasrestoredusingMicrosoft.NETCore.Appversion1.0.0,butwithcurrentsettings,version2.0.9wouldbeusedinstead.Toresolvethisissue,makesurethesamesettingsareusedforrestoreandfor

    8. YY-测试实习生笔试+面试复盘 - 2

      YY-测试实习生笔试+面试复盘笔试题都挺基础的,基本都写出来了,好好准备可以过的。因为疫情所以是线上的,在牛客上笔试有摄像头。一、笔试题单选题:如下哪些测试场景不属于负载压力测试()A.疲劳强度测试B.恢复测试C.大数据量测试D.并发性能测试填空题:1请写出二进制数10111101对应的八进制、十六进制、十进制。2数据库DB有两张表,一张学生信息表Student,有No(学号),Name(姓名),Sex(性别),Birth(生日),Dept(院系)四个字段;一张课程表Class,有No(学号),Class(课程),Score(分数)三个字段1)请写一条sql查询语句,查找性别为“女”且学号大于

    9. 华为机试(6.17笔试题解析) - 2

      华为机试一共三道题,分值分别是100,100,200,满分400分,限时2.5小时。我抽到的这三题相对来说比较简单,满分通过,这里做个总结:第一题:数据分类■ 题目描述 对一个数据a进行分类,分类方法为:此数据a(四个字节大小)的四个字节相加对一个给定的值b取模,如果得到的结果小于一个给定的值c,则数据a为有效类型,其类型为取模的值;如果得到的结果大于或者等于c,则数据a为无效类型。比如一个数据a=0x01010101,b=3,按照分类方法计算(0x01+0x01+0x01+0x01)%3=1,所以如果c=2,则此a为有效类型,其类型为1,如果c=1,则此a为无效类型;又如一个数据a=0x01

    10. IC 笔试真题之吾见——华为实习(1) - 2

      前言今天(20220407)刚建立了一个专栏《IC真题之吾见》,准备记录一些IC真题的见解,为以后找工作做一点准备。刷题绝不是目的,以题代练,以题代学。题目来自师兄申请华为实习“设计”岗位的笔试真题。见解大部分来自自己学习的理解,也有部分超纲知识是网络检索得到,希望可以多多在评论区留言交流,共同进步!有问题的地方也希望可以直接批评指正!后面也会同步更新此专栏!建议PC端或Pad端查看!1、下列有关时序分析的描述正确的是()A.recovery时间,是指异步控制信号在有效时钟沿到达之后必须保持稳定的时间B.时钟信号的建立时间裕度的计算方法是基于数据的到达时间和数据的需要时间C.下面的公式用来计算

    随机推荐