springboor面试题
IT面试笔试题目及答案参考
   
    spring cloud面试题汇总及答案
    问题一:说一下spring cloud?
    Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
    Spring Cloud是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
    问题二:使用Spring Cloud有什么优势?
    使用Spring Boot开发分布式微服务时,我们面临以下问题:
    ①与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。
    ②服务发现-服务发现工具管理集中的流程和服务如何查和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查并连接到该目录中的服务。
    ③冗余-分布式系统中的冗余问题。
    ④负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集,网络链路,中央处理单元,或磁盘驱动器的分布。
    ⑤性能-问题 由于各种运营开销导致的性能问题。
    ⑥部署复杂性-Devops技能的要求。
    问题三:Spring Cloud的核心组件及其工作原理
    Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里;
    Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台;
    Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求;
    Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避开了服务雪崩的问题;
    Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务。
    问题四:服务注册和发现是什么意思?Spring Cloud如何实现?
    当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。
    Eureka服务注册和发现可以在这种情况下提供帮助。由于所有服务都在Eureka服务器上注册并通过调用Eureka服务器完成查,因此无需处理服务地点的任何更改和处理。
    问题五:负载平衡的意义什么?
    在计算中,负载平衡可以改善跨计算机,计算机集,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避开任何单一资源的过载。
    使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程。
    问题六:什么是Netflix Feign?它的优点是什么?
    Feign是受到Retrofit,JAXRS-2.0和WebSocket启发的java客户端联编程序。Feign的第一个目标是将约束分母的复杂性统一到http apis,而不考虑其稳定性。在employee-consumer的例子中,我们使用了employee-producer使用REST模板公开的REST服务。
    但是我们必须编写大量代码才能执行以下步骤
    ①使用功能区进行负载平衡。
    ②获取服务实例,然后获取基本URL。
    ③利用REST模板来使用服务。
    Tomcat面试题汇总及答案
    一、Tomcat 的缺省端口是多少,怎么修改?
    1)到 Tomcat 目录下的 conf 文件夹
    2)进入 conf 文件夹里面到 l 文件
    3)打开 l 文件
    4)在 l 文件里面到下列信息
    connector port=8080 connectiontimeout=20000 protocol=HTTP/1.1 p=
    redirectPort=8443 uriEncoding=utf-8/
    port=8080改成你想要的端口
    二、tomcat 有哪几种 Connector 运行模式(优化)?
    bio:传统的 Java I/O 操作,同步且阻塞 IO。maxThreads=”150”//Tomcat 使用线程来处理接收的每个请求。这个值表示
    Tomcat 可创建的最大的线程数。默认值 200。可以根据机器的时期性能和内存大小调整,一般可以在 400-500。最大可以在 800 左右。
    minSpareThreads=”25”—Tomcat 初始化时创建的线程数。默认值 4。如果当前没有空闲线程,且没有超过 maxThreads,一次性创建的空闲线程数量。
    Tomcat 初始化时创建的线程数量也由此值设置。maxSpareThreads=”75”–一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的 socket 线程。默认值 50。一旦创建的线程超过此数值,Tomcat 会关闭不再需要的线程。线程数可以大致上用 “同时在线人数每秒用户操作次数系统平均操作时间” 来计算。
    acceptCount=”100”—-指定当所有可以使用的处理请求的线程数都被使用 时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。默认值 10。如果当前可用线程数为 0,则将请求放入处理队列中。这个值限定了请求队列的大小,超过这个数值的请求将不予处理。connectionTimeout=”20000”–网络连接超时,默认值 20000,单位:毫秒。设置为 0 表示永不超时,这样设置有隐患的。通常可设置为 30000 毫秒。
    nio:JDK1.4 开始支持,同步阻塞或同步非阻塞 IO。指定使用 NIO 模型来接受 HTTP 请求
    protocol=”http11.Http11NioProtocol” 指定使用 NIO 模型来接受 HTTP 请求。默认是 BlockingIO,配置为 protocol=”HTTP/1.1” acceptorThreadCount=”2” 使用 NIO 模型时接收线程的数目
    aio(nio.2):JDK7 开始支持,异步非阻塞 IO。
    apr:Tomcat 将以 JNI 的形式调用 Apache HTTP 服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地 提高 Tomcat 对静态文件的处理性能。
    三、Tomcat 有几种部署方式?
    1)直接把 Web 项目放在 webapps 下,Tomcat 会自动将其部署
    2)在 l 文件上配置节点,设置相关的属性即可
    3)通过 Catalina 来进行配置:进入到 conf\Catalina\localhost 文件下,创建一个xml 文件,该文件的名字就是站点的名字。
    编写 XML 的方式来进行设置。
    四、tomcat 容器是如何创建 servlet 类实例?用到了什么原理?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。