Skip to content

面试速答(先看这里)

**一句话结论:**在Controller中会进行业务逻辑的执行,可能会调用下层的Service以及持久层进行数据的CRUD。

60秒标准回答:

URL解析 ,对URL自动编码,然后检查长度,之后根据url查看浏览器是否缓存了该页面 DNS 查询,依次通过浏览器缓存,OS hosts缓存,路由器缓存,ISP缓存和根域名服务器去查询对应的ip 浏览器将请求封装为 HTTP 报文,在client和server建立连接之前,会进行 TCP三次握手 之后将报文从外到里封装为 以太网首部+ip首部+tcp首部+http首部经过 网关和路由器 发送给server 对于淘宝来说,请求会先到 nginx服务器 上,然后nginx采用默认的轮询算法进行 负载均衡 ,携带原来browser的ip把报文发送给 Serv…

在Controller中会进行业务逻辑的执行,可能会调用下层的Service以及持久层进行数据的CRUD

对Controller进行处理并返回ModelAndView

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

**记忆锚点:**Controller → response → HTTP → ModelAndView → Servlet → server

追问准备:

  • 围绕「Controller」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「response」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「HTTP」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

  1. URL解析,对URL自动编码,然后检查长度,之后根据url查看浏览器是否缓存了该页面
  2. DNS查询,依次通过浏览器缓存,OS hosts缓存,路由器缓存,ISP缓存和根域名服务器去查询对应的ip
  3. 浏览器将请求封装为HTTP报文,在client和server建立连接之前,会进行TCP三次握手
  4. 之后将报文从外到里封装为 以太网首部+ip首部+tcp首部+http首部经过网关和路由器发送给server
  5. 对于淘宝来说,请求会先到nginx服务器上,然后nginx采用默认的轮询算法进行负载均衡,携带原来browser的ip把报文发送给Servlet容器
  6. Servlet容器接收到请求之后会解析请求行,请求体,请求头,然后交给MVC处理
  7. DispatcherServlet接收到请求后,通过请求路径返回相应的拦截器和Controller;
  8. 在Controller中会进行业务逻辑的执行,可能会调用下层的Service以及持久层进行数据的CRUD。
  9. 对Controller进行处理并返回ModelAndView;然后在通过ViewResolve对ModelAndView进行处理,返回View视图;最后一步是进行渲染View,产生response
  10. 浏览器接收response,HTTP响应报文的头部包含了状态码(Status-Code),并进行缓存和解码
  11. 浏览器渲染页面