Interview Summary
- https://yemengying.com/2016/05/07/threadsafe-hashmap/
- 为什么不安全
- hash相同元素同时put时会互相覆盖
- 如果同时触发扩容可能使链表造成还链,从而导致get时死循环
- 线程安全Map
- HashTable
- sychronized put and get method, 效率低下
- SynchronizedMap
- ConcurrentHashMap
- 允许并发读和线程安全的更新
- 写操作时只锁住部分Map
- HashTable
- http://blog.csdn.net/jiaochunyu1992/article/details/51177373
- ArrayList 线程不安全
- 同时add 可能相互覆盖
- https://muyinchen.github.io/2017/07/20/Spring%E6%A1%86%E6%9E%B6%E4%B8%AD%E7%9A%84%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F(%E4%B8%80)/
- 解释器设计模式
- 建设者模式(BeanDefinitionBuilder)
- 该模式用于简化复杂对象的构造
- Builder 允许我们通过将值传递给父类的内部构建器对象来清楚的分解对象构造
- 构建器后面隐藏了对象构造的复杂性,内部静态类接受链接方法的调用
- 工厂方法
- 定义一个用于创建对象的接口,让子类决定实例化哪个类,工厂方法使一个类的实例化延迟到其子类
- 抽象工厂
- 代理模式
- https://github.com/pzxwhc/MineKnowContainer/issues/31
- 事务隔离级别
- ISOLATION_DEFAULT 使用后端数据库默认级别
- ISOLATION_READ_UNCOMMITED 允许读取尚未提交的修改,可能导致脏读,幻读,不可重复读
- ISOLATION_READ_COMMITED 允许从已提交的并发事务读取,可以避免脏读,但幻读和不可重复读仍可能发生
- ISOLATION_REPEATABLE_READ 对相同字段的多次读取结果是一致的,除非数据被当前事务本身改变,可防止脏读和不可重复读,但幻读仍可能发生
- ISOLATION_SERIALIZABLE 完全服从ACID的隔离级别,确保不发生脏读、不可重复读和幻读。最慢,通常通过完全锁定当前事务所涉及的表来实现
- 传播行为
- 脏读、幻读、不可重复读
- http://database.51cto.com/art/200910/156685.htm
- https://zhuanlan.zhihu.com/p/29367933
- 索引类型
- 主键索引
- 单表查询中和唯一索引差别不大,但关联查询中检索速度高于唯一索引
- 普通索引
- 唯一索引
- 全文索引
- 组合索引
- 最左原则:where 条件中查询顺序和索引列顺序一致,否则索引不生效
- 主键索引
- https://github.com/jaywcjlove/mysql-tutorial/blob/master/chapter3/3.5.md
- 引擎类型
- InnoDB
- 健壮的事务型存储引擎,引入行级锁定和外键约束
- 5.7开始成为默认引擎
- 适合处理多并发的更新请求
- MyISAM
- 无法处理事务
- 筛选大量数据迅速
- 并发插入特性允许同时选择和插入数据
- 表级锁
- InnoDB