java面试 网络通信_2020 年 Java 面试题集锦(网络篇)

前言

网络编程是程序员比较少接触的技能,但是网络协议的应用却是非常常见的,比如 RPC 框架如 Dubbo 使用 Netty 进行通信,而 Netty 是一个网络编程框架,服务提供端和服务消费端正是通过 Netty 这个网络框架提供的机制进行通信的,再比如 Spring Clound 使用 HTTP 协议作为服务提供端和服务消费端的通信协议,甚至前端同学和后端同学进行联调的时候也需要熟悉 HTTP 协议。

1. HTTP 响应码有哪些?分别代表什么含义?

HTTP 响应码是 Web 服务器告诉客户端当前服务器的运行状况的标识。

bfa4a8e100aced0eaa2cdd94807228bb.png

200:成功,Web 服务器成功处理了客户端的请求。

301:永久重定向,当客户端请求一个网址的时候,Web 服务器会将当前请求重定向到另一个网址,搜索引擎会抓取重定向后网页的内容并且将旧的网址替换为重定向后的网址。

302:临时重定向,搜索引擎会抓取重定向后网页的内容而保留旧的网址,因为搜索引擎认为重定向后的网址是暂时的。

400:客户端请求错误,多为参数不合法导致 Web 服务器验参失败。

404:未找到,Web 服务器找不到资源。

500:Web 服务器错误,服务器处理客户端请求的时候发生错误。

503:服务不可用,服务器停机。

504:网关超时。

2. Forward 和 Redirect 的区别?

浏览器 URL 地址:Forward 是服务器内部的重定向,服务器内部请求某个 servlet,然后获取响应的内容,浏览器的 URL 地址是不会变化的;Redirect 是客户端请求服务器,然后服务器给客户端返回了一个 302 状态码和新的 location,客户端重新发起 HTTP 请求,服务器给客户端响应 location 对应的 URL 地址,浏览器的 URL 地址发生了变化。

数据的共享:Forward 是服务器内部的重定向,request 在整个重定向过程中是不变的,request 中的信息在 servlet 间是共享的。Redirect 发起了两次 HTTP 请求分别使用不同的 request。

请求的次数:Forward 只有一次请求;Redirect 有两次请求。

3. 如何实现跨域?

当浏览器执行 JS 脚本的时候,会检测脚本要访问的协议、域名、端口号是不是和当前网址一致,如果不一致就是跨域。跨域是不允许的,这种限制叫做浏览器的同源策略,简单点的说法就是浏览器不允许一个源中加载脚本与其他源中的资源进行交互。那么如何实现跨域呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值