• 面试题汇集


    记忆 阐明是什么,区分相同点不同点,  运用场景


    1.Spring,SpringMVC,SpringBoot,SpringCloud的区别

    1. spring是一个一站式的轻量级的java开发容器框架,核心是控制反转(IOC)和面向切面(AOP),针对于开发的WEB层(springMvc)、业务层(Ioc)、持久层(jdbcTemplate)等都提供了多种配置解决方案;

    2. springMvc是spring基础之上的一个MVC框架,主要处理web开发的路径映射和视图渲染,属于spring框架中WEB层开发的一部分;

    3. springBoot框架相对于springMvc框架来说,更专注于开发微服务后台接口,不开发前端视图,同时遵循默认优于配置,简化了插件配置流程,不需要配置xml,相对springmvc,大大简化了配置流程;

    4. springBoot使用了默认大于配置的理念,集成了快速开发的spring多个插件,同时自动过滤不需要配置的多余的插件,简化了项目的开发配置流程,一定程度上取消xml配置,是一套快速配置开发的脚手架,能快速开发单个微服务;

    5. spring cloud大部分的功能插件都是基于springBoot去实现的,springCloud关注于全局的微服务整合和管理,将多个springBoot单体微服务进行整合以及管理;  springCloud依赖于springBoot开发,而springBoot可以独立开发;


    2.介绍一下Spring框架的组成

    Spring 核心容器(Core):提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,她是工厂模式的实现。BeanFactory使用控制反转(Ioc)模式将应用程序的配置和依赖性规范与实际的应用代码程序分开。

    Spring AOP:通过配置管理特性,Spring AOP模块直接面向方面的编程功能集成到了Spring框架中,所以可以很容易的使Spring框架管理的任何对象支持 AOP。Spring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用Spring AOP,不用依赖于EJB组件,就可以将声明性事务管理集成到应用程序中。

    Spring ORM:Spring框架集成了若干ORM框架,从而提供了ORM的对象关系工具,其中包括 JDO、Hibernate、iBatis和TopLink。所有这些都遵从Spring的通用事务和DAO异常层结构。

    Spring DAO:JDBC DAO抽象层提供了有意义的异常层次的结构,可用该结构来管理异常处理和不同数据供应商抛出的异常错误信息。异常层次结构简化了错误处理,并且大大的降低 了需要编写的异常代码数量(例如,打开和关系连接)。Spring DAO的面向JDBC的异常遵从通用的DAO异常层结构。

    Spring WEB:Web上下文模块建立在上下文模块(Context)的基础之上,为基于Web服务的应用程序提供了上下文的服务。所以Spring框架支持 Jakarta Struts的集成。Web模块还简化了处理多部分请求及将请求参数绑定到域对象的工作。

    Spring上下文(Context):Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化校验和调度功能。

    Spring MVC:Spring的MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置的,MVC容纳的大量视图技术,包括JSP、Velocity、Tiles、iText和Pol


    3.说一下你对IOC的理解
    4.说一下你对AOP的理解
    5.BeanFactory和ApplicationContext有什么区别
    6. Spring的Bean被指定为singleton以及prototype有什么区别?
    7.Spring的Bean懒加载和非懒加载有什么区别
    8.Spring的依赖注入方式有哪些?
    9.有哪些方式可以注册一个Bean到容器中

    1.SpringBoot和SpringCloud的区别?

    SpringBoot+SpringCloud实现微服务开发。具体就是,SpringCloud具备微服务开发的核心技术:RPC远程调用技术;SpringBoot的web组件默认集成了SpringMVC,可以实现HTTP+JSON(Restfull)的轻量级传输,编写微服务接口,所以SpringCloud是依赖SpringBoot框架实现微服务开发

    2.SpringCloud常用组件和作用?

    ① Ribbon:客户端负载均衡,特性有区域亲和、重试机制。
    ② Hystrix:客户端容错保护,特性有服务降级、服务熔断、请求缓存、请求合并、依赖隔离。
    ③ Feign:声明式服务调用,本质上就是Ribbon+Hystrix。
    ④ Stream:消息驱动,有Sink、Source、Processor三种通道,特性有订阅发布、消费组、消息分区。
    ⑤ Bus:消息总线,配合Config仓库修改的一种Stream实现。
    ⑥ Sleuth:分布式服务追踪,需要搞清楚TraceID和SpanID以及抽样,如何与ELK整合。

    3.Eureka心跳和服务剔除机制是什么
    4.Eureka的服务注册与发现的工作流程
    5.对于CAP理论,Eureka选择的是AP还是CP?它保证了一致性还是可用性?
    6.说一下Eureka的自我保护
    7.说下Ribbon和Feign的区别?

    调用yml配置文件的方式

     ①

    在application.properties 里配置
    myapp.code.sms.length = 10
    使用配置:
    复制代码
      @Autowired
        private SecurityProperties securityProperties;
    
        @RequestMapping("/length")
        public @ResponseBody String length(){
            int length = securityProperties.getCode().getSms().getLength();
            return String.valueOf(length);
        }

    @ConfigurationProperties(prefix = "file.alicloud")




    @Value("${oauth2.resourceId}")
    使用条件
    (a) 在 application.properties(或.yaml)里配置相应值,比如想使用@Value("${a.b}"), 那么application里应该有:a.b=xxx
    (b) 使用@Value所在类必须是由spring管理的,比如加上@Configuration或@Component注解
    (c)使用的时候必须用spring 的自动注入,不能new
    (d) 不能用static或final修饰


    这两个注解都可以实现,对应下的数据用一个接收具有初始值
    private String resourceId;

    微服务间的调用方式

    RPC:

                  远程过程调用,像调用本地服务(方法)一样调用服务器的服务

                  支持同步、异步调用

          客户端和服务器之间建立TCP连接,可以一次建立一个,也可以多个调用复用一次链接(建立连接耗时)大公司多用RPC

                  PRC数据包小

                         protobuf

                         thrift

                  rpc:编解码,序列化,链接,丢包,协议(成本大)


     Rest(Http):

                  http请求,支持多种协议和功能

                  开发方便成本低

                  http数据包大

                  java开发:HttpClient,URLConnection


     
  • 相关阅读:
    Leetcode:169. 多数元素
    关系数据库
    数据库系统概述——简单总结
    Leetcode:1305. 两棵二叉搜索树中的所有元素
    Leetcode春季打卡第四天:994. 腐烂的橘子
    临界区和临界资源的关系
    线程2.线程的应用场景
    线程
    linux下的进程控制
    Go中的错误处理
  • 原文地址:https://www.cnblogs.com/china10/p/14635726.html
Copyright © 2020-2023  润新知