一名工作2年的Java程序员斩获蚂蚁金服的面试经历!
前言
这位经历者是一名毕业两年的程序员, 最近一直在寻找合适的机会能够换一个环境。
一是寻找一个更加宽阔的舞台不断的提升自己;二是让自己走出现在的舒适区域,迎接更多的挑战和认识更多的人;当然还有为了获得更好的一份收入。
下面记录了我的面试经验,一方面用作后期自己回顾知识点,另一方便给正要面试的人一些经验。
一面
- 项目介绍
- 项目中如何保证数据一致性的
- 存在的问题
- jvm 内存
- 程序计数器的作用
- gc 算法, 垃圾收集器
- spring事务,事务实现的机制,如何保证事务的
- 悲观锁,乐观锁
- HashMap
- 红黑树,B+树
- 数据库死锁,如何防止死锁
二面
二面开始于5道题目,整体感觉还是比较难的。面试的前一天给我发的题目,然后晚上下班后(9点左右)我做了5个小时才完成。 第二天面试的时候,主要围绕题目进行展开和发散。
从第一个题目延伸出(转账):
- 分布式事务的保证。具体的解决方案;
- 接口的幂等性;
- 如果向某个账户转账在高并发环境下,设计的接口有什么问题(数据库瓶颈)
- 如何解决上述的问题
- 如果账户表很大,具有亿万级别,如何提高查询效率(分库分表)
- 分库分表具体操作,什么时候分库,什么时候分表,各个使用场景
- mysql主从
- mysql如何保证主从的数据一致性
- 数据库的容灾
第二个题目: 抢红包
- 抢红包的实现方案;(我给出的解决方案是存下抢红包的操作,然后乐观锁更新金额,保证数据的最终一致性)
- 有没有优化空间
- 春晚红包方案(包括限流,网络瞬间抖动,数据一致性)这一点聊了很久
- 对分布式的看法
- 开源中间件熟悉哪些?(只是做简单了解)
三面
- 读书时候的经历? 介绍读书时候的项目
- 项目一(支付营销系统)的具体介绍, 架构,项目中某个操作的具体流程图,如何压测? 性能优化? 项目中机器的台数,机器扩容标准? 线程池大小?线程数设置标准?
- 平时用到了哪些集合?hashmap的问题?cpu 100%出现的情况?Treeset的实现?
- 分布式事务,秒杀系统的要求?秒杀系统的设计原则?注意事项?项目中遇到的问题?解决放肆?
- 项目二(分布式调度系统)的具体情况,架构?中间某些步骤的具体的设计思路。(这个挖的很深,而且面试官确实很厉害,几分钟能够了解你整个项目的大致情况,知道你设计的痛点,然后咨询你如何解决的)
- kafka消息可靠性保证?其他中间件有没有了解过?平时阅读什么技术?
HR面试
HR面试主要问过往的经历,以及个人的职业规划,就职意向等。
个人总结
在程序员的这条路上我一直在学习,自认为在同辈中水平较好,但通过这次面试我发现自己还有很多不足。
最后再给大家总结一下面试要注意的地方:面试前,提前准备面试问题的回答,回顾好简历中的工作经历;面试的时候,自我介绍要表现出自己的热情、与岗位的匹配、以及自己的亮点及有趣的地方,牢记 WWHC,STAR 原则,从岗位、部门、企业层面提问面试官;心态平稳,不要在技术面试时因为有一个知识点的不清楚而在后面的问题也回答不好!
读者分享:
分享免费学习资料
针对于还会准备免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能转发和关注下,以后还会更新技术干货,谢谢您的支持!
下面是部分资料截图,诚意满满:特别适合有1-5年开发经验的Java程序员们学习。
资料免费领取方式:加入合作Java架构学习交流Qqun:935692859,管理员处免费领取资料。
部分资料如下:
资料免费领取方式:加入合作Java架构学习交流Qqun:935692859,管理员处免费领取资料。