外观
八股
计算机网络
计算机网络基础
TCP & UDP 区别
URL 输入到浏览器响应经历了什么
网络安全与加密
数字证书?
TLS 握手流程
TCP 机制与优化
三次握手与四次挥手
短连接长连接,防火墙场景下用哪个比较好
TCP 接收缓存接不住了怎么办
TCP 的拥塞控制是为了解决什么问题
TCP 的快速重传解释一下
TCP 怎么保证可靠性的
HTTP和HTTPS 协议
HTTP 和 HTTPS 的区别
HTTPS 是对称加密还是非对称加密
HTTP 怎么解析的
数据库设计
设计原则
数据库的设计过程?
数据库的几种范式分别解决了什么问题
Redis
基础原理
Redis的缓存一致性怎么解决?
Redis的事务讲一下
Redis的数据结构、特点,在项目里是如何使用的
String的底层(SDS)
Redis 的实现原理
Redis 这种实现方式有什么缺陷?
Redis 的 zset 的定义?
Redis 的 zset 类型查询单个数据的时间复杂度?能优化成 O (1) 吗?插入的复杂度呢?
Redis 分布式与集群
Redis 分布式锁原理?
主从数据同步
redlock 问题
如果主从部署,对分布式锁有什么影响?
Redis 宕机怎么办
场景题:100w用户对几个主题投票,每人只能投一次,要实时显示票数排行。设计redis
bitmap、布隆过滤器原理?
为什么要用 Redis 来校验防止 MQ 的重复消费
MySQL
索引基础
MySQL索引的类型?哪种用的比较多?
主键为什么选择自增,分布式系统怎么办
最左匹配原则的原因?
索引结构的分类?
什么时候/情况回表?
MySQL 一张表能创建几个 B + 树?
MySQL 索引用的什么结构?
MySQL 索引的定义
什么是覆盖索引
什么是联合索引
在什么情况下你会考虑建索引
索引场景题
联合索引 A= 10 B > 100 C > 50 这种怎么查?
下面那些语句会用到索引?
where name > "test1" 会加锁吗?为什么?
where id > 10 会加锁吗?什么锁?id > 20 的记录会不会被锁
“性别” 能不能当索引?
二级索引存放的是什么数据
索引原理
MySQL 索引为什么采用 B+ 树
B+ 树的特点
数据库索引的原理?
InnoDb 的索引 为什么不用 B 树
innoDB 的索引结构
还有哪些结构插入和查询复杂度是 O (logn) 的?
MySQL 的底层结构
B+ 树的优点?(基于数据库索引)
索引优化
索引失效的场景?
事务并发问题
写个加锁的 sql 解决你刚刚说的幻读?加的什么锁?
现在有个表,一列 id,一列 name,说一下幻读是怎么发生的?
间隙锁在哪个隔离级别?
事务与隔离级别基础
介绍一下脏读、幻读、不可重复读?
你对事务 (ACID) 的理解是什么?
事务什么场景下会失效
事务回滚的原理
MySQL 隔离级别以及存在的问题?
可重复读解决了什么问题?
选择一个 ACID 特性来介绍
MySQL 隔离级别,默认是哪个?
MySQL锁的分类与实现
mysql 意向锁原理,作用?
for share 和 for update 有什么区别?
这个锁是怎么记录的,存在哪里?
如果没有 select * from t where id = 1 for update 这条记录,会锁什么?能插入 id = 1 吗?能插入 id = 2 吗?
看到 select * from t where id = 1 for update,能想到什么?
MySQL数据存储
分库分表的场景下如果有跨库的查询你会怎么解决?
讲一下分库分表的设计?分库分表组件的选择?为什么使用这个方案?
buffer poll读写?
mysql连接池的好处?
MVCC相关
MVCC 的作用
什么是MVCC
MVCC 原理是什么?
Java 基础
反射机制
Java 的反射原理
面向对象与语言特性
Java的多态
Java数据类型与集合框架
map结构,拓展?
Java 集合的整个体系和继承关系
ArrayList 扩容机制?
Java 的基本数据类型,集合类型?
ArrayList 和 LinkedList 的区别和应用
HashMap 及其变种
HashMap线程安全吗,如何保证线程安全,使用什么集合
HashMap 的 put 流程
怎样定义 HashMap 的 hash 算法
HashMap 和 CocurrentHashMap 的区别
HashMap 的实现
Lambda 与 Stream API
怎么实现多线程聚合
讲一下你平常用过哪些 stream 流的方式
JDK1.7采用头插法,JDK1.8为什么改用尾插法
一个线程占用内存的数量级觉得应该是多少
重写 equals 方法时,建议把 hashcode 方法也重写,原因
object 类常见的方法
一个 32 位操作系统,4G 内存能开多少线程?
Java 里套接字的 API
设计模式
了解哪些设计模式?平时开发的时候有用过设计模式吗?
口述最简单的实现单例的 code
系统架构与运维
高并发为什么不用多进程
那现在下游服务接口延迟高但是暂时没法优化,怎么办?
那要是我在测试环境延迟正常,但在生产环境延迟高,你觉得什么原因?
现在线上有一个接口延迟高,你怎么优化和排查?
Linux 有用过吗?使用过哪些命令?
消息队列
消息队列如何保证消费的有序性?
Kafka、RabbitMQ、RocketMQ之间区别了解吗?
讲一下对消息队列的了解
MQ 在消费端的推拉模式的差异
版本控制
git 命令?
数据结构与算法
口述堆排序过程
优先队列是什么?
操作系统
常见的哈希冲突有哪些
除了系统调用和硬件中断还有其他方式吗
线程和进程的区别?
IO 多路复用,select,poll,epoll 区别?
什么情况下会进入到内核态
内核态和用户态的区别
IO 多路复用 说一下 select 和 epoll
多线程与并发
线程池参数设计?
synchronized加锁的原理
在并发量比较大的情况下,CAS 会不会出现两个线程同时比较且都成功更新的情况?乐观锁在这种情况下能保证并发安全吗?
hashmap 不是线程安全的底层原因
hashmap 多线程情况下使用会出现什么问题
两个线程访问一个资源遇到加锁情况,没抢到锁的线程会进入什么状态
等待状态和阻塞状态的差异
线程的状态 转化过程
怎样理解一个类是不是线程安全的
锁的分类方式是什么
分布式锁常见的实现方式?
单机锁和分布式锁最大的区别?
悲观锁和乐观锁使用场景?
CAS 的过程
synchronized 修饰在类的静态方法上和一个实例方法上有什么区别
线程池执行逻辑 & 参数设置
Java 有哪些锁
死锁是什么?
SingleThreadPollExecutor 是什么?
ThreadPollExecutor 是什么?
使用过什么线程池?
Java 线程模型?
介绍一下你提到的 synchronized 和 ReentrantLock?该怎么选用?
Java 有哪些并发工具类?
如果没有空闲线程,任务怎么办?
等待的任务会占用 CPU 吗?
Java 线程池的底层结构?
线程池的阻塞队列无限长,那最大线程参数是不是没用了,这个最大值的意义是什么
线程池有几种状态?
线程池 + future 怎么实现
分布式系统与大数据
有一个千万级数据表,CURD效率低,如何优化?
除了 ES 还有别的实现方法吗?
ES 怎么实现的地理查询?
如果你的整条链路宕机了,你会先考虑恢复什么?
字符串去重
Spring框架
介绍一下Spring的启动流程?
Spring 如何解决循环依赖(三级缓存)
介绍一下Spring AOP?
spring 怎么实现 bean 单例?
介绍一下 @Configuration 注解
你用过哪些 Spring 的注解
如果一个Bean没有注册成功,会报什么错?服务能够正常启动吗?
Spring 的自动装配(SPI 机制)是什么
介绍一下类的懒加载
@Autowired 和 @Resource 的区别是什么?
人工智能与机器学习
有利用大模型开发自己的项目吗?
最近有关注ai相关的资讯和技术吗?
SQL语法及优化
根据名字进行分组查询签到次数降序排列
id 乱序的话影响读还是写的性能(写 -> 页分裂,随机 io)?
自增 id 的好处?
join 语句场景题
Java 虚拟机(JVM)
介绍一下类加载机制?
Java 垃圾回收?
有遇到过FullGC吗?或者内存泄漏的问题?如何解决?你会怎么处理?
JVM 内存模型
Volatile
引导大对象问题?
cglib 动态生成的代理类是如何加载进 JVM 的?
程序计数器是干嘛用的?
判断对象是否可回收的方法?
什么情况下会导致 full GC
C++
private继承
C++多继承
一个函数里面有一个lambda表达式,要让其他函数访问到,返回值应该是什么类型?
lambda表达式捕获列表?
函数模板和类模板有什么区别?
C++11 的新特性
大厂八股 TOP 10 题型