乐趣区

JAVA面试题48

    本文首发于 cartoon 的博客
     转载请注明出处:https://cartoonyu.github.io/c…

数据结构

  1. B+ 树的特点

    1. B+ 树所有数据都在叶子结点,非叶子结点只存储数据的索引
    2. 叶子结点间形成链表,范围查询相对于 B 树减少了检索的次数
    3. 所有非叶子结点都同时存在与子节点,都是子节点的端口元素
  2. 跳表的了解

    1. 采用以空间换时间的思路实现查询速度的提高
    2. 应用在 Redis 的有序集合上
    3. 操作

      1. 查询

        1. 应用多级索引进行值的比对以及层数的下沉,进而减少了遍历节点的次数
      2. 插入

        1. 抛硬币得出插入元素插入索引的层数
        2. 将插入元素按顺序插入到最底层的链表中
      3. 删除元素

        1. 删除各层包括删除元素的结点
    4. 时间复杂度

      1. O(log n)

数据库

  1. Mysql 索引的了解

    1. 目的

      1. 为了加快等值查询以及范围查询的速度
    2. 分类

      1. 主键索引
      2. 普通索引
      3. 唯一索引
      4. 全文索引
      5. 多列索引
      6. 组合索引
    3. 实现

      1. B+ 树
      2. B 树
      3. Hash 树
  2. Mysql 查询条件带索引的查询语句的执行流程

    1. MySQL5.6 之前

      1. 最左前缀查找符合条件的第一个索引列值
      2. 回表到主键索引树查找符合条件的结果集合
    2. MySQL5.6 之后

      1. 最左前缀查找符合条件的第一个索引列值
      2. 索引下推查找符合条件的下一索引值
      3. 回表到主键索引树查找符合条件的结果集合

网络

  1. 混合加密的原理以及使用场景

    1. 使用非对称加密利用随机数产生的公钥
    2. 公钥传输完成并解密后传输的双方采用对称加密的方式传输数据
    3. 解决问题

      1. 对称加密中公钥的传输问题
      2. 减少传输中使用非对称加密中加解密的时间

java

  1. 静态代理与动态代理的区别

    1. 静态代理与动态代理都是代理模式的一种实现
    2. 区别

      1. 确立对象方面

        1. 静态代理在编译时已经确立好代理对象的类型
        2. 动态代理在运行时采用反射机制动态创建对象
      2. 特点

        1. 静态代理编码相对简单,而且实际运行速度会比动态代理快
        2. 动态代码可以有效解决多对象代理编码重复性的问题

Spring

  1. AOP 的概念了解

    1. AOP 是 Spring Framework 的一个重要模块,基于 Core 模块进行实现
    2. AOP 缓解了原来 OOP 编程的不同功能之间的代码耦合问题,将原来顺序化执行的程序看作一个个切面
    3. 底层实现

      1. 在字节码层面上进行代理的实现
      2. 使用 JDK 动态代理或者 cglib 代理

        1. JDK 动态代理中代理类必须实现接口
        2. cglib 代理不需要接口,更灵活
  2. Spring MVC 的运行流程

    1. Spring MVC 组件

      1. 视图解析组件

        1. ThemeResolver
        2. LocaleResolver
        3. ViewResolver
      2. 处理类组件

        1. HandlerAdapter
        2. HandlerExceptionResolver
        3. RequestToViewNameResolver
        4. MuitipartResolver
      3. 管理类

        1. HandlerMapping
        2. FlashResolver
    2. 步骤

      1. 请求到达 DispatchServlet
      2. DispatchServlet 调用 HandlerMapping 查找处理的 Controller

        1. 若查找的 url 修饰的方法不符合 Spring 的要求,则调用 HandlerAdapter 进行请求的转换
        2. 若分发过程出错,调用 HandlerExceptionResolver 进行异常处理
      3. Controller 调用 Service 进行业务逻辑的处理,Service 返回结果,Controller 利用 RequestToViewNameResolver 进行结果的包装,并返回 ModelAndView 对象到 DispatchServlet
      4. DispatchServlet 分发 ModelAndView 到视图渲染器
      5. 视图渲染器根据 ModelAndView 调用 ViewResolver 进行视图的渲染以及数据的填充

        1. 若请求带有对国际化的处理,调用 LocaleResolver 进行渲染
        2. 若请求带有不同主题的切换,调用 ThemeResolver 进行渲染
      6. 视图渲染返回页面到 DispatchServlet,DispatchServlet 返回页面到请求方

操作系统

  1. I/ O 的控制方式
  2. 程序直接控制
  3. 中断控制
  4. 直接内存存取方式
  5. 通道控制方式

设计模式

  1. 单例模式的四种实现
  2. 饿汉式
  3. 类加载时已经初始化对象
  4. 懒汉式
  5. 调用 newInstance 方法时初始化对象
  6. DCL 式
  7. 双重加锁检查对象
  8. 静态内部类

算法

  1. 530. 二叉搜索树的最小绝对差
退出移动版