后端面试问题

1:mysql数据库相关知识

四种事务隔离级别

  1. read uncommited(未提交读):

    事务中未提交的改动对其他事务是可见的,也称为脏读

  2. read commited(提交读):
    大多数数据库默认才用此级别,mysql不是,一个事务开始时,只能看见已经提交事务的修改,换句话说,一个事务从开始到提交的修改对于其他事务是不可见的,这种级别也可叫不可重复读(nonrepeatable read),因为两次同样的查询,可能会得到不一样的结果
  3. repeatable read(可重复读):
    此级别是mysql的默认级别,该级别解决的脏读的问题,该级别保证了在同一个事务中多次读取同样的记录的结果是一致的,但是还是无法解决幻读的问题(范围查找时会出现别的事务提交的记录,幻行)
  4. serializeable(可串行化):
    这是最高隔离级别,强制事务串行化执行 

索引

  1. 索引的数据结构一般都是b-tree,所以索引是按顺序存储在各页中的,数据越多,数的高度越高,检索越满
  2. 索引是根据索引行的值保存数据行的索引,
    在innodb中,主键索引是聚簇索引(索引的值和行是存储在一起的),索引保存的就是主键值,如果不设置主键,引擎会自动使用唯一的一个非空索引代替,如果没有,会隐试定义一个主键,缺点是通过二级索引查询数据时,命中后都会通过主键值再查找一遍(回表)
    在myisam中,索引行是引用物理位置引用的行,优点,二级索引不用回表,而且可以压缩索引
    哈希索引:是基于哈希表实现的,一般用于索引列差异较大,能直接命中,查询效率非常高,数据量大之后可能有散列冲突


                                  

基础知识:

http1.0,1.1和2.0的区别以及关系:https://www.cnblogs.com/heluan/p/8620312.html

虚拟内存与物理内存的区别:https://blog.csdn.net/lvyibin890/article/details/82217193

同步异步,阻塞与非阻塞:https://www.cnblogs.com/chaser24/p/6112071.html

RPC:

原文地址:https://www.cnblogs.com/leescre/p/10568418.html