蚂蚁金服Java实习面试攻略:解密高难度面试题与准备策略
蚂蚁金服与阿里巴巴的Java实习面试经历。这次面试的整体难度相对较高,特别是场景题的设计,更能真实考验面试者的能力。
自我介绍
我是一名来自某末流985高校的硕士生。今年3月我投递了阿里和美团的职位,因地理位置问题拒绝了阿里的实习机会,最终转向蚂蚁金服并获得了面试意向。
准备过程
自研一以来,我一直在刷题,题量庞大,所以笔试表现通常较为顺利。从去年十月开始,我系统学习了Java。
面试经历
阿里一面(0314)
-
请介绍简历上的项目及其实际应用场景。
-
请说明电商秒杀项目的实现,并讨论如何解决超卖问题。
-
在使用MQ的情况下,为什么还会出现MySQL连接数过高,如何优化MySQL性能瓶颈并进行分库分表?
-
请讲解缓存击穿、缓存雪崩、缓存一致性的问题,并分别提出解决方案。
-
雪花算法和分布式锁的概念。
-
有关乐观锁和悲观锁的区别。
-
创建对象的几种方式(我只回答了new和反射,未能全面覆盖)。
-
这三行代码中JVM执行了什么操作:
String a = "123"; String b = new("456"); String c = a + b;
-
如何释放一个用完的大对象的内存空间?
-
请讲解Spring的IOC控制反转。
-
MySQL如何删除数据?
-
delete与truncate的区别(未能回答)。
-
在编写查询语句时,性能考虑的方面有哪些?
-
什么是联合索引?为什么需要建立联合索引?
-
请讲解ARP和ICMP协议。
-
什么情况下不需要查询ARP表?
-
ICMP用于哪个路由器?在哪些场景下使用ICMP?traceroute是如何工作的?
阿里一面笔试(0315)
给定一个100GB的文件,每行一个URL,在4GB内存的机器上统计出前100个URL并输出到新文件中。
阿里二面(0317)
- 请介绍JVM的内存区域。
- 对象的生命周期(创建对象的过程)。
- 介绍一下volatile关键字。
- 如何获取子线程的返回值?
- 如果子线程抛出异常,主线程的try-catch能否捕获到这个异常?
- 请讲解JDK动态代理的原理。
- 如果一个程序占用大量CPU并持续运行,如何进行排查?
- Spring容器的启动过程是什么?
- @Autowired和@Resource的区别。
- 关于字段a, b, c, d,给出查询条件a=b,并按c排序的查询语句(如何优化MySQL翻页查询以避免性能下降)。
- SQL题:在学生成绩表中,统计总成绩前十名的学号。
- SQL explain命令输出的信息。
- Redis的批处理机制。
- 请介绍一下电商项目。
阿里三面(0327)
- GC(垃圾回收)机制的定义,如何排查GC,如何手动使Java虚拟机OOM。
- SQL如何手动加锁。
- HashMap为什么要转为红黑树,而不是一开始就使用红黑树(红黑树的缺点)。
- 造成内存泄漏的情况,如何排查。
接下来涉及各种电商项目的细节。
蚂蚁一面
- 为什么选择后端开发?
- 第一个社团项目花了一年多时间,原因是兴趣还是老师布置的任务?
- 是基于场景学习技术,还是出于单纯的学习愿望?
- 哪些项目是与他人合作的?
- 注意到你在电商项目只做了四个月,现阶段仍在从事吗?
- 性能压测的具体做法,性能如何?
- 电商项目的需求分解设计是如何进行的?
- 缓存设计的思路?
- 电商的核心对象模型设计思路。
- JVM的内存模型及其运行机制。
- JDK8的新特性。
- HashMap的源码是否看过?请讲解其实现原理。
- 线程池使用的注意事项,线程数量是否越多越好?
- 分布式系统的一致性如何保障?(未能回答)
- 请介绍MySQL的底层结构。
- MySQL设计索引时的注意事项。
- 双向链表的缺点。
- 了解哪些设计模式?
- 有使用过Linux系统吗?用过哪些命令?
- 平时有写博客的习惯吗?如果没有,是什么原因?
- 在合作项目中与他人发生冲突时,如何处理?
蚂蚁二面
由于时间有限,仅进行了5分钟的讨论,未做详细记录。
蚂蚁三面
- 详细介绍简历中的比赛经历(比赛类型、组队情况、分工情况)。
- 比赛成绩不佳的原因,赛后是否进行过反思?
- 毕设开题情况,最后是发表论文还是申请专利?
- 具体介绍毕设项目的难点、分工和创新性。
- 毕设的方法与其他方法相比的优化之处。
- 项目使用的编程语言、代码设计及模块分配。
- 如何处理大文件?是否考虑过断点续传?
- 功能性测试的具体做法(如效率、结果)。
- 代码异常测试的情况,是否进行了大量测试?
- 如果毕业后项目未完成,程序的可扩展性如何?
- 数据获取的途径。
- 为什么没有继续做老师的项目而转向互联网工作?
- 是否进行过保研?考研为何不选择计算机?
- 如何学习计算机课程知识?
- 在比赛中,团队合作与单人开发的区别。
- 集成测试的具体做法。
- 比赛期间如何与队友沟通。
- 为什么选择后端开发?吸引你的方面是什么?
- 实验室项目和比赛项目对能力提升的具体影响。
- 上个面试官问你分布式时你表示不会,后来学习了吗?你如何理解分布式事务与普通事务的区别?
- 分布式电商系统可能遇到的分布式事务问题。
- 如何保证集群的一致性?
- 了解过蚂蚁的OceanBase吗?
- 你之前是如何在MySQL中加锁的?
- 还投递了其他公司吗?阿里云投递的是哪个部门?
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果