网络编程面试系列-03

2022年7月17日
大约 4 分钟

网络编程面试系列-03

1. 什么是 HTTP 协议无状态协议?

HTTP协议无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息。

也就是说,当客户端一次HTTP请求完成以后,客户端再发送一次HTTP请求,HTTP并不知道当前客户端是一个”老用户“。

2. 如何解决 HTTP 协议无状态协议?

解决HTTP协议无状态协议可以使用Cookie来解决无状态的问题,Cookie就相当于一个通行证,第一次访问的时候给客户端发送一个Cookie,当客户端再次来的时候,拿着Cookie(通行证),那么服务器就知道这个是”老用户“。

3. HTTPS 工作原理是什么?

1、首先HTTP请求服务端生成证书,客户端对证书的有效期、合法性、域名是否与请求的域名一致、证书的公钥(RSA加密)等进行校验;

2、客户端如果校验通过后,就根据证书的公钥的有效, 生成随机数,随机数使用公钥进行加密(RSA加密);

3、消息体产生的后,对它的摘要进行MD5(或者SHA1)算法加密,此时就得到了RSA签名;

4、发送给服务端,此时只有服务端(RSA私钥)能解密。

5、解密得到的随机数,再用AES加密,作为密钥(此时的密钥只有客户端和服务端知道)。

4. 【网易】为什么 RPC 框架需要序列化?

欢迎大家关注微信公众号: Java精选 ,专注分享前沿资讯,BATJ 大厂面试题解读,架构技术干货,微服务、高可用等架构设计,10年开发老兵帮你少走弯路,欢迎各领域程序员交流学习!

此类面试题只能在微信小程序: Java精选面试题 ,查阅全部内容,感谢支持!

5. 【网易】RPC 和 HTTP 有什么区别?

欢迎大家关注微信公众号: Java精选 ,专注分享前沿资讯,BATJ 大厂面试题解读,架构技术干货,微服务、高可用等架构设计,10年开发老兵帮你少走弯路,欢迎各领域程序员交流学习!

此类面试题只能在微信小程序: Java精选面试题 ,查阅全部内容,感谢支持!

6. RPC 和 HTTP 分别有什么优缺点?

传输协议

RPC:可以基于TCP协议,也可以基于HTTP协议;

HTTP:基于HTTP协议。

传输效率

RPC:使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2协议,也可以很好的减少报文的体积,提高传输效率;

HTTP:如果是基于HTTP1.1的协议,请求中会包含很多无用的内容,如果是基于HTTP2.0,那么简单的封装以下是可以作为一个RPC来使用的,这时标准RPC框架更多的是服务治理。

性能消耗

RPC:可以基于thrift实现高效的二进制传输;

HTTP:大部分是通过json来实现的,字节大小和序列化耗时都比thrift要更消耗性能。

负载均衡

RPC:基本都自带了负载均衡策略;

HTTP:需要配置Nginx,HAProxy来实现。

服务治理

RPC:能做到自动通知,不影响上游;

HTTP:需要事先通知,修改Nginx/HAProxy配置。

总结

RPC主要用于公司内部的服务调用,性能消耗低,传输效率高,服务治理方便。HTTP主要用于对外的异构环境,浏览器接口调用,APP接口调用,第三方接口调用等。

7. 【阿里巴巴】什么情况下需要序列化?为什么 RPC 参数需要序列化?参数中日期类型用 sql.Date 还是 util.Date?

欢迎大家关注微信公众号: Java精选 ,专注分享前沿资讯,BATJ 大厂面试题解读,架构技术干货,微服务、高可用等架构设计,10年开发老兵帮你少走弯路,欢迎各领域程序员交流学习!

此类面试题只能在微信小程序: Java精选面试题 ,查阅全部内容,感谢支持!