精华内容
下载资源
问答
  • java微服务面试题
    2021-06-29 19:44:14

    1、您对微服务有何了解?
    2、微服务架构有哪些优势?
    3。微服务有哪些特点?
    4、设计微服务的最佳实践是什么?
    5、微服务架构如何运作?
    6、微服务架构的优缺点是什么?
    7、单片,SOA 和微服务架构有什么区别?
    8、在使用微服务架构时,您面临哪些挑战?
    9、SOA 和微服务架构之间的主要区别是什么?
    10、微服务有什么特点?
    11、什么是领域驱动设计?
    12、为什么需要域驱动设计(DDD)?
    13、什么是无所不在的语言?
    14、什么是凝聚力?
    15、什么是耦合?
    16、什么是 REST / RESTful 以及它的用途是什么?
    17、你对 Spring Boot 有什么了解?
    18、什么是 Spring 引导的执行器?
    19、什么是 Spring Cloud?
    20、Spring Cloud 解决了哪些问题?
    21、在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?
    22。你能否给出关于休息和微服务的要点?
    23、什么是不同类型的微服务测试?
    24、您对 Distributed Transaction 有何了解?
    25、什么是 Idempotence 以及它在哪里使用?
    26、什么是有界上下文?
    27、什么是双因素身份验证?
    28、双因素身份验证的凭据类型有哪些?
    29、什么是客户证书?
    30、PACT 在微服务架构中的用途是什么?
    31、什么是 OAuth?
    32、康威定律是什么?
    33、合同测试你懂什么?
    34、什么是端到端微服务测试?
    35、Container 在微服务中的用途是什么?
    36、什么是微服务架构中的 DRY?
    37、什么是消费者驱动的合同(CDC)?
    38、Web,RESTful API 在微服务中的作用是什么?
    39、您对微服务架构中的语义监控有何了解?
    40、我们如何进行跨功能测试?
    41、我们如何在测试中消除非决定论?
    42、Mock 或 Stub 有什么区别?
    43、您对 Mike Cohn 的测试金字塔了解多少?
    44、Docker 的目的是什么?
    45、什么是金丝雀释放?
    46、什么是持续集成(CI)?
    47、什么是持续监测?
    48、架构师在微服务架构中的角色是什么?
    49、我们可以用微服务创建状态机吗?
    50、什么是微服务中的反应性扩展?

    文件:590m.com/f/25127180-500868715-6e35d3(访问密码:551685)

    以下内容无关:

    -------------------------------------------分割线---------------------------------------------

    一、现状
    Vue框架在前端开发中应用广泛,当一个多人开发的Vue项目经过长期维护之后往往会沉淀出很多的公共组件,这个时候经常会出现一个人 开发了一个组件而其他维护者或新接手的人却不知道这个组件是做什么的、该怎么用,还必须得再去翻看源码,或者压根就没注意到这个组件 的存在导致重复开发。这个时候就非常需要维护对应的组件文档来保障不同开发者之间良好的协作关系了。

    但是传统的手动维护文档又会带来新问题:

    效率低,写文档是个费时费力的体力活,好不容易抽时间把组件开发完了回头还要写文档,想想都头大。

    易出错,文档内容容易出现差错,可能与实际组件内容不一致。

    不智能,组件更新迭代的同时,需要手动将变更同步到文档中,消耗时间还容易遗漏。

    而理想中的文档维护方式则是:

    工作量小,能够结合Vue组件自动获取相关信息,减少从头开始写文档的工作量。

    信息准确,组件的关键信息与组件内容一致,不出错。

    智能同步,Vue组件迭代升级时,文档内容可以自动的同步更新,无需人工校验信息是否一致。

    二、社区解决方案
    2.1 业务梳理
    为了能实现上述理想效果,我搜索并研究了一下社区中的解决方案,目前Vue官方提供了Vue-press可以用于快速搭建Vue项目文档, 而且也已经有了可以自动从Vue组件中提取信息的库了。

    但是已有的第三方库并不能完全满足需求,主要存在以下两个问题:

    信息不全面,一些重要内容无法获取例如不能处理v-model,不能解析属性的修饰符sync,不能获取methods中函数入参的详细信息等。

    比如下面的例子,value属性与input事件可以合起来构成一个v-model属性,但是这个信息在生成的文档中没有体现出来,要文档读者自行理解判断。而且生成的文档中没有展示是否支持sync。

    有较多的自定义标识,而且标识的命名过于个性化,对原有的代码侵入还是比较大的。例如下图中的代码,为了标记注释,需要在原有的 业务代码中额外添加"@vuese" "@arg"等标识,使得业务代码多出了一些业务无关内容。

    三、技术方案
    针对以上文中提到的问题以及社区方案的不足,我们团队内沉淀出了一个小工具专门用于Vue组件信息获取并输出组件文档,大致效果如下:

    上图中左边是一个常见的Vue单文件组件,右边是生成的文档。我们可以看到我们从组件中成功的提取到了以下一些信息:

    组件的名称。

    组件的说明。

    props,slot,event,methods等。

    组件的注释内容。

    接下来我们将详细的讲解如何从组件中提取这些信息。

    3.1 Vue文件解析
    既然是要从Vue组件中提取信息,那么首先的问题就是如何解析Vue组件。Vue官方开发了Vue-template-compiler库专门用于Vue解析, 这里我们也可以用同样的方式来处理。通过查阅文档可知Vue-template-compiler提供了一个parseComponent方法可以对原始的Vue文件进行处理。

    import { parseComponent } from ‘Vue-template-compiler’
    const result = parseComponent(VueFileContent, [options])
    处理后的结果如下,其中template和script分别对应Vue文件中的template和script的文本内容。

    export interface SFCDescriptor {
    template: SFCBlock | undefined;
    script: SFCBlock | undefined;
    styles: SFCBlock[];
    customBlocks: SFCBlock[];
    }
    当然仅仅是得到文本是不够的,还需要对文本进行更进一步的处理来获取更多的信息。得到script后,我们可以用babel把js编译成js的AST(抽象语法树),这个AST是一个普通的js对象,可以通过js进行遍历和读取 有了Ast之后我们就可以从中获取到我们想到详细的组件信息了。

    import { parse } from ‘@babel/parser’;
    const jsAst = parse(script, [options]);
    接着我们来看template,继续查找Vue-template-compiler的文档我们找到compile方法,compile是专门用于将template编译成AST的, 正好可以满足需求。

    import { compile } from ‘Vue-template-compiler’
    const templateAst = compile(template, [options]);
    得到结果中的ast则为template的编译结果。

    export interface CompiledResult {
    ast: ASTElement,
    render: string,
    staticRenderFns: Array,
    errors: Array
    }
    通过第一步的文件解析工作,我们成功获取到了Vue的模板ast和script中的js的AST,下一步我们就可以从中获取我们想要的信息了。

    3.2 信息提取
    根据是否需要约定,信息可以分为两种:

    一种是可以直接从Vue组件中获取,例如props、events等。

    另一种是需要额外约定格式的,例如:组件的说明注释,props的属性说明等,这部分可以放到注释里,通过对注释进行解析获取。

    为了方便的从ast中读取信息,这里先简单介绍一个工具@babel/traverse,这个库是babel官方提供的专门用于遍历js AST的。使用方式如下;

    import traverse from ‘@babel/traverse’

    traverse(jsAst, options);
    通过在options中配置对应内容的回调函数,可以获得想要的ast节点。具体的使用可以参考官方文档

    3.2.1 可直接获取的信息
    可以从代码中直接获取的信息可以有效的解决信息同步问题,无论代码怎么变动,文档的关键信息都可以自动同步,省去了人工校对的麻烦。

    可以直接获取的信息有:

    组件属性props

    提供外部调用的方法methods

    事件events

    插槽slots

    1、2都可以利用traverse在js AST上直接遍历名称为props和methods的对象节点获取。

    事件的获取稍微麻烦一点,可以通过查找 e m i t 函 数 来 定 位 到 事 件 的 位 置 , 而 emit函数来定位到事件的位置,而 emitemit函数可以在traverse中监听MemberExpress(复杂类型节点), 然后通过节点上的属性名是否是’ e m i t ′ 判 断 是 否 是 事 件 。 如 果 是 事 件 , 那 么 在 emit'判断是否是事件。如果是事件,那么在 emitemit父级中读取arguments字段, arguments的第一个元素就是事件名称,后面的元素为事件传参。

    this.KaTeX parse error: Expected '}', got 'EOF' at end of input: …erty.name === 'emit’) {
    // 第一个元素是事件名称
    const eventName = Node.parent.arguments[0];
    }
    }
    });
    在成功获取到Events后,那么结合Events和props,就可以进一步的判断出props中的两个特殊属性:

    是否存在v-model:查找props中是否存在value属性并且Events中是否存在input事件来确定。

    props的某个属性是否支持sync:判断Events的时间名中是否存在有update开头的事件,并且事件名称与属性名相同。

    插槽slots的信息保存在上文的template的AST中,递归遍历template AST找到名为slots的节点,进而还可以在节点上查找到name。

    3.2.2 需要约定的信息
    为什么除了可直接获取的组件信息之外,还会需要额外的约定一部分内容呢?其一是因为可直接获取的信息内容比较单薄,还不足以支撑起一个相对完善的组件文档;其二是我们日常开发组件时本身就会写很多的注释,如果能直接将部分注释提取出来放到文档中,可以大大降低文档维护的工作量;

    整理一下可以约定的内容有以下几条:

    组件名称。

    组件的整体介绍。

    props、Events、methods、slots文字说明。

    Methods标记和入参的详细说明。这些内容都可以放在注释中进行维护,之所以放在注释中进行维护是因为注释可以很容易从上文提到的js AST以及template AST中获取到, 在我们解析Vue组件信息的同时就可以把这部分针对性的说明一起解析到。

    接下来我们着重讲解如何将提取注释和注释与被注释的内容是如何对应起来的。

    js中的注释根据位置不同可以分为头部注释(leadingComments)和尾部注释(trailingComments),不同位置的注释会存放在对应的字段中, 代码展示如下:

    // 头部注释export default {} // 尾部注释
    解析结果

    const exportNode = {
    type: “ExportDefaultDeclaration”,
    leadingComments: [{
    type: ‘CommentLine’,
    value: ‘头部注释’
    }],
    trailingComments: [{
    type: ‘CommentLine’,
    value: ‘尾部注释’
    }]
    }
    在同一个位置上,根据注释格式的不同又分为单行注释(CommentLine)和块级注释(CommentBlock),两种注释的区别会反应在注释节点的type字段中:

    /**

    • 块级注释
      */
      // 单行注释
      export default {}
      解析结果

    const exportNode = {
    type: “ExportDefaultDeclaration”,
    leadingComments: [
    {
    type: ‘CommentBlock’,
    value: ‘块级注释’
    },
    {
    type: ‘CommentLine’,
    value: ‘单行注释’
    }
    ]
    }
    另外,从上面的解析结果我们也可以看到,注释节点是挂载在被注释的export节点里面的,这也解决我们上面提到的另一个问题:注释与被注释的关联关系怎么获取的–其实babel在编译代码的时候已经替我们做好了。

    template查找注释与被注释内容的方法不同。template中注释节点与其他节点一样是作为dom节点存在的, 在遍历节点的时候通过判断isComment字段的值是否为true来确定是否是注释节点。而被注释的内容的位置在兄弟节点的后一位:

    被注释的节点
    解析结果

    const templateAst = [
    {
    isComment: true,
    text: “template的注释”,
    type: 3
    },
    {
    tag: “slot”,
    type: 1
    }
    ]
    知道了如何处理注释内容,那么我们还可以利用注释做更多的事情。例如可以通过在methods的方法的注释中约定一个标记@public来区分是私有方法还是公共方法,如果更细节一点的话, 还可以参考另一个专门用于解析js注释的库js-doc的格式,对方法的入参进行更进一步的说明,丰富文档的内容。

    我们只需要在获取到注释内容之后对文本进行切割读取即可,例如:

    export default {
    methods: {
    /**
    * @public
    * @param {boolean} value 入参说明
    */
    show(value) {}
    }
    }
    当然了为了避免对代码侵入过多,我们还是需要尽量少的添加额外的标识。而入参说明采用了与js-doc相同的格式,主要还是因为这套方案 使用比较普遍,而且代码编辑器都自动支持方便编辑。

    更多相关内容
  • Java微服务面试题

    2019-02-28 09:52:04
    1、该文档描述微服务架构划分 2、描述MQ、hystrix链路追踪 3、数据库MySQL集群、redis等 4、Java多线程等
  • 下面要给大家分享的是java微服务面试题以及答案,一起来看一看吧。一、面试题及答案1、微服务是什么?答案:微服务架构是一种架构模式,但是,又可以说成是一种架构风格,微服务架构提倡将单一应用程序划分成一组小的...

    一般的情况之下java微服务面试都会问些什么问题呢?面试题又是怎样的?下面要给大家分享的是java微服务面试题以及答案,一起来看一看吧。

    一、面试题及答案

    1、微服务是什么?

    答案:微服务架构是一种架构模式,但是,又可以说成是一种架构风格,微服务架构提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程当中,服务之间相互配合、相互协调,为用户提供最的终价值。

    具体的大家可以通过下面的文章来进行了解-微服务是什么?微服务主要优势是什么?

    2、微服务之间是怎样进行通讯的?

    (1)远程过程调用:直接通过远程过程调用来访问别的service。

    (2)消息:使用异步消息来做服务间的通信。

    3、springcloud和dubbo的区别是什么?

    (1)springcloud和dubbo都能够实现RPC远程调用框架,能够实现服务治理。

    (2)SpringCloud功能较为强大,它整合了分布式常用解决方案遇到了问题注册中心Eureka、负载均衡器Ribbon

    ,客户端调用工具Rest和Feign,分布式配置中心Config,服务保护Hystrix,网关Zuul Gateway

    ,服务链路Zipkin,消息总线Bus等。

    Dubbo内部实现功能比SpringCloud要弱,Dubbo只实现服务治理。

    4、微服务的优点是什么?缺点是什么?

    (1)微服务优点

    f2a263b87b0275b3271738655a1d411e.png

    (2)微服务缺点

    9a53f8739bd6967b94d38fb4d8d558eb.png

    5、你知道哪些微服务技术栈?

    (1)服务配置与管理:阿里-Diamond....

    (2)服务开发:SpringMVC、Springboot、Spring

    (3)服务调用:gRPC、Rest、RPC

    (4)服务注册和发现:Zookeeper、Eureka、Consul等等

    (5)事件消息总线:Spring Cloud Bus

    (6)消息队列:RabbitMQ、Kafka、ActiveMQ等等

    (7)服务配置中心管理:Chef、SpringCloudConfig等等

    (8)服务路由(API网关):Zuul等

    (9)服务监控:Metrics、Zabbix、Spectator、Nagios等等

    .........

    6、SpringCloud Config分布式配置中心是什么?

    SpringCloud

    Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为每一个不同微服务应用的所有环境提供了一个中心化的外部配置。

    微服务面试题目和答案就给大家分享到这里了,你还想了解更多的面试题吗?可以继续关注本站来了解哦。

    推荐阅读:

    展开全文
  • 【Java面试系列】Java微服务面试题

    万次阅读 2020-05-01 10:01:05
    1.微服务 面试题 1、您对微服务有何了解? 2、微服务架构有哪些优势? 3。微服务有哪些特点? 4、设计微服务的最佳实践是什么? 5、微服务架构如何运作? 6、微服务架构的优缺点是什么? 7、单片,SOA 和...

    热门系列:


    目录

    1.微服务 面试题

    2.微服务 面试题解析

        1、您对微服务有何了解?

        2、微服务架构有哪些优势?

        3、微服务有哪些特点?

        4、设计微服务的最佳实践是什么?

        5、微服务架构如何运作?

        6、微服务架构的优缺点是什么?

        7、单片,SOA 和微服务架构有什么区别?

        8、在使用微服务架构时,您面临哪些挑战?

        9、SOA 和微服务架构之间的主要区别是什么?

        10、微服务有什么特点?

        11、什么是领域驱动设计?

        12、为什么需要域驱动设计(DDD)?

        13、什么是无所不在的语言?

        14、什么是凝聚力?

        15、什么是耦合?

        16、什么是 REST / RESTful 以及它的用途是什么?

        17、你对 Spring Boot 有什么了解?

        18、什么是 Spring 引导的执行器?

        19、什么是 Spring Cloud?

        20、Spring Cloud 解决了哪些问题?

        21、在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?

        22、你能否给出关于微服务的要点?

        23、什么是不同类型的微服务测试?

        24、您对 Distributed Transaction 有何了解?

        25、什么是 Idempotence 以及它在哪里使用?

        26、什么是有界上下文?

        27、什么是双因素身份验证?

        28、双因素身份验证的凭据类型有哪些?

        29、什么是客户证书?

        30、PACT 在微服务架构中的用途是什么?

        31、什么是 OAuth?

        32、康威定律是什么?

        33、合同测试你懂什么?

        34、什么是端到端微服务测试?

        35、Container 在微服务中的用途是什么?

        36、什么是微服务架构中的 DRY?

        37、什么是消费者驱动的合同(CDC)?

        38、Web,RESTful API 在微服务中的作用是什么?

        39、您对微服务架构中的语义监控有何了解?

        40、我们如何进行跨功能测试?

        41、我们如何在测试中消除非决定论?

        42、Mock 或 Stub 有什么区别?

        43、您对 Mike Cohn 的测试金字塔了解多少?

        44、Docker 的目的是什么?

        45、什么是金丝雀释放?

        46、什么是持续集成(CI)?

        47、什么是持续监测?

        48、架构师在微服务架构中的角色是什么?

        49、我们可以用微服务创建状态机吗?

        50、什么是微服务中的反应性扩展?


    1.微服务 面试题

    1、您对微服务有何了解?

    2、微服务架构有哪些优势?

    3。微服务有哪些特点?

    4、设计微服务的最佳实践是什么?

    5、微服务架构如何运作?

    6、微服务架构的优缺点是什么?

    7、单片,SOA 和微服务架构有什么区别?

    8、在使用微服务架构时,您面临哪些挑战?

    9、SOA 和微服务架构之间的主要区别是什么?

    10、微服务有什么特点?

    11、什么是领域驱动设计?

    12、为什么需要域驱动设计(DDD)?

    13、什么是无所不在的语言?

    14、什么是凝聚力?

    15、什么是耦合?

    16、什么是 REST / RESTful 以及它的用途是什么?

    17、你对 Spring Boot 有什么了解?

    18、什么是 Spring 引导的执行器?

    19、什么是 Spring Cloud?

    20、Spring Cloud 解决了哪些问题?

    21、在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?

    22。你能否给出关于休息和微服务的要点?

    23、什么是不同类型的微服务测试?

    24、您对 Distributed Transaction 有何了解?

    25、什么是 Idempotence 以及它在哪里使用?

    26、什么是有界上下文?

    27、什么是双因素身份验证?

    28、双因素身份验证的凭据类型有哪些?

    29、什么是客户证书?

    30、PACT 在微服务架构中的用途是什么?

    31、什么是 OAuth?

    32、康威定律是什么?

    33、合同测试你懂什么?

    34、什么是端到端微服务测试?

    35、Container 在微服务中的用途是什么?

    36、什么是微服务架构中的 DRY?

    37、什么是消费者驱动的合同(CDC)?

    38、Web,RESTful API 在微服务中的作用是什么?

    39、您对微服务架构中的语义监控有何了解?

    40、我们如何进行跨功能测试?

    41、我们如何在测试中消除非决定论?

    42、Mock 或 Stub 有什么区别?

    43、您对 Mike Cohn 的测试金字塔了解多少?

    44、Docker 的目的是什么?

    45、什么是金丝雀释放?

    46、什么是持续集成(CI)?

    47、什么是持续监测?

    48、架构师在微服务架构中的角色是什么?

    49、我们可以用微服务创建状态机吗?

    50、什么是微服务中的反应性扩展?


    2.微服务 面试题解析

    1、您对微服务有何了解?

    微服务,又称微服务 架 构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。

    通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们最初从使用各种材料的小部分开始,并继续从中构建一个大型蜂箱。这些细胞形成图案,产生坚固的结构,将蜂窝的特定部分固定在一起。这里,每个细胞独立于另一个细胞,但它也与其他细胞相关。这意味着对一个细胞的损害不会损害其他细胞,因此,蜜蜂可以在不影响完整蜂箱的情况下重建这些细胞。

    图 1:微服务的蜂窝表示 – 微服务访谈问题

    请参考上图。这里,每个六边形形状代表单独的服务组件。与蜜蜂的工作类似,每个敏捷团队都使用可用的框架和所选的技术堆栈构建单独的服务组件。就像在蜂箱中一样,每个服务组件形成一个强大的微服务架构,以提供更好的可扩展性。此外,敏捷团队可以单独处理每个服务组件的问题,而对整个应用程序没有影响或影响最小。

     

    2、微服务架构有哪些优势?

    图 2:微服务的 优点 – 微服务访谈问题

    · 独立开发 – 所有微服务都可以根据各自的功能轻松开发

    · 独立部署 – 基于其服务,可以在任何应用程序中单独部署它们

    · 故障隔离 – 即使应用程序的一项服务不起作用,系统仍可继续运行

    · 混合技术堆栈 – 可以使用不同的语言和技术来构建同一应用程序的不同服务

    · 粒度缩放 – 单个组件可根据需要进行缩放,无需将所有组件缩放在一起

     

    3、微服务有哪些特点?

    图 3:微服务的 特点 – 微服务访谈问题

    · 解耦 – 系统内的服务很大程度上是分离的。因此,整个应用程序可以轻松构建,更改和扩展

    · 组件化 – 微服务被视为可以轻松更换和升级的独立组件

    · 业务能力 – 微服务非常简单,专注于单一功能

    · 自治 – 开发人员和团队可以彼此独立工作,从而提高速度

    · 持续交付 – 通过软件创建,测试和批准的系统自动化,允许频繁发布软件

    · 责任 – 微服务不关注应用程序作为项目。相反,他们将应用程序视为他们负责的产品

    · 分散治理 – 重点是使用正确的工具来做正确的工作。这意味着没有标准化模式或任何技术模式。开发人员可以自由选择最有用的工具来解决他们的问题

    · 敏捷 – 微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃

     

    4、设计微服务的最佳实践是什么?

    以下是设计微服务的最佳实践:

    图 4:设计微服务的最佳实践 – 微服务访谈问题

     

    5、微服务架构如何运作?

    微服务架构具有以下组件:

    图 5:微服务 架构 – 微服务面试问题

    · 客户端 – 来自不同设备的不同用户发送请求。

    · 身份提供商 – 验证用户或客户身份并颁发安全令牌。

    · API 网关 – 处理客户端请求。

    · 静态内容 – 容纳系统的所有内容。

    · 管理 – 在节点上平衡服务并识别故障。

    · 服务发现 – 查找微服务之间通信路径的指南。

    · 内容交付网络 – 代理服务器及其数据中心的分布式网络。

    · 远程服务 – 启用驻留在 IT 设备网络上的远程访问信息。

     

    6、微服务架构的优缺点是什么?

     

    7、单片,SOA 和微服务架构有什么区别?

    图 6: 单片 SOA 和微服务之间的比较 – 微服务访谈问题

    · 单片架构类似于大容器,其中应用程序的所有软件组件组装在一起并紧密封装。

    · 一个面向服务的架构是一种相互通信服务的集合。通信可以涉及简单的数据传递,也可以涉及两个或多个协调某些活动的服务。

    · 微服务架构是一种架构风格,它将应用程序构建为以业务域为模型的小型自治服务集合。

     

    8、在使用微服务架构时,您面临哪些挑战?

    开发一些较小的微服务听起来很容易,但开发它们时经常遇到的挑战如下。

    · 自动化组件:难以自动化,因为有许多较小的组件。因此,对于每个组件,我们必须遵循 Build,Deploy 和 Monitor 的各个阶段。

    · 易感性:将大量组件维护在一起变得难以部署,维护,监控和识别问题。它需要在所有组件周围具有很好的感知能力。

    · 配置管理:有时在各种环境中维护组件的配置变得困难。

    · 调试:很难找到错误的每一项服务。维护集中式日志记录和仪表板以调试问题至关重要。

     

    9、SOA 和微服务架构之间的主要区别是什么?

    SOA 和微服务之间的主要区别如下:

     

    10、微服务有什么特点?

    您可以列出微服务的特征,如下所示:

    图 7:微服务的特征 – 微服务访谈问题

     

    11、什么是领域驱动设计?

    图 8: DDD 原理 – 微服务面试问题

     

    12、为什么需要域驱动设计(DDD)?

    图 9:我们需要 DDD 的因素 – 微服务面试问题

     

    13、什么是无所不在的语言?

    如果您必须定义泛在语言(UL),那么它是特定域的开发人员和用户使用的通用语言,通过该语言可以轻松解释域。

    无处不在的语言必须非常清晰,以便它将所有团队成员放在同一页面上,并以机器可以理解的方式进行翻译。

     

    14、什么是凝聚力?

    模块内部元素所属的程度被认为是凝聚力。

     

    15、什么是耦合?

    组件之间依赖关系强度的度量被认为是耦合。一个好的设计总是被认为具有高内聚力和低耦合性。

     

    16、什么是 REST / RESTful 以及它的用途是什么?

    Representational State Transfer(REST)/ RESTful Web 服务是一种帮助计算机系统通过 Internet 进行通信的架构风格。这使得微服务更容易理解和实现。

    微服务可以使用或不使用 RESTful API 实现,但使用 RESTful API 构建松散耦合的微服务总是更容易。

     

    17、你对 Spring Boot 有什么了解?

    事实上,随着新功能的增加,弹簧变得越来越复杂。如果必须启动新的 spring 项目,则必须添加构建路径或添加 maven 依赖项,配置应用程序服务器,添加 spring配置。所以一切都必须从头开始。

    Spring Boot 是解决这个问题的方法。使用 spring boot 可以避免所有样板代码和配置。因此,基本上认为自己就好像你正在烘烤蛋糕一样,春天就像制作蛋糕所需的成分一样,弹簧靴就是你手中的完整蛋糕。

    图 10: Spring Boot 的因素 – 微服务面试问题

     

    18、什么是 Spring 引导的执行器?

    Spring Boot 执行程序提供了 restful Web 服务,以访问生产环境中运行应用程序的当前状态。在执行器的帮助下,您可以检查各种指标并监控您的应用程序。

     

    19、什么是 Spring Cloud?

    根据 Spring Cloud 的官方网站,Spring Cloud 为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,领导选举,分布式会话,集群状态)。

     

    20、Spring Cloud 解决了哪些问题?

    在使用 Spring Boot 开发分布式微服务时,我们面临的问题很少由 Spring Cloud解决。

    · 与分布式系统相关的复杂性 – 包括网络问题,延迟开销,带宽问题,安全问题。

    · 处理服务发现的能力 – 服务发现允许集群中的进程和服务找到彼此并进行通信。

    · 解决冗余问题 – 冗余问题经常发生在分布式系统中。

    · 负载平衡 – 改进跨多个计算资源(例如计算机集群,网络链接,中央处理单元)的工作负载分布。

    · 减少性能问题 – 减少因各种操作开销导致的性能问题。

     

    21、在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?

    在测试目标只关注 Spring MVC 组件的情况下,WebMvcTest 注释用于单元测试Spring MVC 应用程序。在上面显示的快照中,我们只想启动 ToTestController。执行此单元测试时,不会启动所有其他控制器和映射。

     

    22、你能否给出关于微服务的要点?

    虽然您可以通过多种方式实现微服务,但 REST over HTTP 是实现微服务的一种方式。REST 还可用于其他应用程序,如 Web 应用程序,API 设计和 MVC 应用程序,以提供业务数据。

    微服务是一种体系结构,其中系统的所有组件都被放入单独的组件中,这些组件可以单独构建,部署和扩展。微服务的某些原则和最佳实践有助于构建弹性应用程序。

    简而言之,您可以说 REST 是构建微服务的媒介。

     

    23、什么是不同类型的微服务测试?

    在使用微服务时,由于有多个微服务协同工作,测试变得非常复杂。因此,测试分为不同的级别。

    · 在底层,我们有面向技术的测试,如单元测试和性能测试。这些是完全自动化的。

    · 在中间层面,我们进行了诸如压力测试和可用性测试之类的探索性测试。

    · 在顶层, 我们的 验收测试数量很少。这些验收测试有助于利益相关者理解和验证软件功能。

     

    24、您对 Distributed Transaction 有何了解?

    分布式事务是指单个事件导致两个或多个不能以原子方式提交的单独数据源的突变的任何情况。在微服务的世界中,它变得更加复杂,因为每个服务都是一个工作单元,并且大多数时候多个服务必须协同工作才能使业务成功。

     

    25、什么是 Idempotence 以及它在哪里使用?

    幂等性是能够以这样的方式做两次事情的特性,即最终结果将保持不变,即好像它只做了一次。

    用法:在远程服务或数据源中使用 Idempotence,这样当它多次接收指令时,它只处理指令一次。

     

    26、什么是有界上下文?

    有界上下文是域驱动设计的核心模式。DDD 战略设计部门的重点是处理大型模型和团队。DDD 通过将大型模型划分为不同的有界上下文并明确其相互关系来处理大型模型。

     

    27、什么是双因素身份验证?

    双因素身份验证为帐户登录过程启用第二级身份验证。

    图 11: 双因素认证的表示 – 微服务访谈问题

    因此,假设用户必须只输入用户名和密码,那么这被认为是单因素身份验证。

     

    28、双因素身份验证的凭据类型有哪些?

    这三种凭证是:

    图 12: 双因素认证的证书类型 – 微服务面试问题

     

    29、什么是客户证书?

    客户端系统用于向远程服务器发出经过身份验证的请求的一种数字证书称为客户端证书。客户端证书在许多相互认证设计中起着非常重要的作用,为请求者的身份提供了强有力的保证。

     

    30、PACT 在微服务架构中的用途是什么?

    PACT 是一个开源工具,允许测试服务提供者和消费者之间的交互,与合同隔离,从而提高微服务集成的可靠性。

    微服务中的用法

    · 用于在微服务中实现消费者驱动的合同。

    · 测试微服务的消费者和提供者之间的消费者驱动的合同。

    查看即将到来的批次

     

    31、什么是 OAuth?

    OAuth 代表开放授权协议。这允许通过在 HTTP 服务上启用客户端应用程序(例如第三方提供商 Facebook,GitHub 等)来访问资源所有者的资源。因此,您可以在不使用其凭据的情况下与另一个站点共享存储在一个站点上的资源。

     

    32、康威定律是什么?

    “任 何 设 计 系 统 的 组 织 ( 广 泛 定 义 ) 都 将 产 生 一 种 设 计 , 其 结 构 是 组 织 通 信 结 构的 副 本 。” – Mel Conway

    图 13: Conway 定律的表示 – 微服务访谈问题

    该法律基本上试图传达这样一个事实:为了使软件模块起作用,整个团队应该进行良好的沟通。因此,系统的结构反映了产生它的组织的社会边界。

     

    33、合同测试你懂什么?

    根据 Martin Flower 的说法,合同测试是在外部服务边界进行的测试,用于验证其是否符合消费服务预期的合同。

    此外,合同测试不会深入测试服务的行为。更确切地说,它测试该服务调用的输入&输出包含所需的属性和所述响应延迟,吞吐量是允许的限度内。

     

    34、什么是端到端微服务测试?

    端到端测试验证了工作流中的每个流程都正常运行。这可确保系统作为一个整体协同工作并满足所有要求。

    通俗地说,你可以说端到端测试是一种测试,在特定时期后测试所有东西。

    图 14:测试层次 – 微服务面试问题

     

    35、Container 在微服务中的用途是什么?

    容器是管理基于微服务的应用程序以便单独开发和部署它们的好方法。您可以将微服务封装在容器映像及其依赖项中,然后可以使用它来滚动按需实例的微服务,而无需任何额外的工作。

    图 15: 容器的表示及其在微服务中的使用方式 – 微服务访谈问题

     

    36、什么是微服务架构中的 DRY?

    DRY 代表不要重复自己。它基本上促进了重用代码的概念。这导致开发和共享库,这反过来导致紧密耦合。

     

    37、什么是消费者驱动的合同(CDC)?

    这基本上是用于开发微服务的模式,以便它们可以被外部系统使用。当我们处理微服务时,有一个特定的提供者构建它,并且有一个或多个使用微服务的消费者。

    通常,提供程序在 XML 文档中指定接口。但在消费者驱动的合同中,每个服务消费者都传达了提供商期望的接口。

     

    38、Web,RESTful API 在微服务中的作用是什么?

    微服务架构基于一个概念,其中所有服务应该能够彼此交互以构建业务功能。因此,要实现这一点,每个微服务必须具有接口。这使得 Web API 成为微服务的一个非常重要的推动者。RESTful API 基于 Web 的开放网络原则,为构建微服务架构的各个组件之间的接口提供了最合理的模型。

     

    39、您对微服务架构中的语义监控有何了解?

    语义监控,也称为 综合监控, 将自动化测试与监控应用程序相结合,以检测业务失败因素。

     

    40、我们如何进行跨功能测试?

    跨功能测试是对非功能性需求的验证,即那些无法像普通功能那样实现的需求。

     

    41、我们如何在测试中消除非决定论?

    非确定性测试(NDT)基本上是不可靠的测试。所以,有时可能会发生它们通过,显然有时它们也可能会失败。当它们失败时,它们会重新运行通过。

    从测试中删除非确定性的一些方法如下:

    1、 隔离

    2、 异步

    3、 远程服务

    4、 隔离

    5、 时间

    6、 资源泄漏

     

    42、Mock 或 Stub 有什么区别?

    存根

    · 一个有助于运行测试的虚拟对象。

    · 在某些可以硬编码的条件下提供固定行为。

    · 永远不会测试存根的任何其他行为。

    例如,对于空堆栈,您可以创建一个只为 empty()方法 返回 true 的存根。因此,这并不关心堆栈中是否存在元素。

    嘲笑

    · 一个虚拟对象,其中最初设置了某些属性。

    · 此对象的行为取决于 set 属性。

    · 也可以测试对象的行为。

    例如,对于 Customer 对象,您可以通过设置名称和年龄来模拟它。您可以将 age设置为 12,然后测试 isAdult()方法,该方法将在年龄大于 18 时返回 true。因此,您的 Mock Customer 对象适用于指定的条件。

     

    43、您对 Mike Cohn 的测试金字塔了解多少?

    Mike Cohn 提供了一个名为 Test Pyramid 的模型。这描述了软件开发所需的自动化测试类型。

    图 16: Mike Cohn 的测试金字塔 – 微服务面试问题

    根据金字塔,第一层的测试数量应该最高。在服务层,测试次数应小于单元测试级别,但应大于端到端级别。

     

    44、Docker 的目的是什么?

    Docker 提供了一个可用于托管任何应用程序的容器环境。在此,软件应用程序和支持它的依赖项紧密打包在一起。

    因此,这个打包的产品被称为 Container,因为它是由 Docker 完成的,所以它被称为 Docker 容器!

     

    45、什么是金丝雀释放?

    Canary Releasing 是一种降低在生产中引入新软件版本的风险的技术。这是通过将变更缓慢地推广到一小部分用户,然后将其发布到整个基础架构,即将其提供给每个人来完成的。

     

    46、什么是持续集成(CI)?

    持续集成(CI)是每次团队成员提交版本控制更改时自动构建和测试代码的过程。这鼓励开发人员通过在每个小任务完成后将更改合并到共享版本控制存储库来共享代码和单元测试。

     

    47、什么是持续监测?

    持续监控深入监控覆盖范围,从浏览器内前端性能指标,到应用程序性能,再到主机虚拟化基础架构指标。

     

    48、架构师在微服务架构中的角色是什么?

    微服务架构中的架构师扮演以下角色:

    · 决定整个软件系统的布局。

    · 帮助确定组件的分区。因此,他们确保组件相互粘合,但不紧密耦合。

    · 与开发人员共同编写代码,了解日常生活中面临的挑战。

    · 为开发微服务的团队提供某些工具和技术的建议。

    · 提供技术治理,以便技术开发团队遵循微服务原则。

     

    49、我们可以用微服务创建状态机吗?

    我们知道拥有自己的数据库的每个微服务都是一个可独立部署的程序单元,这反过来又让我们可以创建一个状态机。因此,我们可以为特定的微服务指定不同的状态和事件。

    例如,我们可以定义 Order 微服务。订单可以具有不同的状态。Order 状态的转换可以是 Order 微服务中的独立事件。

     

    50、什么是微服务中的反应性扩展?

    Reactive Extensions 也称为 Rx。这是一种设计方法,我们通过调用多个服务来收集结果,然后编译组合响应。这些调用可以是同步或异步,阻塞或非阻塞。Rx是分布式系统中非常流行的工具,与传统流程相反。

     

    本内容由个人从参考资料收集而来,可能有不准确的地方,还请各位多多指正,谢谢!

    以下还有更多一线学习资料(2T),关注我的公众号,免费领取,如:

    以上资料,都是我个人平时收集而来,有网盘存储,长期有效!有兴趣的同学,可以扫码关注我的个人公众号:时代名猿,回复关键字:wyzl ,领取一线资料!

     

     

    展开全文
  • 85道Java微服务面试题整理(助力2020面试)

    万次阅读 多人点赞 2020-02-10 20:43:42
    微服务 面试题 1、您对微服务有何了解? 2、微服务架构有哪些优势? 3。微服务有哪些特点? 4、设计微服务的最佳实践是什么? 5、微服务架构如何运作? 6、微服务架构的优缺点是什么? 7、单片,SOA 和微服务...

    微服务 面试题

    1、您对微服务有何了解?

    2、微服务架构有哪些优势?

    3。微服务有哪些特点?

    4、设计微服务的最佳实践是什么?

    5、微服务架构如何运作?

    6、微服务架构的优缺点是什么?

    7、单片,SOA 和微服务架构有什么区别?

    8、在使用微服务架构时,您面临哪些挑战?

    9、SOA 和微服务架构之间的主要区别是什么?

    10、微服务有什么特点?

    11、什么是领域驱动设计?

    12、为什么需要域驱动设计(DDD)?

    13、什么是无所不在的语言?

    14、什么是凝聚力?

    15、什么是耦合?

    16、什么是 REST / RESTful 以及它的用途是什么?

    17、你对 Spring Boot 有什么了解?

    18、什么是 Spring 引导的执行器?

    19、什么是 Spring Cloud?

    20、Spring Cloud 解决了哪些问题?

    21、在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?

    22。你能否给出关于休息和微服务的要点?

    23、什么是不同类型的微服务测试?

    24、您对 Distributed Transaction 有何了解?

    25、什么是 Idempotence 以及它在哪里使用?

    26、什么是有界上下文?

    27、什么是双因素身份验证?

    28、双因素身份验证的凭据类型有哪些?

    29、什么是客户证书?

    30、PACT 在微服务架构中的用途是什么?

    31、什么是 OAuth?

    32、康威定律是什么?

    33、合同测试你懂什么?

    34、什么是端到端微服务测试?

    35、Container 在微服务中的用途是什么?

    36、什么是微服务架构中的 DRY?

    37、什么是消费者驱动的合同(CDC)?

    38、Web,RESTful API 在微服务中的作用是什么?

    39、您对微服务架构中的语义监控有何了解?

    40、我们如何进行跨功能测试?

    41、我们如何在测试中消除非决定论?

    42、Mock 或 Stub 有什么区别?

    43、您对 Mike Cohn 的测试金字塔了解多少?

    44、Docker 的目的是什么?

    45、什么是金丝雀释放?

    46、什么是持续集成(CI)?

    47、什么是持续监测?

    48、架构师在微服务架构中的角色是什么?

    49、我们可以用微服务创建状态机吗?

    50、什么是微服务中的反应性扩展?

    1、您对微服务有何了解?

    微服务,又称微服务 架 构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。

    通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们最初从使用各种材料的小部分开始,并继续从中构建一个大型蜂箱。这些细胞形成图案,产生坚固的结构,将蜂窝的特定部分固定在一起。这里,每个细胞独立于另一个细胞,但它也与其他细胞相关。这意味着对一个细胞的损害不会损害其他细胞,因此,蜜蜂可以在不影响完整蜂箱的情况下重建这些细胞。

    图 1:微服务的蜂窝表示 – 微服务访谈问题

    请参考上图。这里,每个六边形形状代表单独的服务组件。与蜜蜂的工作类似,每个敏捷团队都使用可用的框架和所选的技术堆栈构建单独的服务组件。就像在蜂箱中一样,每个服务组件形成一个强大的微服务架构,以提供更好的可扩展性。此外,敏捷团队可以单独处理每个服务组件的问题,而对整个应用程序没有影响或影响最小。

    2、微服务架构有哪些优势?

    图 2:微服务的 优点 – 微服务访谈问题

    · 独立开发 – 所有微服务都可以根据各自的功能轻松开发

    · 独立部署 – 基于其服务,可以在任何应用程序中单独部署它们

    · 故障隔离 – 即使应用程序的一项服务不起作用,系统仍可继续运行

    · 混合技术堆栈 – 可以使用不同的语言和技术来构建同一应用程序的不同服务

    · 粒度缩放 – 单个组件可根据需要进行缩放,无需将所有组件缩放在一起

    3、微服务有哪些特点?

    图 3:微服务的 特点 – 微服务访谈问题

    · 解耦 – 系统内的服务很大程度上是分离的。因此,整个应用程序可以轻松构建,更改和扩展

    · 组件化 – 微服务被视为可以轻松更换和升级的独立组件

    · 业务能力 – 微服务非常简单,专注于单一功能

    · 自治 – 开发人员和团队可以彼此独立工作,从而提高速度

    · 持续交付 – 通过软件创建,测试和批准的系统自动化,允许频繁发布软件

    · 责任 – 微服务不关注应用程序作为项目。相反,他们将应用程序视为他们负责的产品

    · 分散治理 – 重点是使用正确的工具来做正确的工作。这意味着没有标准化模式或任何技术模式。开发人员可以自由选择最有用的工具来解决他们的问题

    · 敏捷 – 微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃

    4、设计微服务的最佳实践是什么?

    以下是设计微服务的最佳实践:

    图 4:设计微服务的最佳实践 – 微服务访谈问题

    5、微服务架构如何运作?

    微服务架构具有以下组件:

    图 5:微服务 架构 – 微服务面试问题

    · 客户端 – 来自不同设备的不同用户发送请求。

    · 身份提供商 – 验证用户或客户身份并颁发安全令牌。

    · API 网关 – 处理客户端请求。

    · 静态内容 – 容纳系统的所有内容。

    · 管理 – 在节点上平衡服务并识别故障。

    · 服务发现 – 查找微服务之间通信路径的指南。

    · 内容交付网络 – 代理服务器及其数据中心的分布式网络。

    · 远程服务 – 启用驻留在 IT 设备网络上的远程访问信息。

    6、微服务架构的优缺点是什么?

    7、单片,SOA 和微服务架构有什么区别?

    图 6: 单片 SOA 和微服务之间的比较 – 微服务访谈问题

    · 单片架构类似于大容器,其中应用程序的所有软件组件组装在一起并紧密封装。

    · 一个面向服务的架构是一种相互通信服务的集合。通信可以涉及简单的数据传递,也可以涉及两个或多个协调某些活动的服务。

    · 微服务架构是一种架构风格,它将应用程序构建为以业务域为模型的小型自治服务集合。

    8、在使用微服务架构时,您面临哪些挑战?

    开发一些较小的微服务听起来很容易,但开发它们时经常遇到的挑战如下。

    · 自动化组件:难以自动化,因为有许多较小的组件。因此,对于每个组件,我们必须遵循 Build,Deploy 和 Monitor 的各个阶段。

    · 易感性:将大量组件维护在一起变得难以部署,维护,监控和识别问题。它需要在所有组件周围具有很好的感知能力。

    · 配置管理:有时在各种环境中维护组件的配置变得困难。

    · 调试:很难找到错误的每一项服务。维护集中式日志记录和仪表板以调试问题至关重要。

    9、SOA 和微服务架构之间的主要区别是什么?

    SOA 和微服务之间的主要区别如下:

    10、微服务有什么特点?

    您可以列出微服务的特征,如下所示:

    图 7:微服务的特征 – 微服务访谈问题

    11、什么是领域驱动设计?

    图 8: DDD 原理 – 微服务面试问题

    12、为什么需要域驱动设计(DDD)?

    图 9:我们需要 DDD 的因素 – 微服务面试问题

    13、什么是无所不在的语言?

    如果您必须定义泛在语言(UL),那么它是特定域的开发人员和用户使用的通用语言,通过该语言可以轻松解释域。

    无处不在的语言必须非常清晰,以便它将所有团队成员放在同一页面上,并以机器可以理解的方式进行翻译。

    14、什么是凝聚力?

    模块内部元素所属的程度被认为是凝聚力。

    15、什么是耦合?

    组件之间依赖关系强度的度量被认为是耦合。一个好的设计总是被认为具有高内聚力和低耦合性。

    16、什么是 REST / RESTful 以及它的用途是什么?

    Representational State Transfer(REST)/ RESTful Web 服务是一种帮助计算机系统通过 Internet 进行通信的架构风格。这使得微服务更容易理解和实现。

    微服务可以使用或不使用 RESTful API 实现,但使用 RESTful API 构建松散耦合的微服务总是更容易。

    17、你对 Spring Boot 有什么了解?

    事实上,随着新功能的增加,弹簧变得越来越复杂。如果必须启动新的 spring 项目,则必须添加构建路径或添加 maven 依赖项,配置应用程序服务器,添加 spring配置。所以一切都必须从头开始。

    Spring Boot 是解决这个问题的方法。使用 spring boot 可以避免所有样板代码和配置。因此,基本上认为自己就好像你正在烘烤蛋糕一样,春天就像制作蛋糕所需的成分一样,弹簧靴就是你手中的完整蛋糕。

    图 10: Spring Boot 的因素 – 微服务面试问题

    18、什么是 Spring 引导的执行器?

    Spring Boot 执行程序提供了 restful Web 服务,以访问生产环境中运行应用程序的当前状态。在执行器的帮助下,您可以检查各种指标并监控您的应用程序。

    19、什么是 Spring Cloud?

    根据 Spring Cloud 的官方网站,Spring Cloud 为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,领导选举,分布式会话,集群状态)。

    20、Spring Cloud 解决了哪些问题?

    在使用 Spring Boot 开发分布式微服务时,我们面临的问题很少由 Spring Cloud解决。

    · 与分布式系统相关的复杂性 – 包括网络问题,延迟开销,带宽问题,安全问题。

    · 处理服务发现的能力 – 服务发现允许集群中的进程和服务找到彼此并进行通信。

    · 解决冗余问题 – 冗余问题经常发生在分布式系统中。

    · 负载平衡 – 改进跨多个计算资源(例如计算机集群,网络链接,中央处理单元)的工作负载分布。

    · 减少性能问题 – 减少因各种操作开销导致的性能问题。

    21、在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?

    在测试目标只关注 Spring MVC 组件的情况下,WebMvcTest 注释用于单元测试Spring MVC 应用程序。在上面显示的快照中,我们只想启动 ToTestController。执行此单元测试时,不会启动所有其他控制器和映射。

    22、你能否给出关于休息和微服务的要点?

    虽然您可以通过多种方式实现微服务,但 REST over HTTP 是实现微服务的一种方式。REST 还可用于其他应用程序,如 Web 应用程序,API 设计和 MVC 应用程序,以提供业务数据。

    微服务是一种体系结构,其中系统的所有组件都被放入单独的组件中,这些组件可以单独构建,部署和扩展。微服务的某些原则和最佳实践有助于构建弹性应用程序。

    简而言之,您可以说 REST 是构建微服务的媒介。

    23、什么是不同类型的微服务测试?

    在使用微服务时,由于有多个微服务协同工作,测试变得非常复杂。因此,测试分为不同的级别。

    · 在底层,我们有面向技术的测试,如单元测试和性能测试。这些是完全自动化的。

    · 在中间层面,我们进行了诸如压力测试和可用性测试之类的探索性测试。

    · 在顶层, 我们的 验收测试数量很少。这些验收测试有助于利益相关者理解和验证软件功能。

    24、您对 Distributed Transaction 有何了解?

    分布式事务是指单个事件导致两个或多个不能以原子方式提交的单独数据源的突变的任何情况。在微服务的世界中,它变得更加复杂,因为每个服务都是一个工作单元,并且大多数时候多个服务必须协同工作才能使业务成功。

    25、什么是 Idempotence 以及它在哪里使用?

    幂等性是能够以这样的方式做两次事情的特性,即最终结果将保持不变,即好像它只做了一次。

    用法:在远程服务或数据源中使用 Idempotence,这样当它多次接收指令时,它只处理指令一次。

    26、什么是有界上下文?

    有界上下文是域驱动设计的核心模式。DDD 战略设计部门的重点是处理大型模型和团队。DDD 通过将大型模型划分为不同的有界上下文并明确其相互关系来处理大型模型。

    27、什么是双因素身份验证?

    双因素身份验证为帐户登录过程启用第二级身份验证。

    图 11: 双因素认证的表示 – 微服务访谈问题

    因此,假设用户必须只输入用户名和密码,那么这被认为是单因素身份验证。

    28、双因素身份验证的凭据类型有哪些?

    这三种凭证是:

    图 12: 双因素认证的证书类型 – 微服务面试问题

    29、什么是客户证书?

    客户端系统用于向远程服务器发出经过身份验证的请求的一种数字证书称为客户端证书。客户端证书在许多相互认证设计中起着非常重要的作用,为请求者的身份提供了强有力的保证。

    30、PACT 在微服务架构中的用途是什么?

    PACT 是一个开源工具,允许测试服务提供者和消费者之间的交互,与合同隔离,从而提高微服务集成的可靠性。

    微服务中的用法

    · 用于在微服务中实现消费者驱动的合同。

    · 测试微服务的消费者和提供者之间的消费者驱动的合同。

    查看即将到来的批次

    31、什么是 OAuth?

    OAuth 代表开放授权协议。这允许通过在 HTTP 服务上启用客户端应用程序(例如第三方提供商 Facebook,GitHub 等)来访问资源所有者的资源。因此,您可以在不使用其凭据的情况下与另一个站点共享存储在一个站点上的资源。

    32、康威定律是什么?

    “任 何 设 计 系 统 的 组 织 ( 广 泛 定 义 ) 都 将 产 生 一 种 设 计 , 其 结 构 是 组 织 通 信 结 构的 副 本 。” – Mel Conway

    图 13: Conway 定律的表示 – 微服务访谈问题

    该法律基本上试图传达这样一个事实:为了使软件模块起作用,整个团队应该进行良好的沟通。因此,系统的结构反映了产生它的组织的社会边界。

    33、合同测试你懂什么?

    根据 Martin Flower 的说法,合同测试是在外部服务边界进行的测试,用于验证其是否符合消费服务预期的合同。

    此外,合同测试不会深入测试服务的行为。更确切地说,它测试该服务调用的输入&输出包含所需的属性和所述响应延迟,吞吐量是允许的限度内。

    34、什么是端到端微服务测试?

    端到端测试验证了工作流中的每个流程都正常运行。这可确保系统作为一个整体协同工作并满足所有要求。

    通俗地说,你可以说端到端测试是一种测试,在特定时期后测试所有东西。

    图 14:测试层次 – 微服务面试问题

    35、Container 在微服务中的用途是什么?

    容器是管理基于微服务的应用程序以便单独开发和部署它们的好方法。您可以将微服务封装在容器映像及其依赖项中,然后可以使用它来滚动按需实例的微服务,而无需任何额外的工作。

    图 15: 容器的表示及其在微服务中的使用方式 – 微服务访谈问题

    36、什么是微服务架构中的 DRY?

    DRY 代表不要重复自己。它基本上促进了重用代码的概念。这导致开发和共享库,这反过来导致紧密耦合。

    37、什么是消费者驱动的合同(CDC)?

    这基本上是用于开发微服务的模式,以便它们可以被外部系统使用。当我们处理微服务时,有一个特定的提供者构建它,并且有一个或多个使用微服务的消费者。

    通常,提供程序在 XML 文档中指定接口。但在消费者驱动的合同中,每个服务消费者都传达了提供商期望的接口。

    38、Web,RESTful API 在微服务中的作用是什么?

    微服务架构基于一个概念,其中所有服务应该能够彼此交互以构建业务功能。因此,要实现这一点,每个微服务必须具有接口。这使得 Web API 成为微服务的一个非常重要的推动者。RESTful API 基于 Web 的开放网络原则,为构建微服务架构的各个组件之间的接口提供了最合理的模型。

    39、您对微服务架构中的语义监控有何了解?

    语义监控,也称为 综合监控, 将自动化测试与监控应用程序相结合,以检测业务失败因素。

    40、我们如何进行跨功能测试?

    跨功能测试是对非功能性需求的验证,即那些无法像普通功能那样实现的需求。

    41、我们如何在测试中消除非决定论?

    非确定性测试(NDT)基本上是不可靠的测试。所以,有时可能会发生它们通过,显然有时它们也可能会失败。当它们失败时,它们会重新运行通过。

    从测试中删除非确定性的一些方法如下:

    1、 隔离

    2、 异步

    3、 远程服务

    4、 隔离

    5、 时间

    6、 资源泄漏

    42、Mock 或 Stub 有什么区别?

    存根

    · 一个有助于运行测试的虚拟对象。

    · 在某些可以硬编码的条件下提供固定行为。

    · 永远不会测试存根的任何其他行为。

    例如,对于空堆栈,您可以创建一个只为 empty()方法 返回 true 的存根。因此,这并不关心堆栈中是否存在元素。

    嘲笑

    · 一个虚拟对象,其中最初设置了某些属性。

    · 此对象的行为取决于 set 属性。

    · 也可以测试对象的行为。

    例如,对于 Customer 对象,您可以通过设置名称和年龄来模拟它。您可以将 age设置为 12,然后测试 isAdult()方法,该方法将在年龄大于 18 时返回 true。因此,您的 Mock Customer 对象适用于指定的条件。

    43、您对 Mike Cohn 的测试金字塔了解多少?

    Mike Cohn 提供了一个名为 Test Pyramid 的模型。这描述了软件开发所需的自动化测试类型。

    图 16: Mike Cohn 的测试金字塔 – 微服务面试问题

    根据金字塔,第一层的测试数量应该最高。在服务层,测试次数应小于单元测试级别,但应大于端到端级别。

    44、Docker 的目的是什么?

    Docker 提供了一个可用于托管任何应用程序的容器环境。在此,软件应用程序和支持它的依赖项紧密打包在一起。

    因此,这个打包的产品被称为 Container,因为它是由 Docker 完成的,所以它被称为 Docker 容器!

    45、什么是金丝雀释放?

    Canary Releasing 是一种降低在生产中引入新软件版本的风险的技术。这是通过将变更缓慢地推广到一小部分用户,然后将其发布到整个基础架构,即将其提供给每个人来完成的。

    46、什么是持续集成(CI)?

    持续集成(CI)是每次团队成员提交版本控制更改时自动构建和测试代码的过程。这鼓励开发人员通过在每个小任务完成后将更改合并到共享版本控制存储库来共享代码和单元测试。

    47、什么是持续监测?

    持续监控深入监控覆盖范围,从浏览器内前端性能指标,到应用程序性能,再到主机虚拟化基础架构指标。

    48、架构师在微服务架构中的角色是什么?

    微服务架构中的架构师扮演以下角色:

    · 决定整个软件系统的布局。

    · 帮助确定组件的分区。因此,他们确保组件相互粘合,但不紧密耦合。

    · 与开发人员共同编写代码,了解日常生活中面临的挑战。

    · 为开发微服务的团队提供某些工具和技术的建议。

    · 提供技术治理,以便技术开发团队遵循微服务原则。

    49、我们可以用微服务创建状态机吗?

    我们知道拥有自己的数据库的每个微服务都是一个可独立部署的程序单元,这反过来又让我们可以创建一个状态机。因此,我们可以为特定的微服务指定不同的状态和事件。

    例如,我们可以定义 Order 微服务。订单可以具有不同的状态。Order 状态的转换可以是 Order 微服务中的独立事件。

    50、什么是微服务中的反应性扩展?

    Reactive Extensions 也称为 Rx。这是一种设计方法,我们通过调用多个服务来收集结果,然后编译组合响应。这些调用可以是同步或异步,阻塞或非阻塞。Rx是分布式系统中非常流行的工具,与传统流程相反。

    SpringCloud面试

    1、什么是 Spring Cloud?

    Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。

    2、使用 Spring Cloud 有什么优势?

    使用 Spring Boot 开发分布式微服务时,我们面临以下问题

    (1)与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。

    (2)服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。

    (3)冗余-分布式系统中的冗余问题。

    (4)负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。

    (5)性能-问题 由于各种运营开销导致的性能问题。

    (6)部署复杂性-Devops 技能的要求。

    3、服务注册和发现是什么意思?Spring Cloud 如何实现?

    当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。 Eureka 服务注册和发现可以在这种情况下提供帮助。由于所有服务都在 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找,因此无需处理服务地点的任何更改和处理。

    4、Spring Cloud 和dubbo区别?

    (1)服务调用方式 dubbo是RPC springcloud Rest Api

    (2)注册中心,dubbo 是zookeeper springcloud是eureka,也可以是zookeeper

    (3)服务网关,dubbo本身没有实现,只能通过其他第三方技术整合,springcloud有Zuul路由网关,作为路由服务器,进行消费者的请求分发,springcloud支持断路器,与git完美集成配置文件支持版本控制,事物总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素。

    5、SpringBoot和SpringCloud的区别?

    SpringBoot专注于快速方便的开发单个个体微服务。

    SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,

    为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务

    SpringBoot可以离开SpringCloud独立使用开发项目, 但是SpringCloud离不开SpringBoot ,属于依赖的关系.

    SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。

    6、负载平衡的意义什么?

    在计算中,负载平衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程。

    7、什么是 Hystrix?它如何实现容错?

    Hystrix 是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性。

    通常对于使用微服务架构开发的系统,涉及到许多微服务。这些微服务彼此协作。

    思考以下微服务

    假设如果上图中的微服务 9 失败了,那么使用传统方法我们将传播一个异常。但这仍然会导致整个系统崩溃。

    随着微服务数量的增加,这个问题变得更加复杂。微服务的数量可以高达 1000.这是 hystrix 出现的地方 我们将使用 Hystrix 在这种情况下的 Fallback 方法功能。我们有两个服务 employee-consumer 使用由 employee-consumer 公开的服务。

    简化图如下所示

    现在假设由于某种原因,employee-producer 公开的服务会抛出异常。我们在这种情况下使用 Hystrix 定义了一个回退方法。这种后备方法应该具有与公开服务相同的返回类型。如果暴露服务中出现异常,则回退方法将返回一些值。

    8、什么是 Hystrix 断路器?我们需要它吗?

    由于某些原因,employee-consumer 公开服务会引发异常。在这种情况下使用Hystrix 我们定义了一个回退方法。如果在公开服务中发生异常,则回退方法返回一些默认值。

    如果 firstPage method() 中的异常继续发生,则 Hystrix 电路将中断,并且员工使用者将一起跳过 firtsPage 方法,并直接调用回退方法。 断路器的目的是给第一页方法或第一页方法可能调用的其他方法留出时间,并导致异常恢复。可能发生的情况是,在负载较小的情况下,导致异常的问题有更好的恢复机会 。

    9、什么是 Netflix Feign?它的优点是什么?

    Feign 是受到 Retrofit,JAXRS-2.0 和 WebSocket 启发的 java 客户端联编程序。

    Feign 的第一个目标是将约束分母的复杂性统一到 http apis,而不考虑其稳定性。

    在 employee-consumer 的例子中,我们使用了 employee-producer 使用 REST模板公开的 REST 服务。

    但是我们必须编写大量代码才能执行以下步骤

    (1)使用功能区进行负载平衡。

    (2)获取服务实例,然后获取基本 URL。

    (3)利用 REST 模板来使用服务。 前面的代码如下

    @Controller
    public class ConsumerControllerClient {
        @Autowired
        private LoadBalancerClient loadBalancer;
        public void getEmployee() throws RestClientException, IOException {
            ServiceInstance serviceInstance=loadBalancer.choose("employee-producer");
            System.out.println(serviceInstance.getUri());
            String baseUrl=serviceInstance.getUri().toString();
            baseUrl=baseUrl+"/employee";
            RestTemplate restTemplate = new RestTemplate();
            ResponseEntity<String> response=null;
            try{
                response=restTemplate.exchange(baseUrl,
                            HttpMethod.GET, getHeaders(),String.class);
            }
            catch (Exception ex)
                {
                System.out.println(ex);
            }
            System.out.println(response.getBody());
        }

    之前的代码,有像 NullPointer 这样的例外的机会,并不是最优的。我们将看到如何使用 Netflix Feign 使呼叫变得更加轻松和清洁。如果 Netflix Ribbon 依赖关系也在类路径中,那么 Feign 默认也会负责负载平衡。

    10、什么是 Spring Cloud Bus?我们需要它吗?

    考虑以下情况:我们有多个应用程序使用 Spring Cloud Config 读取属性,而Spring Cloud Config 从 GIT 读取这些属性。

    下面的例子中多个员工生产者模块从 Employee Config Module 获取 Eureka 注册的财产。

    如果假设 GIT 中的 Eureka 注册属性更改为指向另一台 Eureka 服务器,会发生什么情况。在这种情况下,我们将不得不重新启动服务以获取更新的属性。

    还有另一种使用执行器端点/刷新的方式。但是我们将不得不为每个模块单独调用这个 url。例如,如果 Employee Producer1 部署在端口 8080 上,则调用 http:// localhost:8080 / refresh。同样对于 Employee Producer2 http://localhost:8081 / refresh 等等。这又很麻烦。这就是 Spring Cloud Bus 发挥作用的地方。

    Spring Cloud Bus 提供了跨多个实例刷新配置的功能。因此,在上面的示例中,如果我们刷新 Employee Producer1,则会自动刷新所有其他必需的模块。如果我们有多个微服务启动并运行,这特别有用。这是通过将所有微服务连接到单个消息代理来实现的。无论何时刷新实例,此事件都会订阅到侦听此代理的所有微服务,并且它们也会刷新。可以通过使用端点/总线/刷新来实现对任何单个实例的刷新。

    11.springcloud断路器的作用

    当一个服务调用另一个服务由于网络原因或自身原因出现问题,调用者就会等待被调用者的响应 当更多的服务请求到这些资源导致更多的请求等待,发生连锁效应(雪崩效应)

    断路器有完全打开状态:一段时间内 达到一定的次数无法调用 并且多次监测没有恢复的迹象 断路器完全打开 那么下次请求就不会请求到该服务

    半开:短时间内 有恢复迹象 断路器会将部分请求发给该服务,正常调用时 断路器关闭

    关闭:当服务一直处于正常状态 能正常调用

    12、什么是SpringCloudConfig?

    在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。

    使用:

    (1)添加pom依赖

    (2)配置文件添加相关配置

    (3)启动类添加注解@EnableConfigServer

    13、Spring Cloud Gateway?

    Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。

    使用了一个RouteLocatorBuilder的bean去创建路由,除了创建路由RouteLocatorBuilder可以让你添加各种predicates和filters,predicates断言的意思,顾名思义就是根据具体的请求的规则,由具体的route去处理,filters是各种过滤器,用来对请求做各种判断和修改。

    Spring Boot面试题

    1、什么是 Spring Boot?

    多年来,随着新功能的增加,spring 变得越来越复杂。访问spring官网页面,我们就会看到可以在我们的应用程序中使用的所有 Spring 项目的不同功能。如果必须启动一个新的 Spring 项目,我们必须添加构建路径或添加 Maven 依赖关系,配置应用程序服务器,添加 spring 配置。因此,开始一个新的 spring 项目需要很多努力,因为我们现在必须从头开始做所有事情。

    Spring Boot 是解决这个问题的方法。Spring Boot 已经建立在现有 spring 框架之上。使用 spring 启动,我们避免了之前我们必须做的所有样板代码和配置。因此,Spring Boot 可以帮助我们以最少的工作量,更加健壮地使用现有的 Spring功能。

    2、Spring Boot 有哪些优点?

    Spring Boot 的优点有:

    1、减少开发,测试时间和努力。

    2、使用 JavaConfig 有助于避免使用 XML。

    3、避免大量的 Maven 导入和各种版本冲突。

    4、提供意见发展方法。

    5、通过提供默认值快速开始开发。

    6、没有单独的 Web 服务器需要。这意味着你不再需要启动 Tomcat,Glassfish或其他任何东西。

    7、需要更少的配置 因为没有 web.xml 文件。只需添加用@ Configuration 注释的类,然后添加用@Bean 注释的方法,Spring 将自动加载对象并像以前一样对其进行管理。您甚至可以将@Autowired 添加到 bean 方法中,以使 Spring 自动装入需要的依赖关系中。

    8、基于环境的配置 使用这些属性,您可以将您正在使用的环境传递到应用程序:-Dspring.profiles.active = {enviornment}。在加载主应用程序属性文件后,Spring 将在(application{environment} .properties)中加载后续的应用程序属性文件。

    3、什么是 JavaConfig?

    Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯Java 方法。因此它有助于避免使用 XML 配置。使用 JavaConfig 的优点在于:

    (1)面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean 方法等。

    (2)减少或消除 XML 配置。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在 XML 和 Java 之间来回切换。JavaConfig 为开发人员提供了一种纯 Java 方法来配置与 XML 配置概念相似的 Spring 容器。从技术角度来讲,只使用 JavaConfig 配置类来配置容器是可行的,但实际上很多人认为将JavaConfig 与 XML 混合匹配是理想的。

    (3)类型安全和重构友好。JavaConfig 提供了一种类型安全的方法来配置 Spring容器。由于 Java 5.0 对泛型的支持,现在可以按类型而不是按名称检索 bean,不需要任何强制转换或基于字符串的查找。

    4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?

    这可以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat 将重新启动。Spring Boot 有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java 开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新加载 Spring Boot 上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot 在发布它的第一个版本时没有这个功能。这是开发人员最需要的功能。DevTools 模块完全满足开发人员的需求。该模块将在生产环境中被禁用。它还提供 H2 数据库控制台以更好地测试应用程序。

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>

    5、Spring Boot 中的监视器是什么?

    Spring boot actuator 是 spring 启动框架中的重要功能之一。Spring boot 监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为 HTTP URL 访问的REST 端点来检查状态。

    6、如何在 Spring Boot 中禁用 Actuator 端点安全性?

    默认情况下,所有敏感的 HTTP 端点都是安全的,只有具有 ACTUATOR 角色的用户才能访问它们。安全性是使用标准的 HttpServletRequest.isUserInRole 方法实施的。 我们可以使用来禁用安全性。只有在执行机构端点在防火墙后访问时,才建议禁用安全性。

    7、如何在自定义端口上运行 Spring Boot 应用程序?

    为了在自定义端口上运行 Spring Boot 应用程序,您可以在application.properties 中指定端口。server.port = 8090

    8、什么是 YAML?

    YAML 是一种人类可读的数据序列化语言。它通常用于配置文件。与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML 文件就更加结构化,而且更少混淆。可以看出 YAML 具有分层配置数据。

    9、如何实现 Spring Boot 应用程序的安全性?

    为了实现 Spring Boot 的安全性,我们使用 spring-boot-starter-security 依赖项,并且必须添加安全配置。它只需要很少的代码。配置类将必须扩展WebSecurityConfigurerAdapter 并覆盖其方法。

    10、如何集成 Spring Boot 和 ActiveMQ?

    对于集成 Spring Boot 和 ActiveMQ,我们使用依赖关系。 它只需要很少的配置,并且不需要样板代码。

    11、如何使用 Spring Boot 实现分页和排序?

    使用 Spring Boot 实现分页非常简单。使用 Spring Data-JPA 可以实现将可分页的传递给存储库方法。

    12、什么是 Swagger?你用 Spring Boot 实现了它吗?

    Swagger 广泛用于可视化 API,使用 Swagger UI 为前端开发人员提供在线沙箱。Swagger 是用于生成 RESTful Web 服务的可视化表示的工具,规范和完整框架实现。它使文档能够以与服务器相同的速度更新。当通过 Swagger 正确定义时,消费者可以使用最少量的实现逻辑来理解远程服务并与其进行交互。因此,Swagger消除了调用服务时的猜测。

    13、什么是 Spring Profiles?

    Spring Profiles 允许用户根据配置文件(dev,test,prod 等)来注册 bean。因此,当应用程序在开发中运行时,只有某些 bean 可以加载,而在 PRODUCTION中,某些其他 bean 可以加载。假设我们的要求是 Swagger 文档仅适用于 QA 环境,并且禁用所有其他文档。这可以使用配置文件来完成。Spring Boot 使得使用配置文件非常简单。

    14、什么是 Spring Batch?

    Spring Boot Batch 提供可重用的函数,这些函数在处理大量记录时非常重要,包括日志/跟踪,事务管理,作业处理统计信息,作业重新启动,跳过和资源管理。它还提供了更先进的技术服务和功能,通过优化和分区技术,可以实现极高批量和高性能批处理作业。简单以及复杂的大批量批处理作业可以高度可扩展的方式利用框架处理重要大量的信息。

    15、什么是 FreeMarker 模板?

    FreeMarker 是一个基于 Java 的模板引擎,最初专注于使用 MVC 软件架构进行动态网页生成。使用 Freemarker 的主要优点是表示层和业务层的完全分离。程序员可以处理应用程序代码,而设计人员可以处理 html 页面设计。最后使用freemarker 可以将这些结合起来,给出最终的输出页面。

    16、如何使用 Spring Boot 实现异常处理?

    Spring 提供了一种使用 ControllerAdvice 处理异常的非常有用的方法。 我们通过实现一个 ControlerAdvice 类,来处理控制器类抛出的所有异常。

    17、您使用了哪些 starter maven 依赖项?

    使用了下面的一些依赖项

    spring-boot-starter-activemq

    spring-boot-starter-security

    这有助于增加更少的依赖关系,并减少版本的冲突。

    18、什么是 CSRF 攻击?

    CSRF 代表跨站请求伪造。这是一种攻击,迫使最终用户在当前通过身份验证的Web 应用程序上执行不需要的操作。CSRF 攻击专门针对状态改变请求,而不是数据窃取,因为攻击者无法查看对伪造请求的响应。

    19、什么是 WebSockets?

    WebSocket 是一种计算机通信协议,通过单个 TCP 连接提供全双工通信信道。

    1、WebSocket 是双向的 -使用 WebSocket 客户端或服务器可以发起消息发送。

    2、WebSocket 是全双工的 -客户端和服务器通信是相互独立的。

    3、单个 TCP 连接 -初始连接使用 HTTP,然后将此连接升级到基于套接字的连接。然后这个单一连接用于所有未来的通信

    4、Light -与 http 相比,WebSocket 消息数据交换要轻得多。

    20、什么是 AOP?

    在软件开发过程中,跨越应用程序多个点的功能称为交叉问题。这些交叉问题与应用程序的主要业务逻辑不同。因此,将这些横切关注与业务逻辑分开是面向方面编程(AOP)的地方。

    21、什么是 Apache Kafka?

    Apache Kafka 是一个分布式发布 - 订阅消息系统。它是一个可扩展的,容错的发布 - 订阅消息系统,它使我们能够构建分布式应用程序。这是一个 Apache 顶级项目。Kafka 适合离线和在线消息消费。

    22、我们如何监视所有 Spring Boot 微服务?

    Spring Boot 提供监视器端点以监控各个微服务的度量。这些端点对于获取有关应用程序的信息(如它们是否已启动)以及它们的组件(如数据库等)是否正常运行很有帮助。但是,使用监视器的一个主要缺点或困难是,我们必须单独打开应用程序的知识点以了解其状态或健康状况。想象一下涉及 50 个应用程序的微服务,管理员将不得不击中所有 50 个应用程序的执行终端。为了帮助我们处理这种情况,我们将使用位于的开源项目。 它建立在 Spring Boot Actuator 之上,它提供了一个 Web UI,使我们能够可视化多个应用程序的度量。

    最后

    2019年常见的Java面试题总结了一份将近500页的pdf文档,欢迎关注我的公众号:程序员追风,领取这些整理的资料!

    喜欢文章记得关注我点个赞哟,感谢支持!

    展开全文
  • 这边整理了一些Java面试中常用到的微服务面试题,大家可以对照参考一下,希望对大家有所帮助!由于篇幅有限,这边只展示一部分,有需要完整版和更多面试资料的朋友可以点一点链接跳转领取:链接:点这里!!!暗号:...
  • 最新2020整理收集的一些面试题(都整理成文档),有很多干货,包含netty,spring,线程,spring cloud等详细讲解,也有详细的学习规划图,面试题整理等,我感觉在面试这块讲的非常清楚:获取面试资料只需:点击这里...
  • 微服务 面试题 1、您对微服务有何了解? 微服务,又称微服务 架 构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。 通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的...
  • 微服务可以使用或不使用 RESTful API 实现,但使用 RESTful API 构建松散耦合的微服务总是更容易。 17、你对 Spring Boot 有什么了解? 事实上,随着新功能的增加,弹簧变得越来越复杂。如果必须启动新的 spring ...
  • Java微服务2021面试题整理

    千次阅读 2021-02-25 22:43:02
    1、您对微服务有何了解? 微服务,又称微服务 架 构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。 通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们...
  • 微服务部分 相关概念 什么是集群 集群使将应用复制成多个相同的应用,一起来工作,从而提高工作能力。即将多个应用程序分散在不同的服务器,每个服务器都独立运行相同的代码。可以分散服务器压力解决高并发的问题...
  • Java微服务面试题

    2020-03-20 14:06:53
    1、您对微服务有何了解? 微服务,又称微服务 架 构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。 通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们...
  • 【面试题】-java分布式及微服务面试题汇总

    万次阅读 多人点赞 2019-05-06 16:35:38
    目录 1.CAP理论 2.BASE理论 3.接口的幂等性问题 4.消息中间件如何解决...10.Soa和微服务架构有哪些区别? 11.dubbo服务提供者,服务消费者需要配置哪些信息? 12.Dubbo有哪些负载均衡策略 13.Redis的持久化方式...
  • 文章目录微服务,又称微服务 架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。2、微服务架构有哪些优势?3、微服务有哪些特点?4、设计微服务的最佳实践是什么?5、微服务架构如何...
  • Spring 作为一个轻量级的 Java 开发框架,将面向接口的编程思想贯穿整个 Java 系统应用,因此在 Java 面试中常被提。本次介绍的主要是解析面试过程中如果从源码角度分析常见的问题。 1、不同版本的 Spring ...
  • 2019微服务面试题.pdf

    2019-09-26 20:19:42
    是一份知识点全面又能不断更新,与时俱进的学习手册,不仅收录了作者亲身面试遇到的问题,还收录了 面试时遇到的问题。我们会一直不断地更新和充实该宝典,同时也...的面试题,也许下一个版本就有你提供的面试题哦。
  • 这29个微服务面试题基本涵盖了方方面,希望对你有所帮助! 需要更详细的知识点介绍和更多的面试题资料,可以点一点下方链接免费领取 链接:1103806531暗号:CSDN 一、什么是Spring Cloud? 在微服务中,Spring...
  • Java面试题超详细整理《微服务篇》

    千次阅读 2021-08-11 22:33:02
    什么是微服务架构? 微服务框架是将某个应用程序开发划分为许多独立小型服务,实现敏捷开发和部署,这些服务一般围绕业务规则进行构建,可以用不同的语言开发,使用不同的数据存储,最终使得每个服务运行在自己的...
  • 微服务面试题

    千次阅读 2021-06-08 11:15:43
    目录一、什么微服务?二、微服务优缺点三、场景启动器的工作原理是什么?...JVM面试题 https://blog.csdn.net/qq_42697271/article/details/114156410 2 hibernate面试题 https://blog.csdn.net/qq_42697
  • Java微服务面试题整理

    2020-02-11 19:54:30
    微服务 面试题 1、您对微服务有何了解? 2、微服务架构有哪些优势? 3。微服务有哪些特点? 4、设计微服务的最佳实践是什么? 5、微服务架构如何运作? 6、微服务架构的优缺点是什么? 7、单片,SOA 和微服务...
  • 1:什么是微服务 微服务,又称微服务 架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。 通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们最初从使用...
  • 尚硅谷全套java面试题大全
  • 里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。 SOA与微服务的区别? 1、SOA SOA的提出是在企业计算领域,就是要将紧耦合的系统,划分为面向业务的,粗粒度,松耦合,无状态的服务。服务...
  • 不管你工作中是否真的是使用微服务架构,但是面试官肯定会问你,所以田哥给你整理一份微服务面试题。 话不多说,我们直入主题。 1. 什么是微服务? 单个轻量级服务一般为一个单独微服务,微服务讲究的是 专注...
  • 微服务面试题 - Spring Cloud

    千次阅读 2020-03-23 08:00:00
    点击上方“Java后端技术之路”,选择“置顶或者星标”与你一起成长微服务面试题一、Spring Cloud有哪些特点?Spring cloud 流应用程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,850
精华内容 15,140
关键字:

java微服务面试题

java 订阅