记录一次字节二面

Https与http的主要区别

1.http是透明的传输,而https是在会话层加上了ssl/tls

2.面试官让我着重讲述一下ssl/tls大致原理

3.我:ssl/tls是通过对称加密和非对称加密实现的,对称加密是通信双方使用相同的密钥。而非对称加密是,接收方会有两份密钥,一份私钥,一份公钥。私钥是自己用来加密的,公钥是给请求方用来加密要发送的数据。当客服端要与服务端请求通信时,第一阶段使用非对称密钥传输,服务端会给客服端发送公钥。客户端收到公钥之后就将对称密钥进行加密并传输给服务端。服务端收到密文后,进行解密。之后,双方就可以通过对称密钥进行通信。

后续问题:不发分子通过伪造成服务端,给客服端发送一个公钥,之后客服端把对称密钥加密并传输给伪造服务端。这就导致了密钥的泄露。

解决办法:CA证书,通过公证的第三方CA发放证书。过程如图-1 CA证书通信

1.CA会对服务器发送证书并附上经CA密钥加密了的公钥信息。并向客服端发送带有公钥的消息

2.客户端信任CA,通过CA公钥解密服务端发送过来的证书,校验证书电子签名,并且获得服务端发送过来的公钥。

3.双方开始通信。

图-1 CA证书通信过程

如图下图:对称加密方式(http是属于透明传输不安全)

图3-1

 如下图:非对称加密(非对称加密加密和解密过程会需要大量的计算,效率比较低)

ps:这一题答的时候,稍微有一点点混乱

4.了解http的状态码301和302的区别码?

  • 301 :资源被永久重定向了。比如你的网站的网址更换了。
  • 302 :资源被临时重定向了。比如你的网站的某些资源被暂时转移到另外一个网址

乐观锁和悲观锁了解吗

悲观锁:每次进行数据操作之前都会先加锁,如果没有获取锁就会阻塞,比如syncronized

乐观锁:乐观锁是基于版本号,线程对数据操作之前会获取该数据的版本号并保存,线程开始对数据执行更改。当要提交数据时线程会比较之前保存的版本号和内存中最新的版本号,如果相同则提交更改,否则就重试。

乐观锁问题:1.ABA问题,即中间修改的值会本无视掉。 2.若没有成功会一直重试,消耗计算机资源,降低计算机的性能

CAS了解吗?

1.CAS是属于一种乐观锁,它实现了原子性,只能更改一个值,若是对于代码块的更改就无能为力。CAS数据结构有三个值V(内存里面的值),P(线程获取的该内存的值),D(需要修改的值)。如果V=p修改值,否则就一直重试。

引用:1.CAS(乐观锁)以及ABA问题_cas,aba之类的问题-CSDN博客​​​​​​​​​​​​2.Java 面试指南 | JavaGuide(Java面试 + 学习指南)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值