蚂蚁金服一面:七道经典面试题解析

最近编程讨论群有位小伙伴去蚂蚁金服面试了,以下是面试的真题,跟大家一起来讨论怎么回答。

1. 用到分布式事务嘛?为什么用这种方案,有其他方案嘛?

什么是分布式事务

谈到事务,我们就会想到数据库事务,很容易就想到原子性、一致性、持久性、隔离性。

image.png

分布式事务跟数据库事务有点不一样,它是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单来说,分布式事务指的就是分布式系统中的事务,它的存在就是为了保证不同数据库节点的数据一致性。

更多答案请点击这里

2. JDK6、7、8分别提供了哪些新特性

JDK 6 新特性

image.png
  • Desktop类(它允许一个Java应用程序启动本地的另一个应用程序去处理URI或文件请求)
  • 使用JAXB2来实现对象与XML之间的映射
  • 轻量级 Http Server API
  • 插入式注解处理API(lombok框架基于这个特性实现)
  • STAX(是JDK6中一种处理XML文档的API)

更多答案请点击这里

3. https原理,工作流程

  • HTTPS = HTTP + SSL/TLS,即用SSL/TLS对数据进行加密和解密,Http进行传输。
  • SSL,即Secure Sockets Layer(安全套接层协议),是网络通信提供安全及数据完整性的一种安全协议。
  • TLS,即Transport Layer Security(安全传输层协议),它是SSL3.0的后续版本。
image.png

更多答案请点击这里

4. 讲一讲7层网络模型,tcp的为什么要三次握手

计算机网路体系结构有三层:OSI七层模型、TCP/IP四层模型、五层体系结构,如图:

image.png

更多答案请点击这里

5. 说说线程池的工作原理

面试官如果要我们讲下线程池工作原理的话,大家讲下以下这个流程图就可以啦:

image.png

更多答案请点击这里

6. 你们数据库的高可用是怎么实现的?

高可用,即High Availability,是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。单机部署谈不上高可用,因为单点故障问题。高可用都是多个节点的,我们在考虑MySQL数据库的高可用的架构时,需要考虑这几个方面:

  • 如果数据库节点宕机,需要尽快回复,保证业务不受宕机影响。
  • 从数据库节点的数据,尽可能跟主节点数据实时保持一致,至少保证最终一致性。
  • 数据库节点切换时,数据不能缺失。

更多答案请点击这里

7. 读写分离的场景下,怎么保证从数据库读到最新的数据?

数据库读写分离,主要解决高并发时,提高系统的吞吐量。来看下读写分离数据库模型:

image.png
  • 写请求是直接写主库,然后同步数据到从库
  • 读请求一般直接读从库,除飞强制读主库

更多答案请点击这里


“Java 面试题指南”经历接近一年的迭代打磨,目前已经提供了小程序刷题、PC 端访问(https://java.ecool.fun/)。截至 2022 年 2 月 28 日,已经录入 Java 常见面试 800+ 题,想刷 Java 面试题的小伙伴千万不要错过。我们在近期推出了简历指导、模拟面试等付费功能,有想了解的小伙伴们可以添加小助手微信(interview-java)进行咨询哦~