1. 什么是SPI机制?为什么使用SPI?— 延伸到双亲委派机制
      1. https://www.jianshu.com/p/99f568df0f05
      2. 聊聊Dubbo(五):核心源码-SPI扩展 https://www.jianshu.com/p/7daa38fc9711
    2. dubbo泛化调用原理?
    3. dubbo为什么要设计adaptive?注解在类上和注解在方法上的区别?
      1. https://www.jianshu.com/p/8fa0095d15c9
      2. @Adaptive注解,有两种注解方式:一种是注解在类上,一种是注解在方法上。
        • 注解在类上,而且是注解在实现类上,目前dubbo只有AdaptiveCompiler和AdaptiveExtensionFactory类上标注了此注解,这是些特殊的类,ExtensionLoader需要依赖他们工作,所以得使用此方式。
        • 注解在方法上,注解在接口的方法上,除了上面两个类之外,所有的都是注解在方法上。ExtensionLoader根据接口定义动态的生成适配器代码,并实例化这个生成的动态类。被Adaptive注解的方法会生成具体的方法实现。没有注解的方法生成的实现都是抛不支持的操作异常UnsupportedOperationException。被注解的方法在生成的动态类中,会根据url里的参数信息,来决定实际调用哪个扩展。
    4. Adaptive和Activate的区别?
      1. @Activate注解,此注解需要注解在类上或者方法上,并注明被激活的条件,以及所有的被激活实现类中的排序信息。
    5. JDK SPI和DubboSPI的区别?
      1. 扩展点增加了缓存
      2. 增加了IOC功能
      3. 增加了通过key获取扩展点的方式
    6. Dubbo的集群容错方案有哪些?
      1. 失败重试
      2. 快速失败
      3. 失败安全
      4. XXX
    7. dubbo 支持哪些通信协议?支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的?
      1. 支持的通讯协议
        1. dubbo
        2. hession
        3. rmi
        4. http
        5. webserivce
      2. 支持的序列化协议
        1. hession
        2. java 二进制序列化
        3. json
        4. SOAP协议
      3. 为什么protobuf是效率最高的?
        1. 使用了proto编译器,自动进行序列化和反序列化,效率是json和xml的20~100倍。
        2. 数据压缩后体积小,节约带宽。

    必读:

    1. Dubbo中SPI扩展机制详解
    2. ExtensionLoader类
    3. 聊聊Dubbo(五):核心源码-SPI扩展

    面试必备:Dubbo - 图1