Java大厂面试全覆盖:30+SpringMVC高频面试题详解(含腾讯/阿里/美团/百度真题)

Java大厂面试全覆盖:30+SpringMVC高频面试题详解(含腾讯/阿里/美团/百度真题)

1. 什么是SpringMVC?

考察知识点:Web框架基础。

SpringMVC是Spring体系下的一个基于MVC(Model-View-Controller)设计模式的Web框架,负责Web请求响应的分发、处理和视图渲染,是构建企业级Web应用的主流技术。

2. SpringMVC的核心流程是什么?

考察知识点:请求处理流程。

SpringMVC的流程包括:前端控制器DispatcherServlet接收请求,根据HandlerMapping查找Controller,Controller执行业务逻辑,返回ModelAndView,ViewResolver解析视图,最终响应用户。

3. DispatcherServlet的作用?

考察知识点:请求分发。

DispatcherServlet是整个SpringMVC的核心,负责统一接收HTTP请求,调用各个组件进行处理,是前端控制器(Front Controller)模式的具体实现。

4. HandlerMapping的作用?

考察知识点:请求路由。

HandlerMapping根据请求的URL、方法等信息,将请求映射到对应的Controller方法,实现请求路由。

5. HandlerAdapter的作用?

考察知识点:适配器模式。

HandlerAdapter用于适配不同类型的处理器(Controller),调用具体的业务方法,实现扩展Controller能力。

6. Controller的作用?

考察知识点:业务处理。

Controller负责具体的业务处理逻辑,接收参数、调用服务层、返回数据或视图,是MVC中的C层。

7. ModelAndView的作用?

考察知识点:模型与视图分离。

ModelAndView封装模型数据(Model)和视图信息(View),用于在Controller与视图解析器之间传递数据。

8. ViewResolver的作用?

考察知识点:视图解析。

ViewResolver根据Controller返回的视图名,解析为具体的视图对象(如JSP、Thymeleaf等),负责页面渲染。

9. @RequestMapping注解的用法?

考察知识点:请求映射注解。

@RequestMapping可用于类和方法,指定请求路径、请求方法(GET/POST/PUT/DELETE)、参数、头信息等,实现灵活路由。

10. @GetMapping、@PostMapping等注解的区别?

考察知识点:注解细粒度。

@GetMapping、@PostMapping、@PutMapping、@DeleteMapping等是@RequestMapping的语义化衍生,分别对应不同HTTP方法,简化开发。

11. @RequestParam和@PathVariable的区别?

考察知识点:参数绑定。

@RequestParam用于获取请求参数(如URL?name=xx),@PathVariable用于获取路径变量(如/user/{id}),二者常用于不同的场景。

12. @RequestBody和@ResponseBody的作用?

考察知识点:消息体处理。

@RequestBody将请求体JSON/XML等映射为Java对象,@ResponseBody将Java对象序列化为JSON/XML返回,常用于前后端分离场景。

13. SpringMVC如何处理表单参数?

考察知识点:参数绑定和对象映射。

支持直接绑定基本类型、POJO、集合类型参数。表单字段名需与Java属性一致,可自动映射。

14. 如何实现文件上传?

考察知识点:Multipart解析。

SpringMVC支持MultipartFile参数,实现文件上传。需配置MultipartResolver,如StandardServletMultipartResolver。

15. 如何自定义参数解析器?

考察知识点:扩展性。

实现HandlerMethodArgumentResolver接口,自定义参数绑定逻辑,并注册到SpringMVC容器中,满足特殊业务参数需求。

16. SpringMVC的数据校验机制?

考察知识点:数据校验。

集成JSR-303/JSR-380(如Hibernate Validator),通过@Valid、@Validated注解及BindingResult参数实现数据校验与错误提示。

17. 拦截器(HandlerInterceptor)与过滤器(Filter)的区别?

考察知识点:请求拦截。

Filter属于Servlet规范,拦截所有请求;HandlerInterceptor是SpringMVC专用,只拦截DispatcherServlet分发的请求,支持更细粒度的控制,如login校验、日志等。

18. SpringMVC如何实现异常处理?

考察知识点:全局异常处理。

可用@ControllerAdvice+@ExceptionHandler实现全局异常捕获与处理,也可实现HandlerExceptionResolver接口自定义异常处理逻辑。

19. 如何实现全局返回值统一封装?

考察知识点:响应增强。

通过@RestControllerAdvice+@ResponseBodyAdvice统一包装Controller返回值,实现API响应格式标准化。

20. 如何实现自定义消息转换器?

考察知识点:消息格式扩展。

实现HttpMessageConverter接口,支持自定义如Protobuf、YAML等格式的消息体解析与输出。

21. SpringMVC如何支持跨域(CORS)?

考察知识点:前后端分离支持。

可通过@CrossOrigin注解、WebMvcConfigurer配置addCorsMappings方法,或Filter实现跨域支持。

22. @RestController与@Controller的区别?

考察知识点:注解语义。

@RestController是@Controller+@ResponseBody的缩写,默认所有方法返回JSON等数据,适用于REST API。

23. 请求参数的默认值如何设置?

考察知识点:参数绑定细节。

@RequestParam支持defaultValue属性,未传参时使用默认值,提升接口健壮性。

24. SpringMVC如何实现重定向和转发?

考察知识点:请求跳转。

重定向通过return "redirect:/path",转发通过return "forward:/path",分别对应浏览器地址栏变化与否。

25. 如何自定义404、500等错误页面?

考察知识点:异常页面处理。

可在web.xml中配置error-page,或用@ControllerAdvice全局异常处理返回自定义视图。

26. SpringMVC如何防止CSRF攻击?

考察知识点:安全性。

集成Spring Security可开启CSRF防护机制,表单自动带token,防止跨站请求伪造。

27. 如何实现拦截器的注册与优先级配置?

考察知识点:拦截链管理。

实现WebMvcConfigurer的addInterceptors方法,注册自定义拦截器并设置order属性控制拦截顺序。

28. 如何获取HttpServletRequest、HttpServletResponse对象?

考察知识点:原生API注入。

Controller方法参数直接声明HttpServletRequest、HttpServletResponse,SpringMVC自动注入。

29. @SessionAttributes与@ModelAttribute的作用?

考察知识点:会话和模型管理。

@SessionAttributes可将模型中的属性存入Session,@ModelAttribute用于方法参数预处理和全局数据绑定。

30. 如何实现接口版本控制?

考察知识点:API演进。

可通过请求路径(如/v1/xxx)、请求头、参数等方式区分版本,结合@RequestMapping灵活路由。

31. SpringMVC如何处理异步请求?

考察知识点:异步处理。

支持Callable、DeferredResult、WebAsyncTask等异步返回类型,提升高并发环境下的吞吐量。

32. SpringMVC常见性能优化措施?

考察知识点:高性能实践。

如静态资源缓存、异步处理、合理拆分拦截器、减少对象创建、Nginx前置、GZIP压缩、限流等。


以上题目涵盖了大厂SpringMVC面试高频与基础知识点,建议结合源码与实际项目深入理解,做到知其然且知其所以然,助力高分通过面试!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值