蚂蚁金服Java后端(一面)面试题

1.服务注册中心宕机了怎么办?

说到服务注册中心可能首先想到的就是dubbo的zookeeper,spring cloud 的eureka,在服务注册中心宕机的时候,服务调用者仍然能后继续运行,因为服务调用者可以提前缓存有哪些服务提供者。可以缓存在内存中,也可以缓存在文件上,也可以有一个备份的配置文件列表,在重启后内存清掉或文件丢失的时候,上传一份服务提供者列表。

服务注册中心主要起到的作用主要提供服务列表,这个时候如果有新的服务添加进行的时候,就无法通知到其他服务。

参考:聊聊微服务的服务注册和发现


2.Spring Bean 的生命周期

在Spring中,bean都是交由spring 容器进行管理。一般担当此角色的是BeanFactory 和ApplicationContext.这两种角色的实现方式差不多。

初始化bean的步骤:

  1. 初始化bean开始
  2. 使用反射调用bean 的构造函数实例化bean
  3. 使用反射注入bean的属性值
  4. Aware的注入,比如BeanNameAware,BeanClassloaderAware,BeanFactoryAware
  5. 调用BeanPostProcessor 接口的 postProcessorBeforeInitialization
  6. 调用初始化方法
  7. 调用BeanPostProcessor接口的 postProcessorAfterInitialization
  8. 注册需要执行销毁方法的Bean
  9. 初始化bean结束

这里为什么要使用spring aware ,主要是为了bean 可以使用spring 容器的服务,使bean和spring 耦合(spring aware 各种接口的作用解析)

参考:Spring Bean生命周期


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理论

          数据库CAP理论


5.对Java Runtime的了解

每个Java 应用程序都对应一个Runtime 实例。

这个类主要有以下作用:

  1. 得到系统内存的一些信息
  2. 得到系统环境变量
  3. 执行外部程序
  4. 获取jdk版本信息等

6.负载均衡的一个实现,服务器资源分配70% 20% 10% 

参考:Java 代码实现负载均衡的五种算法


7.设计一个缓存系统

参考:Java 实现一个简单缓存

          设计并实现一个LRU缓存

你可能感兴趣的:(Java)