前言
金九银十马上就要来了,置信不少 Java 程序员敌人们在网上搜寻过 BAT 面经,以便可能失去一些教训,明天我也来给大家分享一下蚂蚁金服金融外围部门的面试经验,心愿可能帮忙到正在筹备面试的你!废话不多说,间接上注释吧。
一面(个人感觉答复得还不错)
1. 自我介绍
2. 说我的项目,我的项目问的十分深 (自己提到之前做过的一篇对于 FULL GC 的问题定位和优化的我的项目以及一个多并发的我的项目)
对于本人产于过我的项目的零碎定位是否分明?
对于零碎的各个模块是否分明?
每个接口的 tps?
对于上下游零碎的依赖?
对于应用到的中间件、框架是否分明?
3. 你感觉你做的我的项目中最有亮点的事件?
4. memcache redis 同类两头的差别、优缺点?应用留神点有哪些?
memcache 能够存储的数据类型只有字符串类型,而 redis 能够存储字符,list,sorted List,hash 数据类型的数据;
memcache 不反对数据长久化,redis 反对 RDB,AOF 长久化;
memcache 不反对集群,redis 反对 redis-cluster 集群
5. redis 分布式锁说说
我提到了 redis 的 setnx() 办法,以及应用 redis 的 KV 构造,lock 作为 key,key 对应的 value 应用 map 构造,map 中应用申请 requestId 作为 map 的 key,过期工夫作为 map 的 value,获取锁应用 cas 算法,比拟工夫是否过期来获取锁和开释锁
6. TCP,UDP
7. 多并发我的项目的并发量,有没有压测过,以及 QPS,申请的音讯量太大,应用本人创立的工作队列会不会使内存爆?
8. Redis 集群主从数据同步
主从集群实现了数据的读写拆散,主服务器负责读写,并重写,从服务器只负责读。主服务器启动之后向从服务器发送日志文件,从服务器依据日志文件进行数据的更新,之后如果主服务器有写操作,也会向从服务器发送相应的写操作
9. Zookeeper 实现选举的原理
zk 的选举过程中其起始所有结点的状态为 looking,当某个结点的选票超过所有结点数的一半,该结点就会成为 leader,结点状态为 leading,其余结点会成为 followers,结点状态为 following。选举的根据是(sid,zxid)数据,sid 代表结点的 ID,zxid 代表事务 ID,选举过程中每个结点第一轮选举会选举本人作为 leader,将(sid,zxid)发送给其余结点,其余结点收到数据(sid,zxid)与本身的数据做比拟,如果 zxid 比本身 zxid 的要大,则间接选举以后结点;如果小于,保持选举本人;如果 zxid 相等,比拟 sid 哪个大,大者作为 leader。
10. 说说分布式(我说的是 Dubbo)
11. 数据库事务,分布式数据一致性如何实现?
读者能够理解一下 ZAB 协定,我大略就是围着 ZAB 协定说的
12. SpringIOC,SpringAOP
我简略说了说 IOC,AOP 的原理,以及原理依赖的模式
13. 数据库事务的隔离级别
四大隔离界别:Uncommitted-read Commited-read Repeated-read Serializable 别离针对数据库脏读,不可反复读,虚读问题
14. 谈谈 RPC
RPC 近程调用,说了说原理,应用到的组件,以及 RPC 次要的工作:序列化,传输数据,办法调用(办法对应的 ID)
15. 算法题 :口试题 - 最短门路问题(这道题是通过的)
如图,某物流派送员 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 根底到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考,须要的能够【点击此处】获取,上面为局部材料截图
因为篇幅起因就不一一展现了,须要的【点击此处】获取获取