.net core 面试题 2023

本文主要介绍了.NET Core的相关面试题目,涵盖了ASP.NET Core的基础概念、.NET术语、内存管理、对象拷贝、依赖注入、服务生命周期、AOP、JWT原理、中间件、未管理类型、值类型与引用类型、装箱拆箱等核心知识点,旨在帮助读者深入理解.NET Core的使用和设计原则。
摘要由CSDN通过智能技术生成


1. 什么是 ASP.net core

微软的 开源的 跨平台的 Web框架。比起asp.net更容易配置/模块化/扩展。

2. .net 术语

1. CLR,公共语言运行时(Common Language Runtime)
2. CIL,公共中间语言(Common Intermediate Language)
3. CTS,通用类型系统(Common Type System)
4. CLS,公共语言规范(Common Language Specification)
5. CLI,公共语言基础架构(Common Language Infrastructure)
6. BCL,基础类库(Base Class Library)
7. FCL,框架类库(Framework Class Library)
8. JIT,是.Net边运行边编译的一种机制(Just In Time)

3. 托管资源 和 非托管资源

1. 托管资源: 由CLR管理分配和释放的资源,也就是我们直接new出来的对象;(公共语言运行时的垃圾回收器回收托管对象使用的内存)。
2. 不受CLR控制的资源,也就是不属于.NET本身的功能,往往是通过调用跨平台程序集(如C++)或者操作系统提供的一些接口,比如Windows内核对象、文件操作、数据库连接、socket、Win32API、网络等。

4. GC 和 垃圾回收

GC:.NET Framework 的垃圾回收器管理应用程序的内存分配和释放

工作方式:每次您使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。

.NET 的垃圾回收器管理应用程序的内存分配和释放。 每当有对象新建时,公共语言运行时都会从托管堆为对象分配内存。 只要托管堆中有地址空间,运行时就会继续为新对象分配空间。 不过,内存并不是无限的。 垃圾回收器最终必须执行垃圾回收来释放一些内存。 垃圾回收器的优化引擎会根据所执行的分配来确定执行回收的最佳时机。 执行回收时,垃圾回收器会在托管堆中检查应用程序不再使用的对象,然后执行必要的操作来回收其内存。

5. .net中所有类的基类

Object

6. 如何实现对象的深拷贝

1. 实现一个方法来new一个新的对象,对其中的引用类型属性全部new出来,值类型的对应旧对象依次赋值。

2. 序列化成json等格式,再反序列化。

7. 依赖注入,为什么使用依赖注入

依赖注入将对象的生命周期交给DI框架来管理,在使用这些对象的时候,不需要new出来,而是直接从container中获取,从而降低了耦合性,降低了依赖,

使用依赖注入我们可以很好的管理类跟类之间的依赖,在我们设计应用程序的时候遵循这几原则,确保代码的可维护性和扩展性;另外在Core的架构中依赖注入提供了对象创建和生命周期管理的核心能力,各个组件之间的相互协作也是由依赖注入框架来实现的。

8. IOC容器的注入方法

1. 构造函数注入,在构造函数中将服务已参数的方式注入到类中。
2. 方法注入,通过指定的方法将服务实例传入类中。
3. 属性注入,通过设置实例到属性将服务实例注入到类中。DI 容器暂不支持该注入方式(autofac支持)。

9. ASP.net core 中 服务生命周期

1. Singleton 单例的,注册时创建,永久存在,相当于静态类,适合使用频繁,工具类类型的service。
2. Scoped 每个request创建一次实例,单个reqest之中在不同地方多次请求时返回的是同一个实例。适合大多数业务service。
3. Transient 同一request中的每次请求也会创建实例。适合轻量级的,无状态的service。

10. scoped的 servic

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值