基础知识
IoC(Inversion of Control):即控制反转,这是一种设计思想,指将对象的控制权交给IOC容器,由容器来实现对象的创建、管理,减少对象间的耦合。DI(Dependency Injection),即依赖注入,他是IoC的一种具体实现方式,底层服务对象不再负责依赖关系的创建,而是由顶端调用进行管理注入。这样做的好处是降低了组件之间的耦合度,使代码更加灵活。
中间件:是封装到应用程序管道中以处理请求和响应的软件
Web消息队列:消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题(ActiveMQ,RabbitMQ,Kafka)
Redis:NoSQL数据库(非关系型数据库),键值对方式存储。具有高性能,高可靠特性。数据缓存,减少数据库的访问压力,还具有消息队列的功能。
跨域:浏览器同源策略,IP不同则不响应请求,提示跨域。可以通过后台模拟Http请求,避开浏览器。或者服务允许跨域,添加跨域策略。
领域驱动设计架构(DDD):通过创建与业务领域紧密相关的软件模型来确保能够准确地解决实际问题。DDD的核心在于领域模型,它包括业务中的实体、值对象、服务、聚合和聚合根等概念。DDD的分层架构通常包括表现层(mvc,api),应用层(针对用户应用场景,用例设计应用层服务,隔离底层细节),领域层(专注维护用户规则),基础设施层(负责数据查询和持久化)
集群:将同一个模块或服务同时部署到多台服务器上,通过负载均衡设备对外提供服务。
缓存:将数据暂存到一个区域,如CDN,方向代理,本地缓存,分布式缓存。
分布式:分布式是一种计算方法,它将计算任务分解成多个小部分,分配给多台计算机进行处理,以提高计算效率和节约时间。
Web基础知识:Web基础知识与常用技术_web的主要技术 及技术概要-CSDN博客
面试提问
修饰符含义?
public:公有访问,不受任何限制
private:私有访问,只限于本类成员访问,子类、实例都不能访问
protected:保护访问,只限于本类和子类访问,实例不能访问
internal:默认的类访问级别,在同一程序集内可以访问
Sealed:该类不能够被继承,修饰方法时表示该方法不能被覆写
Abstract:修饰类的时候表示该类为抽象类,不能够创建该类的实例
Static:该类时静态类,不能够实例化该类的对象
Partial:部分类,可以将一个类分成几部分写在不同文件中,最终编译时将合并成一个文件
面向对象的三大特性和作用?
- 封装:一种信息隐藏技术,它将对象的状态(数据)和行为(方法)打包在一起,隐藏对象的内部实现细节,只保留对外的接口与外界交互。
- 继承:是子类继承父类的特性(包括数据和方法),从而可以扩展新的功能。
- 多态:指同一个接口,使用不同的实例而执行不同的操作。多态分为两类:编译时多态(方法重载)和运行时多态(方法重写)。
依赖注入方式有哪几种?
- 构造函数注入
- 属性注入
- 方法注入
常用的中间件?
- UseDeveloperExceptionPage//异常页面
- UseStaticFiles//使用静态文件
- UseSession//使用session
- 日志记录(Log4Net,NLog)
- 依赖注入容器(Autofac,Unity)
- ORM(EF,SqlSugar)
- 缓存(Redis,MemoryCache)
- 安全与认证(JWT)
常见的过滤器?
- Authorization权限过滤器
- Resource资源过滤器
- Action动作过滤器
- Exception异常过滤器
- Result结果过滤器
过滤器的执行顺序为:授权过滤器->资源过滤器->动作过滤器->结果过滤器->异常过滤器
消息队列(于解决应用程序之间通信的问题)作用?
- 解耦&扩展性:消息队列可以解耦系统之间的依赖,提高系统的扩展性。
- 异常处理:消息队列可以用于系统故障时信息的缓存,提高系统的健壮性。
- 流量控制:消息队列可以用于控制系统的负载和流量,保护系统不被过多的请求打垮
进程托管方式?
- 进程内托管:IIS工作进程中托管.net core应用程序。
- 进程外托管:外部服务器(IIS/Appache等)+内部服务器(kestrel)
Http消息流程:Http Request--服务器--IIS/Nginx反向代理--kestrel(web服务器)--主机--Pipeline管道--各种中间件--终端中间件--各种中间件--返回
注册服务的生存周期的几种方式?
- services.AddSingleton();//单例,全局单例,每一次都是相同的实例
- services.AddTransient();//瞬时,每次从服务容器理进行请求实例时,都会创建一个新实例
- services.AddScoped(); //作用域,线程单例,在同一线程请求里,只实例化一次
反向代理作用(Nginx):
- 安全防护(作为网络程序与后台服务之间的防火墙,保护后端服务免受恶意工具,拦截和过滤有害请求)
- 负载均衡(可将客户端的请求分发到堕胎后台服务器,充分利用服务器资源)
- 限流(可设置规定时间内请求次数,减少后台服务接收和响应压力)
- 缓存控制(可以缓存一些静态资源)
- 单一入口(将多个后台服务统一在一个入口上公开)
DTO(Data Transfer Object)数据传输对象作用?
- DTO更注重数据,对领域对象进行合理封装,从而不会将领域对象的行为过分暴露给表现层
- DTO是面向UI的需求而设计的,而领域模型是面向业务而设计的。因此DTO更适合于和表现层的交互,通过DTO我们实现了表现层与领域Model之间的解耦,因此改动领域Model不会影响UI层
- DTO说白了就是数据而已,不包含任何的业务逻辑,属于瘦身型的对象,使用时可以根据不同的UI需求进行灵活的运用
gRPC:一种高性能、开源的远程过程调用(RPC)框架,使用HTTP/2 协议,发布订阅方式传递消息,创建ASP.NET Core gRPC 服务(生成greet.proto文件),有以下优点:
- gRPC 支持多种通信模式
- gRPC 提供了丰富的错误处理和状态码,以及对元数据(Metadata)的支持
- gRPC 支持拦截器机制,可以在客户端和服务器端添加拦截器,
- gRPC 基于二进制协议,序列化效率高,性能优越,适用于高并发和低延迟的场景
多线程的应用场景?
- 后台任务
- 异步处理
- 自动化作业
- 并行计算
- 数据库访问
- 并发访问共享资源
常见的内存泄漏情况?
- 未释放非托管资源:如果一个对象使用了非托管资源(如文件句柄、数据库连接等)
- 未及时解除事件订阅:如果一个对象订阅了另一个对象的事件,但在自己的生命周期结束时未取消订阅,该对象可能继续接收事件通知,即使已经不再需要
- 大量静态变量引用
- 长时间运行的后台线程:如果一个线程长时间运行并且持有对某些资源的引用,即使创建该线程的对象已经不再需要,资源也可能不被垃圾收集器回收。
- 容器泄漏:如果容器类(如List、Dictionary等)中的对象没有被移除,即使对象不再使用,容器本身也不会释放这些对象。
避免内存泄漏的措施?
- 使用try...finally或using语句确保非托管资源的释放。
- 在对象生命周期结束时手动解除事件订阅。
- 避免静态变量引用对象,或者在不需要时将其设为null。
- 管理线程生命周期,确保在不需要时终止线程,并且在线程中使用的资源在线程结束前释放。
- 在容器不再需要其元素时,显式移除或清空容器内的元素。
数据库海量数据处理?
- 优化字段的数据类型
- 添加字段索引
- 分表,分库
- 读写分离(一个数据库进行读数据,另一个进行写操作,并同步数据)
- 负载均衡
- 数据库缓存
HTTP常见错误?
HTTP 400 – 请求无效,请求报文错误
HTTP 403 – 禁止访问
HTTP 404- 无法找到文件
HTTP 500 – 内部服务器错误
HTTP 500原因?
- 代码错误:应用程序中的一个代码块可能导致了一个意外的异常,而服务器无法处理它。
- 数据库连接问题:如果应用程序需要与数据库进行通信,但无法建立有效的连接,则会导致服务器错误。
- 第三方服务错误:如果应用程序依赖于其他服务或API,并且这些服务出现问题,那么服务器可能无法正确处理请求。
- 资源不足:服务器可能由于资源不足(例如内存或处理能力)而无法处理请求。
HTTP 500原因和定位?
- 检查服务器日志和错误信息
- 检查数据库连接
- 检查第三方服务或API
- 确保资源足够
RibbitMQ(队列)使用?
1、生产者+消费者(one to one,多对一) 生产者,Exchange,Queue,消费者
流程:生产一个RibbitMQ工厂,连接MQ,添加一个信道,定义一个队列,定义一个Exchange,信道绑定队列和Exchange,信道里面写数据,消费类似
2、发布+订阅(一对多)
流程:生产一个RibbitMQ工厂,连接MQ,添加一个信道,定义多个队列,定义一个Exchange,信道绑定队列和Exchange,信道里面写数据,消费类似
微服务架构?
主要是中间层分解,将系统拆分成很多小应用(微服务),微服务可以部署在不同的服务器上,也可以部署在相同的服务器不同的容器上。当应用的故障不会影响到其他应用,单应用的负载也不会影响到其他应用。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/16181.html