写点什么

Java 开发 9 年经验,三轮技术面 +HR 面试成功砍下阿里巴巴 Offer!

发布于: 2021 年 04 月 15 日

阿里巴巴面经

三轮技术面试,一轮 HR 面试,第一轮通常是电话面试,第二轮是视频,可能会有一道算法题。

一面

一面基本是 Java 基础问题,比较简单。

  • Java 如何判断一个对象能否被回收?垃圾回收算法有哪些?

  • 什么是内存模型?

  • 什么是线程安全?

  • Java 中锁有哪些?synchronize 和 Lock 的区别?

  • synchronize 的底层实现原理

  • 对象在内存中的布局?

  • volatile 关键字的实现原理?

  • 什么是原子性、可见性、有序性?什么是 happen-before 原则?解释一下 final 的语义?

  • 什么是 CAS?CAS 存在什么问题?

  • Lock 系列锁的实现原理?

  • 什么是原子类?原子类的实现原理?

  • Java 中对象的引用有哪些类型?

  • ThreadLocal 的实现原理?存在什么问题?如何避免?

  • HashMap 的实现原理?1.7 和 1.8 的区别?

  • 有哪些线程安全的 Map?ConcurrentHashMap 的实现原理?1.7 和 1.8 的区别?

  • ConcurrentHashMap 是如何统计 size 的?

  • MySQL 的索引为什么是 B+Tree,而不是数组、Hash 之类的数据结构?为什么不是 B-Tree?

  • Redis 有哪些数据类型?List 中数据非常多怎么办?

  • Redis 的持久化机制?AOF 和 RDB 的优缺点?

  • 线上服务接口非常慢?如何排查?

二面和三面

二面和三面是同一天面的,记不清了,大概是这些问题,面试官比较喜欢追问。

  • 一道算法题。

  • 聊项目经历,非常细。

  • 垃圾标记算法和垃圾回收算法有哪些?

  • 什么是三色标记?什么是安全点与安全区域?

  • 简述一下 G1 垃圾回收器的原理?

  • 为什么你们项目中没有使用 G1 垃圾回收器?

  • 什么时候会触发 Minor GC?什么时候出发 Old GC?什么是 Full GC?

  • 对象什么时候进入到老年代?什么是动态年龄判断?

  • 你们线上服务的 QPS 有多大?机器配置是多少?JVM 的参数是怎么设置的?GC 的频率?为什么要这这样配置?

  • 假设线上服务的流量是当前流量的 1 万倍?系统会出现什么现象?如何优化?

  • Redis 的高可用怎么保证?线上有多少台机器?怎么部署的?

  • Redis 实现分布式锁的原理?存在什么问题?

  • 如何用 Zookeeper 实现分布式锁?存在什么问题?

  • Redis 中遇到热 key 会造成什么问题?如何发现热 key?如何解决热 key 的问题?

  • SQL 的优化经验有哪些?索引的设计准则?

  • 如何查看 SQL 的慢查询日志?线上服务出现慢查询了怎么处理?

  • 线上数据库出现了死锁怎么办?

  • MySQL 的 InnoDB 在可重复读隔离界别下如何解决不可重复读问题和幻读问题的?什么是快照读?什么是当前读?

  • MySQL 中有哪些锁?什么是间隙锁?

  • MySQL 中有哪些日志?

  • 数据库有哪些特性?MySQL 是如何保证机器宕机重启后,数据不丢失的?

  • binlog 有什么作用?将其格式设置为 statement 会有什么问题?你们线上是如何配置的?

  • 如何保证 MySQL 的高可用?主从复制的原理?

  • 现在线上环境中发现 MySQL 的总节点大幅落后于 master 节点,可能是什么原因?如何处理?

  • 消息队列的选型?RocketMQ 的实现原理?

  • 如何保证消息不丢失?如何保证不重复消费消息?

  • 线上 MQ 出现消息大量积压,应该如何处理?

  • 让你设计一个 MQ,你会如何设计?

  • 什么是 mmap?

  • netty 用过吗?为什么 netty 是高性能的网络框架?

  • 零拷贝机制的实现原理?

  • Zookeeper 集群如何部署?Zookeeper 如何实现选举?什么是 ZAB 协议?

  • Zookeeper 如何保证数据的顺序一致性?

  • Zookeeper 的使用场景?如何支撑大量的读请求?

  • 你们微服务的注册中心是如何选型的?Zookeeper 和 Eureka 作为注册中心的区别?它们有什么瓶颈?

  • 如何设计一款能支撑数十万机器组成的集群的注册中心?

  • 如何设计一个秒杀系统?在双十一当天,从浏览器中输入 www.taobao.com 到加载出页面,说一下它的完整过程。

面经参考解析

以上所有问题的答案都有相应的解析文档参考,网上也有一些类似的面试题总结的文章,但小编这份绝对是数一数二,剩下你了去网上一个个找的时间!每个知识点都有左侧导航书签页,看的时候十分方便,由于内容较多,这里就截取一部分图吧。

需要的读者朋友们可以帮忙点赞+关注我后,然后加小助理 VX:15037502869 获取!



点击并拖拽以移动


Java 基础



点击并拖拽以移动


Java 集合框架



点击并拖拽以移动


jvm



点击并拖拽以移动


多线程



点击并拖拽以移动


网络



点击并拖拽以移动


算法和数据结构



点击并拖拽以移动


Spring



点击并拖拽以移动


Netty



点击并拖拽以移动


微服务/分布式



点击并拖拽以移动


消息队列



点击并拖拽以移动


分布式 ID,其他(网关、限流...)



点击并拖拽以移动


MySQL



点击并拖拽以移动


Redis



点击并拖拽以移动


经验总结

这是我在工作、面试中学习并总结到的一些知识点,都是一些比较典型的、面试常被问到的问题。如果你平时没有注意去总结的话,那么当你面试被问到的时候可能会是一脸懵圈,就算这个问题你知道怎么回事,但是你平时没有认真总结,你也可能会出现逻辑混乱的情况,从而错失工作机会。

有些知识点不经常使用就会忘记,但是面试还会问,对此,我也是深受其害,所以我决定将这些遇见的问题整理下来,分享出去,帮助更多的人,我们共同进步。所谓“温故而知新”,没事的时候多翻看一下这些知识,没准就会有新的收获。你没时间整理的东西,我都帮你写好了。


需要的读者朋友们可以帮忙点赞+关注我后,然后加小助理 VX:15037502869 获取!

发布于: 2021 年 04 月 15 日阅读数: 30
用户头像

还未添加个人签名 2020.10.09 加入

还未添加个人简介

评论

发布
暂无评论
Java开发9年经验,三轮技术面+HR面试成功砍下阿里巴巴Offer!