Java后端部分面试题(一)

Java后端面试题

前言:昨天进行了cvte的一面,应该是凉了,好多的问题搭上来,记录一下没答出来的问题和答得不好的问题

1、对称加密和非对称加密的区别:

  1. 对称加密中加密和解密使用的秘钥是同一个;非对称加密中采用两个密钥,一般使用公钥进行加密,私钥进行解密。
  2. 对称加密解密的速度比较快,非对称加密和解密花费的时间长、速度相对较慢。
  3. 对称加密的安全性相对较低,非对称加密的安全性较高。

2、前端怎么传输公钥

不会…有没有大佬回答一下

3、HTTPS的原理

HTTPS协议 = HTTP协议 + SSL/TLS协议

https传输过程设计到三个秘钥:服务器端的公钥和私钥,进行非对称加密,客户端生成的四级秘钥,进行对称加密

一次https包含两次http传输,具体过程如下:

  1. 客户端向服务端发送https请求,链接服务器的443端口
  2. 服务器将公钥发送给客户端
  3. 客户端收到服务端的证书后进行检查,验证其合法性,如果公钥合格,那么客户端就会生成一个随机的秘钥,然后用公钥对客户端的秘钥进行加密,第一次http结束
  4. 客户端将加密后的客户端秘钥发给服务器
  5. 服务端将客户端发过来的客户端秘钥,用私钥进行非对称解密,得到解密后的秘钥,然后用这个解密后的客户端秘钥对数据进行对称加密
  6. 将对称加密后的数据发送给客户端
  7. 客户端将整个数据进行对称解密,得到服务器发送的明文数据

4、MySQL数据库与其他数据库的对比

image-20210527102835354

5、对postgre数据库的了解

postgre是一个自由的对象-关系数据库,支持大部分的SQL标准和现代主流数据库特性,如:复杂查询、外键、触发器、视图、事务、mvcc。增加了一些新的拓展,如:新的数据类型、函数、操作符、聚集函数、索引。

优点:

  1. 开源、免费的一个关系型数据库
  2. 性能高,速度快,即使是高并发下,速度也很稳定
  3. 稳定性强,对比innodb等引擎,崩溃、断电等情况,抗击打能力强
  4. 不仅是一个关系型数据库,还是一个面向对象数据库,支持嵌套等一些功能

缺点:

  1. mvcc的多版本控制,会产生很多的版本,需要定期清理
  2. 分布式集群bug很多
  3. 并发抢占式,大SQL且优先级高,会阻塞其他的进程
  4. 数据库扩容耗时特别长

6、数据库的存储引擎

MyISAMInnoDBMemoryArchive
事务X支持XX
全文索引支持XXX
外键X支持XX
哈希索引XX支持X
存储限制256 TB64 TB取决于RAM无限制

7、数据库查询快慢的因素

  1. 没有用到索引
  2. 磁盘的IO速度瓶颈
  3. 出现范围查询或其他原因导致索引失效
  4. 程序内产生了锁时间过长或出现死锁
  5. 查询的列太多,返回了不必要的列
  6. 查询语句写的不好,产生了大量的非必要数据

8、聚簇索引和非聚簇索引的区别

  • 聚簇索引:(Innodb)
    • 将数据和索引(主索引)放到了一块,索引(主索引)的叶子节点保存了行数据
    • 默认是主键,若没有主键则选择一个非空的索引代替,没有这样的列,则会隐式定义一个主键作为聚簇索引
  • 非聚簇索引:(MyISAM)
    • 将数据与索引分开储存,索引的叶子节点指向了数据对应的位置

9、聚簇索引的查询过程

聚簇索引的主索引树中的叶子节点是直接储存数据的真实地址,辅助索引树的叶子节点指向的是主索引的地址,再由主索引树查询到叶子节点对应的值

假如where id = 1,id为主键则直接由主索引树查询到对应的叶子结点,直接获取行数据

假如where name = ‘zs’,这时候就由辅助索引树查询到叶子节点,由叶子节点对应的主索引树的地址,从主索引树的叶子结点,查询到对应的真实地址(遍历了两棵树)

10、非聚簇索引的查询过程

主键索引树和辅助索引树没什么不一样的,两棵树的叶子节点都储存数据的真实地址,两颗索引树是独立的,where条件后面是辅助索引,也不需要去遍历主索引树。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值