.NET Core WebAPI 开发工程师面试常见问题
在面试中,.NET Core WebAPI 开发工程师的面试问题一般会涉及多个方面,包括基础知识、框架相关、性能优化、安全性、测试、架构设计等。下面列出了一些经典的面试问题及其建议回答,帮助你准备面试。
.NET Core WebAPI 开发工程师面试常见问题,涵盖基础概念、框架特性、性能优化、安全性及测试部署等方面。内容包括.NET Core 与 Framework 区别、依赖注入原理、Web API 路由与中间件机制、错误处理策略、CORS 配置、单元测试方法以及 Docker 部署流程。旨在帮助开发者系统复习核心知识点,提升面试准备效率。

在面试中,.NET Core WebAPI 开发工程师的面试问题一般会涉及多个方面,包括基础知识、框架相关、性能优化、安全性、测试、架构设计等。下面列出了一些经典的面试问题及其建议回答,帮助你准备面试。
回答: .NET Core 是一个开源的、跨平台的框架,适用于构建跨平台的应用程序,如 Web 应用、云服务、控制台应用等。与 .NET Framework 相比,.NET Core 支持 Windows、Linux 和 macOS 操作系统,而 .NET Framework 只支持 Windows。
.NET Core 的另一个优势是它的模块化设计,应用程序只需引入所需的包,减少了应用的体积,并且支持更快的启动速度和更小的内存占用。
回答: 依赖注入(DI)是一个设计模式,它通过将对象的依赖关系从对象内部解耦出来,使得系统的模块之间不再直接依赖,而是通过外部传入依赖。这样可以提高代码的可测试性和可维护性。
在 .NET Core 中,DI 是内置的,可以在 Startup.cs 中通过 ConfigureServices 方法注册服务和依赖。使用依赖注入的好处包括:
回答: 在 .NET Core 中,创建 Web API 项目可以通过以下步骤:
Startup.cs 中有配置服务和中间件的代码,包括:
AddControllers 服务,启用控制器支持。app.UseRouting() 和 app.UseEndpoints()。控制器类可以通过继承 ControllerBase 来创建 API。
[ApiController]
[Route("api/[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Hot", "Sweltering"
};
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
}).ToArray();
}
}
使用命令行创建项目:
dotnet new webapi -n MyApi
回答:
在 .NET Core Web API 中,路由是由 Route 特性或 Map 方法定义的。路由可以是静态的或动态的,支持使用路径参数和查询参数。
[Route("api/[controller]")]。[Route("api/[controller]/{id}")],其中 {id} 是路径参数。还可以使用 HTTP 动作特性(如 [HttpGet]、[HttpPost])来标识支持的 HTTP 请求方法。
回答: 中间件是 ASP.NET Core 应用程序中的一个组件,它可以在请求处理管道中处理请求和响应。每个中间件都可以决定是否继续处理请求或终止请求,并可以修改请求和响应。常见的中间件包括身份验证、授权、日志、错误处理、静态文件服务等。
中间件在 Startup.cs 文件中的 Configure 方法中注册。例如:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
回答: 在 .NET Core 中,可以通过全局异常处理中间件或自定义异常过滤器来捕获和处理 Web API 中的错误和异常。
自定义异常过滤器: 你也可以创建自定义的异常过滤器来处理特定的异常:
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
[HttpGet]
public IActionResult GetProduct(int id)
{
try
{
var product = _productService.GetProductById(id);
if (product == null) throw new NotFoundException("Product not found.");
return Ok(product);
}
catch (NotFoundException ex)
{
return NotFound(new { message = ex.Message });
}
}
}
全局异常处理中间件:
可以使用 UseExceptionHandler 中间件进行全局异常捕获,处理未捕获的异常并返回用户友好的错误信息。
app.UseExceptionHandler("/Home/Error");
回答: 常见的 Web API 性能优化方法包括:
async/await 异步编程来避免阻塞线程,提高并发处理能力。回答: Web API 安全性可以通过以下措施增强:
回答: CORS(Cross-Origin Resource Sharing)是允许浏览器向不同源的服务器发起请求的一种机制。它可以防止恶意的跨域请求。
在 .NET Core 中,可以通过在 Startup.cs 中配置 CORS:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin", builder =>
builder.WithOrigins("http://example.com")
.AllowAnyHeader()
.AllowAnyMethod());
});
}
public void Configure(IApplicationBuilder app)
{
app.UseCors("AllowSpecificOrigin");
}
回答: .NET Core Web API 的单元测试通常使用 xUnit、NUnit 或 MSTest 进行。常见的测试策略包括:
Moq 等库模拟服务和依赖,避免直接依赖数据库或外部服务。public class WeatherForecastControllerTests
{
private readonly WeatherForecastController _controller;
public WeatherForecastControllerTests()
{
_controller = new WeatherForecastController();
}
[Fact]
public void Get_Returns200Ok()
{
var result = _controller.Get();
var okResult = Assert.IsType<OkObjectResult>(result);
Assert.Equal(200, okResult.StatusCode);
}
}
回答: .NET Core Web API 可以部署到多个环境:
部署步骤通常包括:
dotnet publishFROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
COPY ./bin/Release/net5.0/publish/ .
ENTRYPOINT ["dotnet", "MyApi.dll"]
docker build -t myapi .
docker run -d -p 80:80 myapi
这些是常见的 .NET Core WebAPI 开发工程师面试问题及答案,涵盖了从基础知识到高级应用的多个方面,帮助你在面试过程中准备充分。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online