|
Java基础
- ==和equals的区别,equals的默认实现是什么
- ArrayList和LinkedList在扩容时是怎么实现的
- HashMap的底层实现,ConcurrentHashMap的存储结构是怎样的
- 你怎么选择synchronized和其他的Lock,分别说说实现原理
- AQS的实现原理,公平锁与非公平锁
- 多线程同步有哪些方法(synchronized、wait和notify、锁、volatile、局部变量、阻塞队列)
- sleep和wait会释放锁吗
- 可以直接调用Thread类中的run()方法吗
- 线程越多效率越高吗,为什么(线程切换成本、IO等待)
- Java中线程的五种状态
- ThreadLocal应用场景及原理
- 线程池核心参数有哪些,怎么设置
- 对泛型的理解 / 说说泛型擦除的概念,用BeanUtils拷贝List会发生什么,如何给List<Integer>里面加一个String(反射,隐式转换)
- String s = new String(&#34;abc&#34;);语句对于内存的分配和使用
- Java中有哪几种引用类型
- Jvm五大分区及其作用(堆、虚拟机栈、本地方法栈、程序计数器、方法区)
- 什么时候会发生StackOverFlowError
- JVM是如何加载类的
MySQL
- InnoDB使用了什么数据结构,为什么
- 聚簇索引和非聚簇索引的区别
- 普通索引和唯一索引的区别,如何保证唯一的
- 索引失效的情况(最左匹配、使用函数、索引对应的数据过多,隐式类型转换)
- 对SQL慢查询会考虑哪些优化(非必要字段;Explain;索引失效,数据量;联表优化)
- InnoDB是如何保证事务的,如何保证原子性、一致性、隔离性、持久性
- 可重复读解决了哪些问题(核心是一致性读,存在幻读问题;事务更新时只能用当前读)
- MVCC的作用是什么,版本号指的是什么
Spring
- AOP的实现方式
- 事件(ApplicationEvent)的作用
- 什么情况下@Transactional注解会失效(private/static/final,rollbackFor设置错误,异常被catch,同一个类的方法调用)
Redis
- 为什么不能使用大key(占用单线程IO、主从同步)
- 缓存穿透和缓存雪崩是什么,解决方案
- Redis的持久化方案及其优缺点(RDB和AOF)
- Redis 数据结构 压缩列表和跳跃表的区别
消息队列MQ
- Kafka的ISR
- Kafka的高水位
- 顺序消息的实现原理
- 幂等消息的实现原理
- 怎么解决重复消费问题
- 消息丢失和消息重复的可能原因
- 消息积压的可能原因有哪些(消费能力不足)
- Kafka的多分区和多副本机制有什么作用/优缺点
架构设计
- 异步线程与kafka的区别(持久化、消息堆积,重复消费)
- 位运算的应用(用户标签,布隆过滤器)
- 一亿个数,取出最大的前100个(局部淘汰法、分治法、最小堆法)
- 限流算法(滑动窗口与固定时间窗口)
- HashMap的实现,哈希冲突(拉链法、再哈希)
|
|