银十期间得蚂蚁面试机会(本人非985/211,蚂蚁真的不是很在乎学历!!!),有了一次社招机会,前后经历三关,受益匪浅,在此与各位朋友分享经历与心得。

蚂蚁金服Java研发一面(电话面,30分钟左右)

  1. 自我介绍,讲下最有难度的项目
  2. 对线程安全的理解
  3. 比如有一个局部变量i=1,两个线程同时执行,是否线程安全
  4. 比如再有一个共享变量,如何保证线程安全
  5. 说说ThreadLocal,底层如何实现
  6. hashmap实现原理
  7. volatile关键字,解决了什么问题
  8. 类加载机制
  9. JVM内存分布/内存结构?栈和堆的区别?堆的结构?为什么两个survivor区?
  10. 对象在堆内存创建的生命周期
  11. Spring的原理?AOP的实现?
  12. 面向对象的设计原则?OCP?
  13. 分布式系统如何保证数据一致性
  14. 有一个方法接收一个消息类型数据,通过if-else处理,如何优化
  15. 设计一个秒杀系统?考虑哪些问题?
  16. 有什么问题想问

面试官没有问得很深入,就是对于线程安全高并发比较看重是真的,整个面试过程还是聊得挺愉快,收获很大,蚂蚁的面试官还是很nice,很有耐心,引导性地提问。

蚂蚁金服Java研发二面(现场面,30分钟左右)

  1. 从http请求发出到响应的整个流程
  2. 追问如何http请求发送过来之后如何拦截,怎样配置拦截,具体怎样拦截(只知道tomcat拦截,在web.xml中配置,感觉是在问tomcat底层)
  3. 说说类加载机制,可以自定义类加载器吗,为什么要自定义类加载器
  4. 了解什么分布式数据一致性算法,具体说说
  5. MySQL事务隔离级别以及MVCC机制
  6. Redis缓存雪崩、缓存穿透以及如何解决?
  7. 再次问了设计秒杀系统
  8. 说说同步和异步,什么时候用同步,什么时候用异步
  9. 在linux上面用过什么调优工具,用过什么监控工具,怎样监控自己应用资源消耗情况
  10. 如果CPU占用资源很高有可能是什么问题,CPU占用资源低但是系统响应速度很慢可能是什么问题
  11. jvm怎样调优,堆内存栈空间设置多少合适..

蚂蚁金服Java研发三面(现场面,40分钟左右)

  1. 如果让你实现一个MQ,怎么样保证消息不丢失?
  2. 硬盘io速度会变慢,有什么解决办法吗?
  3. mysql的innodb索引数据结构为什么是b+树,用hash来实现可以吗?
  4. 分布式事务的实现?
  5. 如何解决redis和mysql数据一致性?
  6. 常见的MySQL主从同步方案有哪些?优劣势比较过?
  7. 这次问的是秒杀如何防止超卖?
  8. 最近有没有学习过新技术?
  9. 有什么想问我的?
  10. 三年到五年的职业规划?

总结

  1. java的基础知识点,主要围绕在集合类和多线程等:ArrayList、LinkedList、HashSet、HashpMap的数据结果,以及如何扩容、以及ConcurrentHashMap相关的多线程安全等。
  2. JVM的内存分配、几个常见的垃圾回收算法以及原理、还有对应的JVM优化参数需要牢记。
  3. 网络:TCP的三次握手等网络都必问,重点掌握网络协议。
  4. Redis:作为分布式缓存的主力,基本也是BAT每次必考,重点是Redis的数据结构、内存、算法、持久化,以及与别的缓存memcached的优劣势。
  5. 多线程:状态流转、多线程的实现,以及与高并发的区别等。
  6. Spring框架问得是最多的,BAT非常喜欢问,重点掌握。
  7. 最后就是分布式架构设计
  8. 常用的分布式架构设计方案:单点登录、分布式缓存、存储、消息的选型,还有就是数据库端的优化方案(需要提前了解)。
  9. 最好能提前了解深入一个类似秒杀这样的项目,如果面试官问到类似的项目,你能把设计思路讲出来,这对你的面试结果是很大的加分项。

以上是Java面试1—到5年以上开发必问到的面试问点,也都是一线互联网公司Java面试必备技能,下面是参照阿里年薪50W所需具备的技能图,大家可以参考下!

 

同时针对这12个技能,我在这整理了一份Java架构进阶面试专题PDF文档(含450题解析,包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发,设计模式,MySQL等知识点解析,内容丰富,图文结合!)

这份专题文档是免费分享的,有需要的朋友转发此文后关注我私信回复【面试】即可获取资料的免费领取方式!

 

同时还有一些关于Java面试的视频解析和架构学习笔记图分享