下面是为 .NET Core WebAPI 开发工程师岗位 精心整理的一份面试题大全(含答案思路),覆盖基础、中高级、性能、安全、部署等多个方面,适合应聘者准备技术面试,或面试官参考出题方向。
✅ .NET Core WebAPI 开发工程师面试问题大全
🧱 一、基础知识类
1. 什么是 ASP.NET Core?与 .NET Framework 有何区别?
参考答案思路:
- ASP.NET Core 是跨平台的、轻量级的、高性能 Web 开发框架;
- 支持 Windows、Linux、macOS;
- 与 .NET Framework 相比,ASP.NET Core 模块化更强、性能更优、支持 DI、无系统依赖。
2. ASP.NET Core 中中间件(Middleware)是什么?如何使用?
参考答案思路:
- 中间件是处理请求/响应管道中的组件;
- 每个中间件可决定是否继续传递请求;
- 常用中间件如:Authentication、Authorization、Exception Handling、StaticFiles 等;
- 使用
app.UseXXX()
、app.Run()
注册中间件。
3. 如何在 ASP.NET Core WebAPI 中实现依赖注入(DI)?
参考答案思路:
- ASP.NET Core 内置 DI 容器;
- 在
Startup.cs
的ConfigureServices
中注册服务; - 生命周期包括:
Singleton
、Scoped
、Transient
; - 使用构造函数注入(推荐)或方法注入。
services.AddScoped<IUserService, UserService>();
4. 控制器与路由机制的工作原理是什么?
参考答案思路:
- 路由由
MapControllerRoute()
或[Route]
特性控制; - 控制器通过路由匹配调用对应的 Action;
- 可使用
[Route("api/[controller]")]
和[HttpGet("{id}")]
配合构建 RESTful API。
5. Model Binding 和 Model Validation 是如何工作的?
参考答案思路:
- Model Binding 自动将请求数据绑定到参数对象;
- 使用
[FromQuery]
、[FromBody]
明确来源; - 使用
[Required]
、[StringLength]
等 DataAnnotations 验证字段; - 可结合
ModelState.IsValid
手动检查。
🔧 二、进阶开发类
6. 如何在 ASP.NET Core WebAPI 中实现 Token 鉴权(JWT)?
参考答案思路:
- 使用
Microsoft.AspNetCore.Authentication.JwtBearer
; - 配置中间件
services.AddAuthentication().AddJwtBearer()
; - 请求需携带
Authorization: Bearer {token}
; - 支持 Claim 授权。
7. 如何处理全局异常与日志记录?
参考答案思路:
- 使用自定义中间件统一捕获异常;
- 使用
ILogger
或接入第三方日志库(如 Serilog, NLog); - 推荐在
Program.cs
中使用UseExceptionHandler()
; - 可返回统一格式的错误响应。
8. 如何使用 Swagger 生成 API 文档?
参考答案思路:
- 引入
Swashbuckle.AspNetCore
包; - 在
Startup
中注册services.AddSwaggerGen()
; - 配置 Swagger UI 并注释 Action;
- 使用
[ApiExplorerSettings]
控制显示。
9. 如何进行请求的限流、节流处理?
参考答案思路:
- 可使用中间件实现,或集成如 AspNetCoreRateLimit;
- 支持基于 IP、ClientId、Route 等方式;
- 通过配置文件设定限流策略。
10. 如何处理跨域(CORS)问题?
参考答案思路:
- 使用
services.AddCors()
注册策略; - 在中间件中调用
app.UseCors("policyName")
; - 配置允许的来源、方法、头部;
- 用于前端与 WebAPI 分离部署时的通信支持。
🚀 三、性能与架构类
11. WebAPI 中如何提升性能?
参考方向:
- 使用异步编程(async/await);
- 启用 GZIP 压缩、缓存(ResponseCache);
- 数据分页、数据库优化(EF Core 性能);
- 限制并发、池化连接、减少不必要的中间件。
12. ASP.NET Core 如何实现服务之间的通信?
参考方向:
- 同步方式:HTTPClient、Refit;
- 异步方式:RabbitMQ、Kafka、Azure Service Bus;
- 支持使用 gRPC 进行高性能双向通信。
13. 如何设计一个符合 RESTful 的 WebAPI?
参考方向:
- 使用标准 HTTP 方法(GET、POST、PUT、DELETE);
- URL 资源化:
/api/products/1
; - 状态码语义明确;
- 错误返回结构统一(code、message、data)。
14. 你对 CQRS 和事件驱动架构的理解?
参考方向:
- CQRS(命令查询职责分离)分开读取与写入模型;
- 事件驱动架构使用事件通知解耦业务流程;
- 可配合 MediatR 实现命令、事件的派发与处理。
🔐 四、安全类
15. 如何防范常见 Web 攻击(XSS、CSRF、SQL注入)?
参考方向:
- XSS:输出内容时进行 HTML 编码;
- CSRF:对有状态接口使用 AntiForgery Token(仅适用于 Cookie 场景);
- SQL 注入:EF Core 使用参数化查询,避免拼接;
- 加强 Header 安全设置,如 CSP、X-Frame-Options。
🧪 五、数据库与 EF Core
16. Entity Framework Core 中如何实现事务?
using var transaction = await dbContext.Database.BeginTransactionAsync();
// do something
await transaction.CommitAsync();
17. EF Core 的跟踪查询与非跟踪查询区别?
- 跟踪查询(默认):会追踪返回实体,便于后续更新;
- 非跟踪查询:性能更优,适用于只读场景。
var users = await context.Users.AsNoTracking().ToListAsync();
18. Code First 与 Database First 有哪些区别?
Code First | Database First |
---|---|
从代码生成数据库 | 从数据库生成模型 |
易于版本控制 | 适合已有数据库系统 |
🧱 六、部署与运维
19. 如何部署 ASP.NET Core WebAPI?
参考方向:
- IIS 部署(使用 Hosting Bundle);
- Kestrel + Nginx/Apache;
- Docker 容器部署;
- Azure App Service、Kubernetes 等云平台部署。
20. 如何设置健康检查与服务监控?
- 使用
Microsoft.Extensions.Diagnostics.HealthChecks
; - 提供
/health
接口; - 可集成 Prometheus、Grafana 或 Azure Monitor;
- 配置 alert 与自动重启机制。
发表回复