Spring 面试题大全(持续更新中……)

1.注入属性是都有哪些注解?

①@Autowired:最常用的注解,注入的是引用类型,根据byType自动注入,如果想要byName,可以搭配@Qualifier注解使用

②@Value:注入八大基本数据类型和String

③@Resource:相当于@Autowired根据,默认是根据byName自动注入(要求JDK1.6)

④@Reference:dubbo独有的注解

2.@RequestMapping和@RequestParam的区别

@RequestMapping是修饰方法或者类的,@RequestParam是修饰属性的

3.后台如何接受前端返回的JSON数据

如果是表单提交的话,可以通过request.getParameter()获取;其他的可以在后台的方法上加上@ResponseBody注解

spring没有内置转json的类,需要依赖三方jar包--jackson

4.说说Spring的两大核心内容

Spring的两大核心内容是IOC和AOP。

IOC是控制反转,创建和管理对象的事交给Spring容器来做,底层采用的是反射+工厂模式;默认是单例的,只创建一个bean实例,如果想要多例可以通过scope指定,IOC中有一个名词叫做DI(依赖注入),是为属性赋值的,DI有三种注入方式:构造器注入、setter注入、接口注入

AOP是面向切面编程,将业务逻辑代码与非业务逻辑代码(比如:日志、事务)分离,底层用的是动态代理模式,实现了代码复用,增强了代码可读性,主要应用有:日志输出、事务管理、权限拦截、性能检测

5.介绍一下SpringMVC

springMVC是spring下的表现层子框架,springMVC有一个核心控制器,所有的请求都会先发送到核心控制器这里,核心控制器在Tomcat启动时会创建并执行init函数,init函数会读被@Controller标注的类,将由@RequestMapping标注的方法的映射关系存放到HandlerMapping(处理器映射器)中,键放地址,值放方法,当前端发送来请求时,会由核心控制器发送到处理器映射器,通过地址执行相应的方法,并将结果返回给核心控制器做处理后,返回给用户。

Spring 面试题大全(持续更新中……)_第1张图片

6.过滤器(filter)与拦截器(Interceptor)的区别

  • 过滤器是基于servlet的,在web.xml里配置;拦截器是基于框架的,在mvc.xml里配置
  • 过滤器底层是回调函数;拦截器底层是反射机制
  • 过滤器对所有请求过滤;拦截器对controller请求过滤
  • 过滤器只被调用一次,拦截器被多次调用

7.@Value和@ConfigurationProperties的区别

  1. @ConfigurationProperties写在类上,其他的信息写在配置文件中;@Value写在属性上
  2. @ConfigurationProperties可以批量注入,传入的值是对象;@Value是一个一个注入,传入具体的属性
  3. @ConfigurationProperties支持松散绑定,对名字的要求没有那么严格(firstName first_name);@Value不支持松散绑定
  4. @ConfigurationProperties不支持spel;@Valuespel;@Value支持spel
  5. @ConfigurationProperties支持JSR303校验;@Valuespel;@Value不支持JSR303校验

8.SpringBoot与SpringCloud的区别

  • springboot相当于单个微服务,springcloud是将一个个单个微服务整合起来
  • springboot可以离开springcloud单独开发,springcloud离不开springboot,依赖关系
  • springboot专注开发单个个体微服务,springcloud关注全局服务治理框架

9.Spring的常用注解

  • @AutoWried
  • @Controller
  • @Service
  • @Configuration
  • @Component
  • @RequestMapping
  • @ResponseBody

10.Spring Bean生命周期

读取配置---定义bean---实例化---对象赋值---初始化---销毁

11.Spring的循环依赖

spring循环依赖是指2个以上对象相互拥有彼此,形成闭环。

spring是通过三级缓存来解决这个问题的。一级缓存存放初始化好的对象,二级缓存存放属性未填充的对象,三级缓存存放bean工厂。

12.Dubbo与SpringCloud的区别?

  1. springCloud采用rest方式;dubbo采用RPC方式
  2. springCloud的注册中心是eureka;dubbo的是zookeeper
  3. springCloud侧重于微服务一站式解决方案;dubbo的定位是一款RPC框架

13.Spring Cloud有哪些组件?

  1. 服务注册与发现  eureka
  2. 负载均衡  ribbon
  3. 网关  zuul
  4. 断路器  hystrix
  5. 安全  security
  6. 远程调用 feign

14.什么是服务熔断?什么是服务降级?

服务熔断是A服务调用B服务发现调用不通,就不在让A服务发起调用,避免“雪崩效应”

服务降级是A服务调用B服务,调用失败后访问callback中的降级方法

15.微服务的优缺点,在项目中踩过的坑

优点:

  • 服务内聚,一个服务干一件事
  • 易于与第三方集成
  • 低耦合
  • 开发效率高

缺点:

  • 运维难度增大
  • 服务间通信成本高

16.eureka和zookeeper都是注册中心,区别是什么?

  1. zookeeper保证的是CP;eureka保证的是AP
  2. zookeeper的master节点宕机时,其他节点会重新选举leader,在选举期间整个zk不可用。eureka在一个节点挂掉后,会随机选取另一个节点,不过不能保证数据时效性。
  3. eureka有自我保护机制

你可能感兴趣的:(面试,spring,java,面试)