面试|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 面试题大全(持续更新中……)
文章图片

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.微服务的优缺点,在项目中踩过的坑
优点:
  • 服务内聚,一个服务干一件事
  • 易于与第三方集成
  • 低耦合
  • 开发效率高
缺点:
  • 运维难度增大
  • 服务间通信成本高
【面试|Spring 面试题大全(持续更新中……)】
16.eureka和zookeeper都是注册中心,区别是什么?
  1. zookeeper保证的是CP;eureka保证的是AP
  2. zookeeper的master节点宕机时,其他节点会重新选举leader,在选举期间整个zk不可用。eureka在一个节点挂掉后,会随机选取另一个节点,不过不能保证数据时效性。
  3. eureka有自我保护机制



    推荐阅读