面试试答0516

主键和唯一索引的区别,什么时候用主键,什么时候用唯一索引

  • 主键是数据约束,唯一索引是一种索引
  • 主键一定是一个唯一索引,唯一索引不一定是主键
  • 唯一索引列允许空值,主键不允许空值
  • 一个表只有一个主键,可以创建多个唯一索引

nginx 有哪些使用场景

  • 静态资源服务器
  • 反向代理
  • 负载均衡
  • 动静分离
  • 跨域 proxy 代理

最终一致性是什么,强一致性和最终一致性有什么区别

分库分表后怎么查询分页

https://juejin.cn/post/6981996965353488415#heading-6 #TODO

全局视野法

  1. order by time offset X limit Y,改写成 order by time offset 0 limit X+Y
  2. 服务层将改写后的 SQL 语句发往各个分库;
  3. 假设共分为 N 个库,服务层将得到 N * (X + Y) 条数据;
  4. 服务层对得到的 N * (X + Y) 条数据进行内存排序,内存排序后再取偏移量 X 后的 Y 条记录,就是全局视野所需的一页数据。

分库分表后如何保证主键是递增的

  • 数据库自增:每次需要 ID 的时候,就往一个库的一个表插入数据,获取数据库的自增 ID
  • UUID:优点是本地生成。缺点是太长,作为主键性能太差;并且不具有时序性,会造成过多的随机写操作,影响性能
  • 获取系统当前时间:并发过高的时候,会导致重复
  • snowflake 算法:雪花算法

spring 中 bean 的生命周期和 bean 的作用域

spring web 容器的启动过程

IOC 的实现原理

hashmap 有几种构造函数

hashmap 有四种构造函数:

// 默认初始容量16,默认负载因子0.75
public HashMap();
public HashMap(int initialCapacity);
public HashMap(int initialCapacity, float loadFactor);
// 根据已有的 Map 接口创建所含元素相同的 HashMap,使用默认初始容量与默认负载因子
public HashMap(Map<? extends K, ? extends V> m);

hashmap 的遍历有几种方式,分别适合哪些场景

hashmap遍历

Springboot 是怎么运行起来的

AQS

AQS

公平锁和非公平锁

NoClassDefFoundError 和 ClassNotFoundException 有什么区别

ClassNotFoundException是在使用Class.forName()loadClass()方法时,找不到对应的 JAR 文件导致的。如果有两个ClassLoader,用一个ClassLoader去访问另一个ClassLoader创建的类时,也会报这个错误。

NoClassDefFoundError指,当类 A 对类 B 具有某些依赖项,并且类 A 编译后,类 B 发生了一些变化时,发生的错误。

class GeeksForGeeks {
	void greeting() {
		System.out.println("hello!");
	}
}
 
class GFG {
 
	public static void main(String args[]) {
		GeeksForGeeks geeks = new GeeksForGeeks();
		geeks.greeting();
	}
}

上述代码创建了两个对象:GeeksForGeeksGFG。当上述代码成功编译后,如果删除GeeksForGeeksclass,运行 GFG,就会报NoClassDefFoundError错误。

数据库分布式事务有哪些处理方法

redis 分布锁和 zookeeper 分布锁实现,有什么区别

redis 如何保证数据库与缓存双写的一致性

kafka 如何保证不丢消息又不会重复消费消息

观察者模式

策略模式