2022 大厂面试题汇总
JAVA基础
- HASHMAP、HASHTABLE、LINKEDHASHMAP的区别
- HASHMAP 结构
- HASHMAP闭环如何产生的
- CONCURRENTHASH结构
- HASHMAP1.8之后结构区别
- 线程池参数,线程状态,线程状态的变化过程
- TreadLocal 结构,为什么引入弱引用?有什么问题?
- 原子类如何实现线程竞争?CAS什么时候退出?ABA问题如何解决?
- AQS实现原理
- 公平锁和非公平锁的区别,哪个效率更高
- Syncronized原理(所升级过程)
- wait/notify和park/unpark的区别
- 多线线程如何有序输出A,B,C
- 讲一讲BIO/AIO/NIO
JVM
- 运行时的数据区
- 类加载过程
- 常用的垃圾回收算法和垃圾回收器
- G1和CMS区别
- CMS并发标记失败问题
- 调优经历
- 线上配置
- 解决过的问题
- 用过哪些JVM工具
- CPU占用率高、内存占用率高符合分析、线程暴涨分析
TOMCAT调优
- 连接池
- 连接方式NIO
- JVM配置
SPRING
- 启动过程
- 实例化Bean过程
- 循环依赖解决方式
- AOP实现过程
- Spring事务实现过程
- 事务失效 场景
SPRINGMVC
- 请求处理过程
SPRINGBOOT
- 有什么优势
- SPI原理
- 启动流程
- 自定义Spring boot启动器
MYSQL
- 常用的存储引擎有哪些
- explain
- 不同存储引擎的区别
- 事务隔离级别有哪些
- 幻读如何产生的 怎么解决
- 介绍一下mvcc
- 日志有哪些,主要用来做什么
- binlog和redo log区别
- binlog里记录了哪些内容
- 锁有哪些?
- 排他锁如何实现
- 索引失效场景
- 聚簇索引和非聚簇索引的区别
- B树和b+书的区别以及场景
- 索引下推 ICP
- SQL优化方案
- SQL执行过程
- 主从同步过程
- 主从同步延迟问题 原因以及解决方案
- 新增一个从节点过程
RPC dubbo
- SPI
- 负载均衡策略有哪些
- 敏感发现服务提供方宕机
- 优雅宕机
- 启动过程
REDIS
- 常用数据结构
- 底层数据结构
- 为什么要动态字符串
- 跳表的结构
- reids什么时候是多线程的?什么时候是单线程的?
- 雪崩、穿透、击穿?解决方案
- 过期策略
- 内存淘汰机制
- 缓存和DB双写 一致性方案(Cache Aside Pattern)
- 并发一致性解决方案(多个客户端同时写一个key)
- 线程模型(NIO IO多路复用)处理请求过程
- 分布式锁的实现原理,以及问题和解决方案
- 锁续命问题
- 主从模式
- 工作原理
- 读、写、数据同步过程
- 全量复制和增量复制判断依据和过程
- 哨兵模式介绍一下
- 集群结构
- 工作原理
- 读、写、数据同步过程
- hash算法(普通hash,一致性HASH,HASH 槽)
ZOOKEEPER
- 集群用的什么算法
- 如何选举的
- 如何保证一致性
- 集群脑裂了解吗?如何解决的
- zookeeper节点有几种角色,分别起什么作用,
- zookeeper 读写请求的处理过程
- zookeeper 同步流程
Linux
- 如何查看系统内存使用情况
- 如何查看系统CUP信息
- 如何查看网络情况
- Linux虚拟内存和缓冲区什么概念
算法
- 红包分配 要求:金额随机,sum分完,个数K 精度0.1
- 判断链表闭环
案例
- 分布式事务一致性解决方案
- TCC
- seata
- 本地化事务
- 消息中间件
- 限流算法有哪些,优缺点
- 分布式唯一号生成算法
- 秒杀方案
- 防止重复下单
- 如何设计一个高可用,高并发的服务。
- 库存超卖问题如何处理
- 热数据如何处理
- 如何实现单点登录