阿里巴巴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工程师##社招#
全部评论
老哥最后定到了P几
点赞 回复 分享
发布于 2021-08-01 01:38
请问大佬几年经验了?
点赞 回复 分享
发布于 2021-08-03 12:30

相关推荐

不愿透露姓名的神秘牛友
11-21 10:19
点赞 评论 收藏
分享
2 60 评论
分享
牛客网
牛客企业服务