蚂蚁金服经典技术面试题:Tomcat+Redis+线程池与锁+MQ实现
一面:技术面
1.讲一下项目
2.做的主要是Java对吧,讲一下多线程把,用到哪些写一下
3.写了thread和runnable,然后写了线程池,又问了线程池由哪些组件组成,有哪些线程池,分别怎么使用,以及拒绝策略有哪些。
4.什么时候多线程会发生死锁,写一个例子吧,然后我写了一个两个线程,两个锁,分别持有一个,请求另一个的死锁实例。
5.集合类熟悉吧,写一个题目,一个字符串集合,找出pdd并且删除。
6.然后说一下Redis吧,是单线程还是多线程,Redis的分布式怎么做?
7.RPC了解么,我说了主要是协议栈+数据格式+序列化方式,然后需要有服务注册中心管理生产者和消费者。
9.TCP三次握手的过程,如果没有第三次握手有什么问题。
二面:主要问解决问题的思路
1、如果让你实现一个MQ,怎么样保证消息不丢失?
2、硬盘io速度会变慢,有什么解决办法吗?
3、mysql的innodb索引数据结构为什么是b+树,用hash来实现可以吗?
4、分布式事务的实现?
5、如何解决redis和mysql数据一致性?
6、常见的MySQL主从同步方案有哪些?优劣势比较过?
7、先谈秒杀的设计思路?
8、再谈谈秒杀如何防止超卖?
9、你有什么想问我的?
三面
- 说说HaspMap底层原理?再说说它跟HaspTable和ConcurrentHashMap他们之间的相同点和不同点?
- 讲讲jdk1.7和1.8的区别?
- 几种内置的线程池
- MySQL事务隔离级别以及MVCC机制
- Redis缓存雪崩、缓存穿透以及如何解决?
- 分布式架构简单介绍
- CMS收集器和G1收集器最大的区别在哪里?
- 有实际的JVM性能优化经验?重点应该监控哪些指标,以及如何来调整参数?
- Java线程锁有使用过哪些?比如乐观锁、悲观锁类似这样使用区别?
转发+关注,然后添加VX“MXM9809”即可免费获得资料的领取方式!