【导读】
本文是阿里巴巴自身技术专家们结合多年的工作、面试经验总结提炼而成的面试真题。通过这些面试题,还可以间接地了解技术大牛们出题思路与考察要点。
alibaba4面核心面试题
01 Zookeeper 部分
- CAP定理
- ZAB协议
- leader选举算法和流程
02 Redis 部分
- Redis的应用场景
- Redis支持的数据类型(必考)
- zset跳表的数据结构(必考)
- Redis的数据过期策略(必考)
- Redis的LRU过期策略的具体实现
- 如何解决Redis缓存雪崩,缓存穿透问题
- Redis的持久化机制(必考)
- Redis的管道pipeline
03 Mysql 部分
- 事务的基本要素
- 事务隔离级别
- 如何解决事务的并发问题(脏读,幻读)?
- MVCC多版本并发控制?
- binlog,redolog,undolog都是什么,起什么作用?
- InnoDB的行锁/表锁?
- myisam和innodb的区别,什么时候选择myisam?
- 为什么选择B+树作为索引结构?
- 索引B+树的叶子节点都可以存哪些东西?
- 查询在什么时候不走(预期中的)索引?
- sql如何优化?
- explain是如何解析sql的?
- order by原理
04 JVM 部分
- 运行时数据区域(内存模型)
- 垃圾回收机制
- 垃圾回收算法
- Minor GC和Full GC触发条件
- GC中Stop the world
- 各垃圾回收器的特点及区别
- 双亲委派模型
- JDBC和双亲委派模型关系
05 Java 基础部分
- HashMap和ConcurrentHashMap区别
- ConcurrentHashMap的数据结构
- 高并发HashMap的环是如何产生的?
- volatile作用
- Atomic类如何保证原子性(CAS操作)
- synchronized和Lock的区别
- 为什么要使用线程池?
- 核心线程池ThreadPoolExecutor的参数
- ThreadPoolExecutor的工作流程
- 如何控制线程池线程的优先级
- 线程之间如何通信
- Boolean占几个字节
- jdk1.8/jdk1.7都分别新增了哪些特性?
- Exception和Error
06 Spring 部分
- Spring的IOC/AOP的实现
- 动态代理的实现方式
- Spring如何解决循环依赖(三级缓存)
- Spring的后置处理器
- Spring的@Transactional如何实现的?
- Spring的事务传播级别
- BeanFactory和ApplicationContext的联系和区别
07 其他部分
- 高并发系统的限流如何实现?
- 高并发秒杀系统的设计
- 负载均衡如何设计?
alibaba面试题答案:
因篇幅问题,面试题答案整理在pdf文档里,需要面试题答案的,一键三连后 关注下方公众号即可免费获取~
为应对阿里面试,我做了哪些准备?
(一)调整自己的心态,正确面对得失
面试中常见的问题,主要是心态,面试调整心态是第一位的,如何调整成最佳心态呢?很多求职者在面试过程中自己思路不清晰,语言不流畅,说话毫无逻辑,会不断否定自己,归根结底都是面试心态问题,所以调整自己的心态,正确面对得失是非常重要的,我的方法是给自己足够的心理暗示。
(二)提升技术,扩宽知识
对于程序员来说,要想成长为一名行业内的大牛大神级别的人物,那么唯一的办法就是通过学习,来不断提升自己的技术,扩宽知识,达到一定的高度和深度。那么如何提升自己的技术,扩宽自己的知识储备呢?
以下是我个人的一些做法,希望可以给各位提供一些帮助:
- 21天啃完283页的pdf文档
Java部分:Java基础,集合,并发,多线程,JVM,设计模式
数据结构算法:Java算法,数据结构
开源框架部分:Spring,MyBatis,MVC,netty,tomcat
分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等
微服务部分:SpringBoot,SpringCloud,Dubbo,Docker
- 实战系列:Spring全家桶+Redis等
- 其他相关的电子书:源码+调优
(三)刷题
如何刷题?这是很多现在面试者心中的困惑,我们都知道,面试前刷题是很有必要的,毕竟很多题目都有一定的共性,刷足够题目就能够做到举一反三,甚至在面试时,被问到原题,能够侃侃而谈,那么刷题如何进行呢?建议:最好找一些历年的面试原题,分专题来对自己进行训练。
以下是我私藏的面试题库: