后端面试

算法

链表排序

对链表进行排序,可行思路如下:

  • 先转换成数组,再选择合适算法排序,最后再转回链表;
  • 采用 快速排序 ,通过快慢指针找到中间节点;
  • 采用 归并排序 ,将链表拆解成单节点链表,再逐一量量合并;

其中,归并排序为最佳选择,C++ 标准模板库 STL 内部采用的便是 归并排序

操作系统

五种IO模型分别是什么

虚拟内存是什么

零拷贝技术

数据库

四大隔离级别分别是什么

为提升吞吐速度,数据库事务必须能够并发执行,但事务并发会带来很多问题:

  • 脏读
  • 不可重复读
  • 幻读

为解决这些问题,数据库提供了以下四种隔离级别:

读未提交

读已提交

可重复读

串行化

索引在什么情况下会失效

  1. 查询索引包含 or ,可能导致索引失效;
  2. 查询条件字符串字段必须用引号括起来,否则索引失效;
  3. like 通配查询,可能导致索引失效;
  4. 联合索引查询时不满足最左原则,导致索引失效;
  5. 在索引列上使用数据库内置函数,导致索引失效;
  6. 对索引列做运算(+ - * /),也会导致索引失效;
  7. 索引字段使用 !=<>not in 等操作符,导致索引失效;
  8. 索引字段使用 is nullis not null ,导致索引失效;
  9. join 查询关联字段编码格式不一样,导致索引失效;
  10. 数据库评估采用全表扫描更快,则不使用索引;

分布式系统

如何实现分布式锁

如何生成分布式ID

什么是雪花算法

雪花算法Snowflake )是一种生成分布式全局唯一 ID 的算法,最初由 Twitter 提出,并用于生成推文 ID 。雪花算法生成的 ID 通常称为 Snowflake ID ,由 64 个比特位构成:

  • 最高位总是 0
  • 接着 41 位是时间戳,精确到毫秒;
  • 接着 10 位表示主机 ID, 防止冲突;
  • 其余 12 位是每台主机维护的自增序号,使得主机能够在同一毫秒内生成多个 Snowflake ID

网络协议

TCP如何保证可靠性

HTTPS通信过程

信息安全

对称加密和非对称加密的区别

为保证数据安全,可以采用加密算法,选择一个密钥对明文进行加密,得到不可解读的密文。

  • 明文:原文,即未经处理的数据;
  • 密文:加密后的结果,无法从中解读出原文内容;
  • 加密:将明文转换成不可解读的密文的过程;
  • 解密:将密文转换回原文的过程;
  • 密钥:加密和解密过程中使用的参数,即密码;
  • 加密算法:即加密和解密的计算步骤;

通常加密算法是公开的,但密钥是私有的,必须妥善保管。对称加密算法在加密和解密的过程中,使用的是同一个密钥。而非对称加密算法的密钥是成对的,使用其中一个密钥加密得到的密文,只能用另一个密钥才能解密。参考文章:

小菜笔记】系列文章首发于公众号【小菜学编程】,敬请关注:

【小菜笔记】系列文章首发于公众号【小菜学编程】,敬请关注: