面试知识点笔记(持续更新)

多线程

线程和进程的区别

线程是CPU调度的基本单位

进程是程序的一次执行过程,是程序执行的基本单位

Spring源码

ApplicationContext的功能 继承多个接口

BeanFactory :能够管理装配Bean

ResourcePatternResolver:能够加载资源文件

MessageSource :能够实现国际化

APplicationEventPublisher:注册监听器,实现监听机制

IOC

Spring Bean的作用域

singleton 默认作用域 容器里拥有唯一Bean实例 单例模式

prototype 每一个getBean请求,容器都会创建一个Bean实例

AOP

原理 使用代理类来替换真实实现类以对外提供服务

代理模式 :接口+真实实现类+代理类

ACID 原子性、一致性、隔离性、持久性

、隔离级别、事务传播

MySQL

架构

一般索引为B+Tree索引,存储引擎为InnoDB

事务

事务

事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上的一组操作,要么都执行,要么都不执行。

四大特性

原子性 买就买,不买就拉到

一致性 你买我卖

隔离性 你买你的,我买我的

持久性 你买了就是你的了

事务隔离级别

读取未提交读、读取已提交读、可重复读、可串行化

MySQL默认REPEATABLE-READ事务隔离级别,Oracle默认READ-COMMITTED

事务并发访问引起的问题

更新丢失(MySQL任意级别),脏读(COMMITTED以上可避免),不可重复读(REPEATABLE-READ以上避免),幻读(SERIALIZABLE最高级别避免)

索引

索引越多越好吗
  1. 索引不是越多越好
  2. 数据量小的表用不到,建了还增加索引开销
  3. 数据变更需要维护索引,增加索引维护成本
  4. 更多的索引意味着更多的空间

共享锁(S锁)和排它锁(X锁)

共享锁【S锁】
又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。

排他锁【X锁】
又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不能再读取和修改A

Gap锁

对主键索引或者唯一索引会用Gap锁吗

如果where条件全部命中,则不会用Gap锁,只会加记录锁;反之亦然

Gap锁会用在非唯一索引或者不走索引的当前读中

RC、RR级别下的InnoDB的非阻塞读如何实现

数据库有着三个隐藏的字段,通过这三个字段,通过这些字段我们实现了记录追踪,历史回朔

  • 数据行里的DB_TRX_ID、DB_ROLL_PTR、DB_ROW_ID字段
  • undo日志(每操作一次数据,顺序增加一个日志)
  • read view(快照本照了)

数据行DB_TRX_ID、DB_ROLL_PTR、DB_ROW_ID字段

  1. DB_TRX_ID(最后一次操作事务ID)

  2. DB_ROLL_PTR(回滚指针)

  3. DB_ROW_ID(InnoDB表中在没有默认主键的情况下会生成一个6字节空间的自动增长主键)

  4. undo日志

    第一次修改数据12->32

    img

    第二次修改数据13->45 img

    我们看到日志被记录下来,如果 我们第二次事务回滚了,是找到回滚指针指向的undo日志,再回滚操作

  5. read view

    RR下,事务读取数据的时机非常重要,第一次读取后数据会创建快照,以后会读取快照,事务提交前,再读取都是读取第一次读取的数据

    RC下,每一次数据读取,都会创建一个新的快照,所以RC能读取到别人提交的结果

算法

字符串

trim() 去掉字符串首尾空格

String str= str.trim();

去掉字符串所有空格

String str= str.replaceAll(" “,”");

isDigit() 方法用于判断指定字符是否为数字。

public static boolean isDigit(char ch)
Character.isDigit(ch);

charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。

public char charAt(int index)
s.charAt(index)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值