阿里巴巴java岗面经(社招)
[一面]
1.锁
了解哪些锁
乐观锁和悲观锁原理;CAS 原理;乐观锁为什么适合读场景;
什么情况下产生死锁;怎么排查;怎么解决
synchronized 锁原理
synchronized 锁怎么保证可重入性,可见性;抛异常怎么办
synchronized 锁和 lock 锁的区别
2个线程同时访问 synchronized 的静态方法,2个线程同时访问一个 synchronized静态方法和非静态方法,分别怎么进行
2.volatile
作用和原理
怎么保证可见性
3.Hash
一致性Hash 的原理,解决什么问题
数据倾斜怎么办
为什么是2的32次方,20次方可以么
4.Redis
什么是缓存穿透
布隆过滤器原理;怎么使用;有什么问题;怎么解决
Redis 分布式锁;过期时间怎么定;如果一个业务执行时间比较长,锁过期了怎么办;怎么保证释放锁的原子性
Redlock 锁原理
5.MySQL
事务;ACID 特性;实现原理;
脏读/脏写/幻读/隔离级别;实现原理
MVCC
间隙锁原理;什么情况下会使用间隙锁;锁失效怎么办;其他锁了解么,行锁,表锁
索引左前缀原理,怎么优化,哪些字段适合建索引,索引有什么优缺点
线上遇到过慢查询吗;怎么定位,优化;
Explain 中 using filesort 表示什么意思,产生原因,怎么解决
6.项目
怎么理解幂等性;有遇到过实际场景么;怎么解决
为什么用Redis;Redis 过期了或者数据没了怎么办
图片
[二面]
1.HashMap
数据结构
put 和get 过程
为什么同一个槽的元素数量超过8 要转红黑树;红黑树节点添加过程
什么时候扩容;为什么是0.75;扩容步骤;为什么分高低位
JDK 1.7到1.8有什么优化化;Hash 算法做了哪些优化
头插法有什么问题;为什么线程不安全
2.Arraylist
数据结构
为什么数组要加transient
add 和 get 时间复杂度
扩容原理
与Linkedlist 区别;分别在什么场景下使用,为什么
3.并发
并发工具类了解哪些
Reentrantlock 的实现原理;加锁和释放锁的过程
AQS 中公平锁和非公平锁,可重入,可中断特性是怎么实现的
4.ConcurrentHashmap
数据结构
put,get,size,扩容,怎么保证线程安全的
JDK 1.7和1.8 实现的区别,Hash 算法做了哪些优化
为什么用synchronized
分段锁有什么问题
5.Threadlocal
用过么;什么场景下使用的
原理
Hash冲突怎么办
扩容实现
会有线程安全问题么
内存泄漏产生原因,怎么解决
6.JVM
垃圾收集算法,各有什么优缺点
RC Roots 有哪些
什么情况下会发生Full GC
7.设计模式
工厂,策略,装饰者,桥接模式
单例模式会有什么问题
8.Spring
AOP 的理解,解决什么问题,实现原理
Jdk动态代理/cglib 的区别;优缺点;怎么实现方法的调用的
9.MySQL
一个索引(a,b,c),有一条 SQL 其中 where a = 1 and b > 1 and c =1;可以用到索引么,为什么没用到
B+树的结构;为什么不用红黑树,B树;一千万的数据大概多少次IO
聚簇索引/覆盖索引/主键索引;底层结构
没有主键怎么办;会自己生成主键为什么还要自定义主键;自动生成的主键有什么问题
10.Redis
线程模型
单线程有什么优缺点
为什么单线程能保证高性能,什么情况下会出现阻塞,怎么解决
11.Kafka
怎么保证高可用性
讲讲它的设计架构
为什么读写都在主分区,这样有什么优缺点
12.其他
DDD 了解吗
平常怎么学习
13.项目介绍
图片
[三面]
1.Thread
线程有哪些状态
等待状态怎么产生
中止状态
Interrupt() 方法
怎么理解线程安全,哪些场景会产生线程安全问题,有什么解决办法
while(true)里面一直new thread().start()会有什么问题
2.MySQL
多事务执行会产生哪些问题,怎么解决这些问题
分库分表做过么;怎么做到不停机扩容;双写数据丢失怎么办
跨库事务怎么解决
3.分库分表做过么,怎么做到不停机扩容,双写数据丢失怎么办,跨库事务怎么解决
4.Redis
集群模式;节点扩容的过程;各个节点间怎么通信
5.Java
对象一定分配在堆上么
JIT
分层编译
逃逸分析
6.Elasticsearch
写入,查询过程,底层实现,为什么这么设计
脑裂问题,怎么产生的,如何解决
7.网络
socket
tcp和udp的实现区别
8.项目
设计一个秒杀系统能承受千万级并发,如果redis也扛不住了怎么办
项目介绍
图片
[四面]
1.Java
讲讲你最熟悉的技术,jvm,mysql,redis,具体哪方面
new Object[100]对象大小,它的一个对象引用大小,对象头结构
2.mysql
主从复制,主从延时怎么解决
3.redis
怎么保证redis和mysql的一致性
redis网络原因执行超时了会执行成功么,那不成功怎么保证数据一致性
redis持久化过程,aof持久化会出现阻塞么
一般什么情况下使用rdb,aof
4.分布式
dubbo和spring cloud区别,具体区别,分别什么场景使用
5.项目
线上有遇到大流量的情况么,产生了什么问题,为什么数据库2000 QPS 就撑不住了,有想过原因么,你们当时怎么处理的
给了几个场景解决分布式事务问题
限流怎么做,如果让你设计一个限流系统,怎么实现
项目介绍
你们的业务对公司有什么实际价值,体现在哪,有什么数据指标么
图片
[五面]
1.Linux
怎么理解用户态,内核态;为什么要分级别;有几种转换的方式,怎么转换的,转换失败怎么办
2.Java
怎么理解异常,它的作用是什么,你们工作中是怎么使用的
jvm元空间内存结构,永久代有什么问题
3.项目
你们用redis么,用来做什么,什么场景使用的,遇到过什么问题,怎么解决的
你平时开发中怎么解决问题,假如现在线上有一个告警,你的解决思路,过程
你们为什么要用mq,遇到过什么问题么,怎么就解决的
你觉得和友商相比,你们的优势在哪
#阿里巴巴##面经##java工程师##社招#