蚂蚁金服Java后端(一面)面试题
1.服务注册中心宕机了怎么办?说到服务注册中心可能首先想到的就是dubbo的zookeeper,spring cloud 的eureka,在服务注册中心宕机的时候,服务调用者仍然能后继续运行,因为服务调用者可以提前缓存有哪些服务提供者。可以缓存在内存中,也可以缓存在文件上,也可以有一个备份的配置文件列表,在重启后内存清掉或文件丢失的时候,上传一份服务提供者列表。服务注册中心主要起到的作用主...
1.服务注册中心宕机了怎么办?
说到服务注册中心可能首先想到的就是dubbo的zookeeper,spring cloud 的eureka,在服务注册中心宕机的时候,服务调用者仍然能后继续运行,因为服务调用者可以提前缓存有哪些服务提供者。可以缓存在内存中,也可以缓存在文件上,也可以有一个备份的配置文件列表,在重启后内存清掉或文件丢失的时候,上传一份服务提供者列表。
服务注册中心主要起到的作用主要提供服务列表,这个时候如果有新的服务添加进行的时候,就无法通知到其他服务。
2.Spring Bean 的生命周期
在Spring中,bean都是交由spring 容器进行管理。一般担当此角色的是BeanFactory 和ApplicationContext.这两种角色的实现方式差不多。
初始化bean的步骤:
- 初始化bean开始
- 使用反射调用bean 的构造函数实例化bean
- 使用反射注入bean的属性值
- Aware的注入,比如BeanNameAware,BeanClassloaderAware,BeanFactoryAware
- 调用BeanPostProcessor 接口的 postProcessorBeforeInitialization
- 调用初始化方法
- 调用BeanPostProcessor接口的 postProcessorAfterInitialization
- 注册需要执行销毁方法的Bean
- 初始化bean结束
这里为什么要使用spring aware ,主要是为了bean 可以使用spring 容器的服务,使bean和spring 耦合(spring aware 各种接口的作用解析)
3.sql having 的使用场景
having子句的作用是筛选满足条件的组,即是在分组后再对数据进行过滤。与select 和where的搭配类似。having 搭配group by。where搜索条件在 分组操作之前,而Having 搜索条件在 分组操作之后。
sql 中引入having 的原因是:where无法与合计函数一起使用。
4.ACID、CAP理论
ACID 是数据库事务正确执行的四个基本要素。
A:Aotomicity 原子性:要么都执行成功,要么都不执行成功
C:Consitency 一致性:事务在执行前后会整个系统没有影响,比如转账操作对所有账户的总额不会改变
I:Isolcation 隔离性:各个事务之间不会相互影响
D:Durability 持久性:表示一旦某个事务执行成功了,那么就是永久的改变了
CAP:主要是在分布式系统下的应用问题
C:Consistency 一致性:任何一个读操作都能读取到读之前完成的写操作结果,也就是说在分布式环境中,多个点之间数据要一致
A:Availability 可用性:每个操作总能够在确定的时间内返回,也就是系统随时都是可用的。
P:Partition tolerance 分区容错性:在出现网络分区的时候(断网),分离的系统也能正常运行。现在的大部分分布式系统都是水平扩展,所以多分区容错性的要求也会比较高
CAP 理论的一个核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性三个要求,最多只能很好的满足其中的两个。
参考:分布式数据库CAP理论
5.对Java Runtime的了解
每个Java 应用程序都对应一个Runtime 实例。
这个类主要有以下作用:
- 得到系统内存的一些信息
- 得到系统环境变量
- 执行外部程序
- 获取jdk版本信息等
6.负载均衡的一个实现,服务器资源分配70% 20% 10%
7.设计一个缓存系统
更多推荐
所有评论(0)