Java后端面试题(一)
本帖最后由 逸帅 于 2021-5-27 12:00 编辑# 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数据库与其他数据库的对比
## 5、对postgre数据库的了解
postgre是一个自由的对象-关系数据库,支持大部分的SQL标准和现代主流数据库特性,如:复杂查询、外键、触发器、视图、事务、mvcc。增加了一些新的拓展,如:新的数据类型、函数、操作符、聚集函数、索引。
优点:
1. 开源、免费的一个关系型数据库
2. 性能高,速度快,即使是高并发下,速度也很稳定
3. 稳定性强,对比innodb等引擎,崩溃、断电等情况,抗击打能力强
4. 不仅是一个关系型数据库,还是一个面向对象数据库,支持嵌套等一些功能
缺点:
1. mvcc的多版本控制,会产生很多的版本,需要定期清理
2. 分布式集群bug很多
3. 并发抢占式,大SQL且优先级高,会阻塞其他的进程
4. 数据库扩容耗时特别长
## 6、数据库的存储引擎
| | MyISAM | InnoDB | **Memory** | **Archive** |
| -------- | ------ | ------ | ---------- | ----------- |
| 事务 | X | 支持 | X | X |
| 全文索引 | 支持 | X | X | X |
| 外键 | X | 支持 | X | X |
| 哈希索引 | X | X | 支持 | X |
| 存储限制 | 256 TB | 64 TB| 取决于RAM| 无限制 |
## 7、数据库查询快慢的因素
1. 没有用到索引
2. 磁盘的IO速度瓶颈
3. 出现范围查询或其他原因导致索引失效
4. 程序内产生了锁时间过长或出现死锁
5. 查询的列太多,返回了不必要的列
6. 查询语句写的不好,产生了大量的非必要数据
## 8、聚簇索引和非聚簇索引的区别
- 聚簇索引:(Innodb)
- 将数据和索引(主索引)放到了一块,索引(主索引)的叶子节点保存了行数据
- 默认是主键,若没有主键则选择一个非空的索引代替,没有这样的列,则会**隐式定义一个主键**作为聚簇索引
- 非聚簇索引:(MyISAM)
- 将数据与索引分开储存,索引的叶子节点指向了数据对应的位置
## 9、聚簇索引的查询过程
聚簇索引的主索引树中的叶子节点是直接储存数据的真实地址,辅助索引树的叶子节点指向的是主索引的地址,再由主索引树查询到叶子节点对应的值
假如where id = 1,id为主键则直接由主索引树查询到对应的叶子结点,直接获取行数据
假如where name = ‘zs',这时候就由辅助索引树查询到叶子节点,由叶子节点对应的主索引树的地址,从主索引树的叶子结点,查询到对应的真实地址(遍历了两棵树)
## 10、非聚簇索引的查询过程
主键索引树和辅助索引树没什么不一样的,两棵树的叶子节点都储存数据的真实地址,两颗索引树是独立的,where条件后面是辅助索引,也不需要去遍历主索引树。 逸帅 发表于 2021-5-27 15:43
前辈好,我这才起步,才大三呢,准备的都是一些基础的东西,深入深入打算试试大厂的秋招
啥前辈
现在大厂校招薪资高的离谱, 祝你能拿到比我高的offer 594范特西 发表于 2021-5-27 12:49
建议把sql优化看下,这个好多家都问
SQL这一块的问题我很多都答出来了,所以没写上来,答得我觉得一般般的,或者答不上来的,我就记录出来了 小邱 发表于 2021-5-27 11:56
没啥用的面试
啥叫没啥用...你不面试的吗。。。 面试官:你确认SQL sever不是跨平台的吗? 建议把sql优化看下,这个好多家都问 谢谢分享,助人为乐{:1_918:} Java后端面试 问的没一个 JAVA的...卷成这样了吗 我一个也不会,也不懂 tanzhiwei 发表于 2021-5-27 12:30
面试官:你确认SQL sever不是跨平台的吗?
好像后期SQL server支持linux了...
页:
[1]
2