0
点赞
收藏
分享

微信扫一扫

蚂蚁花呗,蚂蚁金服面试3+2次,有惊无险终通过!(已收到offer)

最新蚂蚁花呗面试题:线程池与锁+数据主从同步+MQ实现+秒杀超卖

一面:主要问的基础知识

java线程同步都有哪几种方式,Synchronized和ReentrantLock的区别

ReentrantLock底层是怎么实现的,怎么实现的超时获取锁。

cas的原理,变量要用哪个关键字修饰,volatile实现的原理,进而引申到了java虚拟机的内存模型。

介绍一下java虚拟机内存模型,然后继续讨论volatile。

线程池种类,哪四种 workqueue分别是什么

什么时候触发minor GC 什么时候触发full GC

聊点数据库,一般选什么样的字段做主键,有什么选取原则吗,用种子自增来做主键,为什么每次种子要加1,加2加3可以吗。

sql优化有哪些思路

索引使用注意事项

InnoDB数据模型,B+树具体说说都保存了什么,叶子节点保存了什么

你有什么想问我的。

二面:主要是围绕项目

1、介绍一下你的项目(主要是技术难点),请画出项目架构设计图和部署图?

2、dubbo负载均衡算法有哪些,如果让你实现一致性hash的dubbo负载均衡算法,你会怎么实现?

3、zookeeper实现的分布式锁的原理,以及redis具体怎么实现分布式锁?

4、限流是怎么实现的,hystrix介绍一下。

5、dubbo有哪些模块,底层通信的原理。

6、spring的ioc,aop是怎么实现的。

7、线上问题的解决思路,程序运行一段时间,突然内存溢出,重启后,过一段时间又内存溢出,怎么排查问题。

三面:主要问解决问题的思路

1、如果让你实现一个MQ,怎么样保证消息不丢失?

2、硬盘io速度会变慢,有什么解决办法吗?

3、mysql的innodb索引数据结构为什么是b+树,用hash来实现可以吗?

4、分布式事务的实现?

5、如何解决redis和mysql数据一致性?

6、常见的MySQL主从同步方案有哪些?优劣势比较过?

7、先谈秒杀的设计思路?

8、再谈谈秒杀如何防止超卖?

9、你有什么想问我的?

以上就是蚂蚁花呗团队面试题,以下最新总结的最全2020阿里集团资深Java必考题范围和答案,仅用于参考~

2020阿里资深Java必考题与答案

蚂蚁金服2020金融核心部门面经(Redis+AOP+中间件+分布式锁等)

一面(个人感觉回答得还不错)

1. 说项目,项目问的非常深(本人提到之前做过的一篇关于FULL GC的问题定位和优化的项目以及一个多并发的项目)

1.1 对于自己参与过项目的系统定位是否清楚?

1.2 对于系统的各个模块是否清楚?

1.3 每个接口的tps?

1.4 对于上下游系统的依赖?

1.5 对于使用到的中间件、框架是否清楚?

2. 你觉得你做的项目中最有亮点的事情?

3. memcache redis同类中间的差异、优缺点?使用注意点有哪些?

memcache可以存储的数据类型只有字符串类型,而redis可以存储字符,list,sorted List,hash数据类型的数据;

memcache不支持数据持久化,redis支持RDB,AOF持久化;

memcache不支持集群,redis支持redis-cluster集群

4. redis分布式锁说说

我提到了redis的setnx()方法,以及使用redis的KV结构,lock作为key,key对应的value使用map结构,map中使用请求requestId作为map的key,过期时间作为map的value,获取锁使用cas算法,比较时间是否过期来获取锁和释放锁

5. TCP,UDP

6. 多并发项目的并发量,有没有压测过,以及QPS,请求的消息量太大,使用自己创建的任务队列会不会使内存爆?

7. Redis集群主从数据同步

