记录一次阿里的java后端面试
一面
- HashMap底层数据结构和原理
- ConcurrentHashMap线程安全的原理
- Sync和Lock的区别,底层原理
- CAS中ABA如何解决
- 类加载机制中双亲委派(不理想)
- ThreadLocal底层原理
- Java线程池关键参数及其拒绝策略说明
- Jvm内存结构详细阐述
- AOP底层原理
- JDK动态代理和CGlib动态代理对比,各自底层的实现原理
- RPC框架中服务消费者如何拿到服务提供者的请求信息,各自职责(估计是在问心跳包)(不理想)
- 注册中心的治理
- Hystrix熔断器的工作原理,熔断半开是指什么(不理想)
- Ribbon使用过吗?
- Kafka消费者,生产者,分区,topic的关系是什么,消费者与分区的数量的对应关系是什么
- 分布式事务如何解决的?事务消息和普通消息的区别
- BASE理论和CAP理论是指什么
- ES中倒排索引和普通索引的区别(不会)
- Mybatis中二级缓存和一级缓存的区别(我把Mybatis整个流程阐述了一次)
- Netty中粘包和拆包是指什么?
- TCP中为什么握手是三次而挥手是四次?(不理想)
.
二面
- 用过什么设计模式?描述一下场景
- SpringBean生命周期
- 事务的原理
- Spring声明式事务为什么能每次拿到相同的connection(估计是在问ThreadLocal)(不理想)
- Springboot的starter组件的结构是什么样的
- HashMap1.7和1.8的区别在哪
- Sync和ReentrantLock的区别
- 公平锁和非公平锁的区别
- 给了一个实际出现线程安全的场景,判断哪些操作会出现阻塞(不理想,没理解问题)
- JVM内存结构的介绍
- 垃圾回收算法有哪些?重点说说复制算法
- 常用的垃圾回事器有哪些?CMS的原理阐述一下
- Netty使用过吗?讲下原理
- 粘包和拆包的解决方案有哪些?
- 使用过哪些Redis的数据结构
三面
- MySQL索引底层结构(不理想)
- 聚簇索引和非聚簇索引
- 如何优化索引查询
- 组合索引的使用场景(不理想)
- MySQL隔离级别
- 脏读、幻读的定义
- ThreadLocal的原理(不理想)
- Redis实现分布式锁中,过期时间如何设置的(估计是在问NX和PX如何保持一致性)(不理想)
- 线程池有哪些参数是自己用过的,具体的使用场景(不理想)
- 匿名内部类使用外部变量为什么必须是final修饰的(不理想)
- 一条TCP连接上可以发多少个HTTP请求(不知道)
- 看一段代码(SpringAOP使得this失效)
- 手写消费者和生产者(不理想)
- MQ如何解决分布式事务
- 消息幂等性如何解决
- 消息顺序消费如何解决,哪些MQ有这个特性
- FactoryBean和BeanFactory的区别
- SpringMVC的拦截器和Filter的异同,自己配置过吗?(不理想)
- Nginx的负载均衡方式有哪些?正向代理和反向代理的区别