面试题汇集

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


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


 
原文地址:https://www.cnblogs.com/china10/p/14635726.html