电话一面
-
自我介绍,及为什么读研等等。
-
JVM内存结构,垃圾回收。
-
Java并发
-
- Java的锁有哪些
参考答案:公平锁/非公平锁;是否可重入;独享锁/共享锁,读写锁ReentrantReadWriteLock则可以看成是独享锁和共享锁的组合;悲观锁/乐观锁(CAS)
- Java的锁有哪些
-
- synchronized与lock的区别
-
架构及优化
-
- 总体的思路
-
- 负载均衡的种类:四层,根据ip+port;七层,根据url;DNS(参考linux负载均衡总结性说明(四层负载/七层负载))。负载均衡的算法,一致性哈希
-
- mysql主从和主备的区别。mysql的主要存储引擎及其区别。事务。
-
- 分布式事务:可参考4.4.5 详解分布式一致性协议与第六节 分布式事务回答
-
- 分布式锁
我提到了可以用redis和zookeeper来实现分布式锁,但他还问怎么用数据库实现,可参考基于数据库实现的分布式锁
- 分布式锁
-
- 数据库与缓存的一致性
电话二面
- 自我介绍等。
- 线程池的核心参数
- 锁升级,轻量级锁。CAS怎么解决ABA问题。volatile。
- JVM堆区结构。怎么调优。G1的优点。线上的OOM问题怎么排查。CPU load太高怎么排查,你的第一感觉是什么问题,答:死循环等代码问题。问:GC有没有可能?1
- NIO2, 3,4
一些关键知识点:
BIO的数据读写必须阻塞在一个线程内等待其完成。
IO多路复用:可以用一个线程处理多个网络连接
Selector选择器:不再轮询通道,而是轮询事件。基于事件驱动机制。epoll。
NIO中可以操作直接内存,也是比BIO性能好的一个原因。
5中把一个IO操作分成两个步骤:发起IO请求和实际的IO操作,来区分是否阻塞,和同/异步。我觉得似乎可以帮助理解。 - Netty 6
- 分库分表
- 分布式事务。TCC
- 主键索引
- 大数据产品熟悉吗?比如流计算,像Spark,Flink。
- zookeeper选举过程7。用zk实现分布式锁
- kafka吞吐比较高的原因。消息顺序性。
- 秒杀
一些相关链接:
蚂蚁金服面试经验分享,阿里的offer真的不难
蚂蚁金服的一次面试经历(一面、二面)
蚂蚁金服社招笔试——根据需求实现一个转账接口