前言
在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在Stop The World问题,因此很容易导致服务超时,引发性能问题。
我们团队负责的广告系统承接了比较大的C端流量,平峰期间的请求量基本达到了上千QPS,过去也遇到了很多次GC相关的线上问题。
这篇文章,我再分享一个更棘手的Young GC耗时过长的线上案例,同时会整理下YGC相关的知识点,希望让你有所收获。内容分成以下2个部分:
- 从一次YGC耗时过长的案例说起
- YGC的相关知识点总结
蚂蚁花呗第一次技术面(60min):
- Java容器有哪些?哪些是同步容器,哪些是并发容器?
- ArrayList和LinkedList的插入和访问的时间复杂度?
- java反射原理, 注解原理?
- 说说一致性 Hash 原理
- 新生代分为几个区?使用什么算法进行垃圾回收?为什么使用这个算法?
- HashMap在什么情况下会扩容,或者有哪些操作会导致扩容?
- HashMap push方法的执行过程?
- HashMap检测到hash冲突后,将元素插入在链表的末尾还是开头?
- 1.8还采用了红黑树,讲讲红黑树的特性,为什么人家一定要用红黑树而不是AVL、B树之类的?
- https和http区别,有没有用过其他安全传输手段?
- 线程池的工作原理,几个重要参数,然后给了具体几个参数分析线程池会怎么做,最后问阻塞队列的作用是什么?
- linux怎么查看系统负载情况?
- 请详细描述springmvc处理请求全流程?
- spring 一个bean装配的过程?
- 项目用 Spring 比较多,有没有了解 Spring 的原理?AOP 和 IOC 的原理
一面一共问了15个问题,信息量还是很大的,但是可以看到这些问题都不算难,主要是考察基础知识的掌握情况,这一轮面试的难度数据一面的正常难度,持续的时长也算是正常范围。
蚂蚁花呗二次技术面(30min)
- 查询中哪些情况不会使用索引?
- 数据库索引,底层是怎样实现的,为什么要用B树索引?
- Mysql主从同步的实现原理?
- MySQL是怎么用B+树?
- 谈谈数据库乐观锁与悲观锁?
- 有使用过哪些NoSQL数据库?MongoDB和Redis适用哪些场景?
- 描述分布式事务之TCC服务设计?
- Redis和memcache有什么区别?Redis为什么比memcache有优势?
- Redis 的数据结构
- 海量数据过滤,黑名单过滤一个 url。
- 讲一讲AtomicInteger,为什么要用CAS而不是synchronized?
蚂蚁花呗三次技术面(25min)
- 考虑redis的时候,有没有考虑容量?大概数据量会有多少?
- Redis 的 list zset 的底层实现
- solr和mongodb的区别,存数据为什么不用solr?
- 分布式 session 的共享方案有哪些,有什么优劣势
- 谈谈分布式锁、以及分布式全局唯一ID的实现比较?
- 集群监控的时候,重点需要关注哪些技术指标?这些指标如何优化?
- 从千万的数据到亿级的数据,会面临哪些技术挑战?你的技术解决思路?
- 数据库分库分表需要怎样来实现?
- 排序算法的复杂度,快速排序非递归实现。
- 消息中间件有哪些?他们之间的优劣势?
蚂蚁花呗四次技术面(15min)
- 分布式架构设计哪方面比较熟悉
- 介绍你实践的性能优化案例,以及你的优化思路
- 介绍项目
- 谈一个你觉得你学到最多的项目,使用了什么技术,挑战在哪里
- 各种聊项目,从项目的架构设计到部署流程。
- 最近有没有学习过新技术?
- 有什么想问我的?
- 最近两年遇到的最大的挫折,从挫折中学到了什么?
- 三年到五年的职业规划?
HR面
1.工作中遇到的最大挑战是什么,你如何克服的?
2.你最大的优点和最大的缺点,各自说一个?
3.未来的职业发展,短期和长期的规划是什么?
最后,你懂的,主要就是HR走流程了,主要问了未来的职业规划。
写在最后
以上就是我的面试过程,为了这次面试,也收集了很多的面试题,反正我已经面过了,那就免费分享出来吧!
需要的朋友:关注一下,然后点击这里即可免费领取
以下是部分面试题截图
需要的朋友:关注一下,然后点击这里即可免费领取
以下是部分面试题截图

本文作者分享了在阿里飞猪面试的经历,涉及高并发下的Java GC问题、并发容器、数据库索引、分布式事务、性能优化等多个技术点,包括蚂蚁花呗的技术面试细节和HR面的问题。通过实际案例探讨了YGC优化、数据库原理、Spring框架等核心知识点。
676

被折叠的 条评论
为什么被折叠?



