9.19面试题

  • 说说你对MVC的理解?

    • MVC是什么?是一种设计模式,为了解决以往JSP的繁琐开发
    • M(model)V(view)C(controller),其中view处理页面显示,contrller是用来处理用户的交互与事件,mdoel定义实体对象与处理业务逻辑
    • 三层各尽其职,相对独立,各层内部的改变不会影响其他层,从而降低了数据表达、数据描述和应用操作的耦合度
  • 详细的说说Redis的数据类型?

    • redis中常用的五种数据结构:string、list、set、zset、hash
    • string结构底层是一个简单的动态字符串,支持扩容,存储字符串
    • list存储线性有序不可重复的元素
    • set存储不可重复元素,底层数据结构可以是hash和整数数组
    • zset存储不可重复元素,底层数据结构是ziplist和跳表
    • hash类型存储的是键值对,底层数据结构是ziplist和hash
    • redis会在性能以及节省内存空间考虑,选择最适合的当前状态的底层数据结构实现
  • 请你说说乐观锁和悲观锁?

    • 乐观锁:总是假设最好的假设,每次去拿的时候默认别人不会修改,所以不会上锁,只有更新的时候判断在此期间有没有更新了这个数据
    • 悲观锁:总是假设最坏的假设,每次去拿数据的时候默认别人都会修改,所以会上锁,别人拿这个数据时会阻塞直至拿到锁
    • 数据库的共享锁和排它锁都是悲观锁的实现
  • 设计模式了解么?

    • 常用的设计模式有:单例模式、工厂方法模式、代理模式、适配者模式、和原型模式、模板方法模式等
    • spring中的bean默认为单例模式
    • spring中的BeanFactory用来创建对象的实例,他是工厂模式的实现
    • AOP面向切面编程时是代理模式的体现
    • 适配者模式在springMVC有体现
    • 模板方法模式用来解决代码重复的问题
  • 说说你对AOP的理解

    • AOP是面向切面编程,是spring的两大核心,是一种思想,是对OOP的一种补充
    • 它可以对业务逻辑的各个部分进行隔离,降低耦合,提高代码的可重用性
  • 说说Redis的持久化策略

    • RDB(redis database)在指定的的时间间隔内,将内存中的数据集的快照写入磁盘,对数据库的一致性和要求不是很高,一定时间内备份一次,如果数据库意外的down掉,就会失去一次快照的所有修改
    • AOF(append only file)以日志的形式记录每个写操作,只允许追加文件,不允许改写文件redis启动会读取这个文件,从头到尾执行一遍,以此来恢复数据
  • 请你讲讲单例模式、请你手写一下单例模式

    • 什么是单例模式?一个对象只对外提供一个实例
  public class SingleTon{ 
    private static SingleTon instance= new singleTon();
    private SingleTon(){ 
    } 
    public static SingleTon getInstance(){
      return instance; 
    } 
}
  • 请你说说虚拟内存和物理内存的区别?

    • 物理内存:计算机中真实拥有的内存。物理内存是有限的,容易产生内存不足问题
    • 虚拟内存:抽象的逻辑概念,拥有连续的内存地址
  • 说说你对IoC的理解?

    • IoC控制反转
    • 控制:对象的创建和控制权限
    • 反转:将对象的控制交由spring
    • 创建对象时使用new,现在直接从spring容器中取,维护对象之间的依赖关系,降低对象之间的耦合度
    • 实现方式为DI(依赖注入)有三种注入方式:构造器,setter,接口注入
posted @ 2022-09-19 19:10  网抑云黑胶SVIP用户  阅读(19)  评论(0编辑  收藏  举报