面试面经 · 阿里巴巴
【阿里巴巴】【Java后端】【一面】基础扎实+手写代码,面试体验不错
【阿里巴巴】【Java后端】【一面】
基本信息
| 项目 | 内容 |
|---|---|
| 公司 | 阿里巴巴(淘天集团) |
| 岗位 | Java后端开发工程师 |
| 轮次 | 一面(技术面) |
| 时间 | 2025年3月 |
| 面型体感 | 视频面试,约60分钟,节奏紧凑但不压抑 |
| 结果 | 通过,进入二面 |
面试题目(按提问顺序)
- 自我介绍,讲一下自己最擅长的技术栈
- HashMap 的底层实现原理?JDK 1.7 和 1.8 有什么区别?
- ConcurrentHashMap 如何保证线程安全?JDK 1.8 的锁粒度是什么?
- ArrayList 和 LinkedList 的区别?各自的扩容机制是什么?
- 说说 JVM 的内存模型,堆、方法区、虚拟机栈分别存什么?
- GC Roots 有哪些?常见的垃圾回收算法有哪些?
- CMS 和 G1 的区别是什么?什么时候选择 G1?
- MySQL 的 InnoDB 为什么选用 B+ 树作为索引结构,而不是 B 树或哈希?
- 什么情况下会导致索引失效?
- 说说事务的 ACID 特性,InnoDB 是如何保证原子性和持久性的?
- Redis 常用的数据结构有哪些?在项目中怎么用的?
- Redis 的过期策略和内存淘汰机制分别是什么?
- 缓存穿透、缓存击穿、缓存雪崩分别是什么?如何解决?
- Spring 的 IoC 和 AOP 原理是什么?
- SpringBoot 自动装配的原理是什么?
- 手撕代码:实现一个 LRU 缓存(要求 get/put 时间复杂度 O(1))
- 算法题:判断单链表是否有环,如果有,找到环的入口节点
- TCP 三次握手和四次挥手的过程?为什么挥手需要四次?
- 你有什么要问我的吗?
面试感受 / 反馈
面试官人很好,会引导。Java 基础问得很细,从 HashMap 一路追问到 ConcurrentHashMap 再到锁升级。MySQL 索引部分问了场景题,比如什么情况下联合索引会失效。手写 LRU 是重点,要求用 LinkedHashMap 或 HashMap + 双向链表实现。整体面试体验不错。
准备建议
- Java 集合框架要深入源码,不要只背结论
- JVM 重点掌握内存模型、GC 算法和垃圾回收器对比
- MySQL 索引优化是高频考点,要会分析 EXPLAIN 结果
- 手写代码多练:LRU、链表操作、多线程交替打印
反问示例
- 团队目前主要的技术方向是什么?
- 新人入职后大概多久能上手核心业务?