【蚂蚁】-Java岗-电面+现场面,终获offer
研发一面
(电话面,30分钟左右)
自我介绍,讲下最有难度的项目
对线程安全的理解
比如有一个局部变量i=1,两个线程同时执行,是否线程安全
比如再有一个共享变量,如何保证线程安全
说说ThreadLocal,底层如何实现
hashmap实现原理
volatile关键字,解决了什么问题
类加载机制
JVM内存分布/内存结构?栈和堆的区别?堆的结构?为什么两个survivor区?
对象在堆内存创建的生命周期
Spring的原理?AOP的实现?
面向对象的设计原则?OCP?
分布式系统如何保证数据一致性
有一个方法接收一个消息类型数据,通过if-else处理,如何优化
设计一个秒杀系统?考虑哪些问题?
有什么问题想问
面试官没有问得很深入,就是对于线程安全高并发比较看重是真的,整个面试过程还是聊得挺愉快,收获很大,蚂蚁的面试官还是很nice,很有耐心,引导性地提问。
研发二面
(现场面,30分钟左右)
从http请求发出到响应的整个流程
追问如何http请求发送过来之后如何拦截,怎样配置拦截,具体怎样拦截(只知道tomcat拦截,在web.xml中配置,感觉是在问tomcat底层)
说说类加载机制,可以自定义类加载器吗,为什么要自定义类加载器
了解什么分布式数据一致性算法,具体说说
MySQL事务隔离级别以及MVCC机制
Redis缓存雪崩、缓存穿透以及如何解决?
再次问了设计秒杀系统
说说同步和异步,什么时候用同步,什么时候用异步
在linux上面用过什么调优工具,用过什么监控工具,怎样监控自己应用资源消耗情况
如果CPU占用资源很高有可能是什么问题,CPU占用资源低但是系统响应速度很慢可能是什么问题
jvm怎样调优,堆内存栈空间设置多少合适..
研发三面
(现场面,40分钟左右)
如果让你实现一个MQ,怎么样保证消息不丢失?
硬盘io速度会变慢,有什么解决办法吗?
mysql的innodb索引数据结构为什么是b+树,用hash来实现可以吗?
分布式事务的实现?
如何解决redis和mysql数据一致性?
常见的MySQL主从同步方案有哪些?优劣势比较过?
这次问的是秒杀如何防止超卖?
最近有没有学习过新技术?
有什么想问我的?
三年到五年的职业规划?