主从集群实现了数据的读写分离,主服务器负责读写,偏重写,从服务器只负责读。主服务器启动之后向从服务器发送日志文件,从服务器根据日志文件进行数据的更新,之后如果主服务器有写操作,也会向从服务器发送相应的写操作

8. Zookeeper实现选举的原理

zk的选举过程中其起始所有节点的状态为looking,当某个结点的选票超过所有结点数的一半,该结点就会成为leader,结点状态为leading,其他结点会成为followers,结点状态为following。选举的依据是(sid,zxid)数据,sid代表结点的ID,zxid代表事务ID,选举过程中每个结点第一轮选举会选举自己作为leader,将(sid,zxid)发送给其他结点,其他结点收到数据(sid,zxid)与自身的数据做比较,如果zxid比自身zxid的要大,则直接选举当前结点;如果小于,坚持选举自己;如果zxid相等,比较sid哪个大,大者作为leader。

9. 说说分布式(我说的是Dubbo)

10. 数据库实务,分布式数据一致性如何实现?

读者可以了解一下ZAB协议,我大概就是围着ZAB协议说的

11. SpringIOC,SpringAOP

我简单说了说IOC,AOP的原理,以及原理依赖的模式

12. 数据库事务的隔离级别

四大隔离界别:Uncommitted-read Commited-read Repeated-read Serializable分别针对数据库脏读,不可重复读,虚读问题

13. 谈谈RPC

RPC远程调用,说了说原理,使用到的组件,以及RPC主要的任务:序列化,传输数据,方法调用(方法对应的ID)

14. 算法题:笔试题-最短路径问题(这道题是通过的)

如图,某物流派送员p,需要给a、b、c、d4个快递点派送包裹,请问派送员需要选择什么的路线,才能完成最短路程的派送。假设如图派送员的起点坐标(0,0),派送路线只能沿着图中的方格边行驶,每个小格都是正方形,且边长为1,如p到d的距离就是4。随机输入n个派送点坐标,求输出最短派送路线值(从起点开始完成n个点派送并回到起始点的距离)。

我的做法是使用排列算法,将所有的情况排列出来,计算最短路径

二面(个人感觉回答的特别垃圾,六道问题回答了两道)

1. 自我介绍

2. 对项目,各个角度刁难

3. FULL GC问题排查工具

我做项目时其实没有使用什么工具,就是用Linux命令TOP,TOP交互命令 1,H;jsatck,jstat以及JVM的相关参数和JVM日志的查看

4. 从事开发遇到最具有难度的问题

5. Spring事务,嵌套事务

这道题其实我是被问懵了,我回答得相当不好,一直回答事务隔离那一块,面试完我总结了一下有关Spring事务相关知识点

6. 面向接口编程的好处是什么

问的问题太抽象,我回答不好,面试官说不够完善

7. 数据库两个insert同时操作同一张表,第一个线程操作一半,问第二个线程会发生什么?

我回答的稀巴烂,下来查了一下,大概就是说这里涉及到的锁是间歇锁,读者可以看看相关知识

8. 说说死锁

举个例子,两个线程1和2,两个锁a和b,线程1拿到a锁后申请要b锁,而同时线程2已经拿到b锁,要申请a锁,两个线程之间陷入僵持状态

总结

二面技术面之后,就是HR,这个就不多说了。整体蚂蚁金服的面试感受,面试官很专业,要求基础知识很熟悉,面试之前一定要准备后再去面试。LeetCode题目也要刷。

切记面试前一定要刷题和准备,简历上的项目不熟悉的千万不要写上去,写上去的项目备好2-3个技术方案。

码字不易,觉得有帮助的可以帮忙转发一下,让更多有需要的人看到

又是一年求职季,上面是我为大家准备的一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考,需要的可以+++++++vx:bjmsb03即可免费获取!!

感谢大家支持~↓↓↓↓↓↓↓↓↓↓↓↓↓


举报

相关推荐

0 条评论