牛客面试题库(3)

设计模式了解么

常见的设计模式有单例模式、工厂模式、代理模式、模板模式、适配器模式

单例模式:spring定义的bean默认为单例模式

工厂模式:springbeanfactory是工厂模式的体现

代理模式:aop面向切面编程是代理模式的体现,底层主要通过动态代理实现

模板模式:用来减少重复代码的编写

适配器模式:处理器适配器根据处理器规则适配相应的处理器执行

说说redis的持久化策略

RDBredis data backup,快照式持久化,隔一段时间会把数据生成数据集快照保存到磁盘,优点存储二进制文件,启动恢复速度快,缺点数据完整性不是很高

AOFappend only file,追加式持久化,执行一次指令就追加到文件末尾,优点数据完整性高,缺点启动恢复速度慢

混合式持久化:结合两者优势

请你讲讲单例模式、请你手写一个单例模式

构造函数私有,避免外界通过new 创建实例

单例模式

  • 饿汉式:类加载时就创建对象,因为静态变量在该类的内部,可以直接调用构造方法
  • 枚举饿汉式
  • 懒汉式:被使用的时候才会创建对象,方法里面判断对象是否为空,为空创建对象,适合单线程
  • 线程安全懒汉式:给方法加锁,synchronize,比较笨重
  • 双检锁懒汉式:方法上不加锁,先判断对象是否为空,为空加锁再次判断对象是否为空,第二次加锁判断为空可以防止多线程下第一次判断为空然后创建对象
  • 内部类懒汉式:因为内部类在该类的里面,所以可以直接使用构造方法

请你说说虚拟内存和物理内存的区别

物理内存:计算机真实存在的内存,内存有限

虚拟内存:一种计算机管理内存的方法,让程序认为拥有连续的内存

请你说说MySQL的事务隔离级别

事务隔离级别主要是解决脏读、不可重复读、幻读

RU:read uncommitted,读未提交,会发生脏读、不可重复读、幻读

RC:read committed,读已提交,会发生不可重复读、幻读

RR:repeatable read,可重复读,会发生幻读,InnoDB存储引擎默认使用的事务隔离级别,还额外使用了next-key lock 间隙锁防止幻读

serializable:序列化,不会发生以上问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值