30k 的 Java 面试题,哭着也要背完!(附答案)
Java 基础
Java 语言有哪些特点
面向对象和面向过程的区别
面向对象编程三大特性
八种基本数据类型的大小,以及他们的封装类
说说你对 JDK、JRE、JVM 的理解
说说标识符的命名规则
熟悉 instanceof 关键字的作用吗?
说说 Java 自动装箱与拆箱
说说重载和重写的区别
Integer a= 127 与 Integer b = 127 相等吗?
抽象类和接口的对比
什么是内部类?
内部类有什么优点?
内部类有哪些应用场景?
局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上 final?
为什么 Java 中只有值传递?
熟悉 JDK 哪些包?
说说 Java 代码初始化顺序
说说你对 equals 与== 的理解
说说 hashcode 的作用
String、StringBuffer 和 StringBuilder
说说 HashMap 和 HashTable 的区别
Collection 与 Collections 的区别
熟悉 Java 的对象引用类型吗?
说说泛型常用特点
Java 创建对象有几种方式?
有没有可能两个不相等的对象有相同的 hashcode
深拷贝和浅拷贝的区别是什么?
final 有哪些用法?
final finally finalize 区别
说说 this 关键字的用法
说说 super 关键字的用法
说说 this 与 super 的区别
static 都有哪些用法?
平时使用 static 应该注意些什么?
&和 &&的区别?
switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?
两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句话对不对?
a=a+b 与 a+=b 有什么区别吗?
try catch finally,try 里有 return,finally 还执行么?
说说你对 Excption 与 Error 包的理解
Java 序列化中如果有些字段不想进行序列化,怎么办?
说说 Java 中 IO 流
简单说说 Java IO 与 NIO 的区别
说说你对 Java 反射的理解
说说反射机制的优缺点
Object 有哪些常用方法?大致说一下每个方法的含义
获取一个类 Class 对象的方式有哪些?
String s = new String("abc")创建了几个 String 对象?
说说你对 String 类的 intern()方法的理解
String 类的常用方法都有哪些?
String 字符串为什么说是不可变?
简单说说 Java 中接口和抽象类的区别
BIO、NIO、AIO 有什么区别?
Files 的常用方法都有哪些?
JDK 1.8 之后有哪些新特性?
什么是多态机制?
值传递和引用传递有什么区别?
Class.forName 和 ClassLoader 有什么区别 ?
简单说说 List,Set,Map 三者的区别?
Collection 和 Collections 的区别
ArrayList 和 LinkedList 的区别有哪些?
有数组了为什么还要搞个 ArrayList 呢?
ArrayList 是线程安全的么?
说说 ArrayList 的扩容机制
ArrayList 在 JDK1.7 和 JDK1.8 版本初始化的区别
我想 ArrayList 集合中加入 1 万条数据,应该怎么提高效率?
HashMap 和 Hashtable 的区别
HashMap 的长度为什么是 2 的幂次方?
HashMap 是线程安全的么?
什么是加载因子?加载因子为什么是 0.75 ?
为什么 HashMap 的初始化长度是 16 ?
为什么树化是 8,退树化是 6?
请说说 HashMap 多线程操作导致死循环问题
为什么重写 equals 方法的时,需要重写 hashCode 方法呢?
ConcurrentHashMap 和 Hashtable 的区别
JDK1.8 中满足什么条件后将链表转化成红黑树?又什么时候转回来?
HashMap 为什么会引入红黑树做查询优化呢?
为什么把 8 作为阈值?
HashMap 如何解决冲突?
我们自定义类来作为 HashMap 的 key 吗?
HashMap 的长度为什么是 2 的 N 次方呢?
HashMap 与 ConcurrentHashMap 的异同
简单说说 HashMap 的 put 方法过程
说说我们写的 java 程序是如何执行的?
JVM
Java 是如何实现跨平台的?
什么是 JVM ?
说说 JDK、JRE、JVM 的关系?
请你描述一下 JVM 的内存区域?
运行时常量池的作用是什么?
直接内存是什么?
为什么使用元空间替换了永久代?
方法区、堆、栈之间到底有什么关系?
为什么需要两个大小一样的 Survivor 区?
新生代中 Eden:S1:S2 为什么是 8:1:1?
请你描述一下 Java 中的类加载机制?
描述一下 JVM 加载 Class 文件的原理机制?
类加载器是有了解吗?
熟悉哪些类加载器?
每个类加载器加载哪个目录中的类库
Java 虚拟机是如何判定两个 Java 类是相同的?
类加载器是如何加载 class 文件的?
说说什么是双亲委派模型以及作用
双亲委派模型的工作过程?
如何破坏双亲委派模型?
你知道哪些打破双亲委派机制的例子?
如何自定义类加载器?
对象分配内存是否线程安全?
在 JVM 中,对象是如何创建的?
内存分配方式有哪些呢?
对象一定分配在堆中吗?
请你说一下对象的内存布局?
对象访问定位的方式有哪些?
GC 是什么?为什么要 GC
如何判断对象已经死亡?
说说你对 Java 中四大引用类型的理解
如何判断一个不再使用的类?
了解 finalize 方法吗?
你知道哪些垃圾收集算法?
说一下 JVM 有哪些垃圾回收器?
如何选择垃圾收集器?
简单说说你对 G1 收集器的理解
ZGC 了解吗?
能够触发条件 Full GC 有哪些?
说说垃圾回收过程
你知道哪些 JVM 调优参数?
8G 内存的服务器该如何设置相应 JVM 参数?
如何排查线上系统 CPU 飙高
说说内存泄漏和内存溢出
生产环境服务器变慢,怎么办?
JVM 监控与分析工具你用过哪些?
如何开启和查看 GC 日志?
你们生产环境用的什么 JDK?如何配置的垃圾收集器?
怎么打出线程栈信息?
线上出现 OOM 的问题,怎么排查?
MinorGC、MajorGC、FullGC 什么时候发生?
如何解决线上 GC 频繁的问题?
简述一下内存溢出的原因,如何排查线上问题?
并发编程
说说 Java 中实现多线程有几种方法
如何停止一个正在运行的线程
notify()和 notifyAll()有什么区别?
sleep()和 wait() 有什么区别?
volatile 是什么?可以保证有序性吗?
Thread 类中的 start() 和 run() 方法有什么区别?
为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
为什么 wait 和 notify 方法要在同步块中调用?
Java 中 interrupted 和 isInterruptedd 方法的区别?
Java 中 synchronized 和 ReentrantLock 有什么不同?
有三个线程 T1,T2,T3,如何保证顺序执行?
SynchronizedMap 和 ConcurrentHashMap 有什么区别?
什么是线程安全
Thread 类中的 yield 方法有什么作用?
说一说自己对于 synchronized 关键字的了解
说说你是如何使用 synchronized 的?
Vector 是一个线程安全类吗?
volatile 关键字的作用?
常用的线程池有哪些?
简述一下你对线程池的理解
ThreadPoolExecutor 有哪些常用的方法?
线程池中 submit() 和 execute()方法有什么区别?
线程池中线程是如何复用的?
了解线程池状态吗?
锁的优化机制了解吗?
说说进程和线程的区别?
产生死锁的四个必要条件?
如何避免死锁?
线程池核心线程数怎么设置呢?
Java 线程池中队列常用类型有哪些?
线程池原理知道吗?以及核心参数
线程池的拒绝策略有哪些?
线程安全需要保证几个基本特征?
说一下线程之间是如何通信的?
CAS 的原理呢?
CAS 有什么缺点吗?
引用类型有哪些?有什么区别?
说说 ThreadLocal 原理?
为什么要用 ThreadLocal?
Entry 的 key 为什么设计成弱引用?
ThreadLocal 真的会导致内存泄露?
如何解决内存泄露问题?
线程池中如何共享数据?
ThreadLocal 有哪些用途?
说说你对 JMM 内存模型的理解?为什么需要 JMM?
多线程有什么用?
说说 CyclicBarrier 和 CountDownLatch 的区别?
什么是 AQS?
什么是 Callable 和 Future?
什么是阻塞队列?阻塞队列的实现原理是什么?
如何使用阻塞队列来实现生产者-消费者模型?
什么是多线程中的上下文切换?
什么是 Daemon 线程?它有什么意义?
乐观锁和悲观锁的理解及如何实现,有哪些实现方式?
Spring
什么是 spring?
你们项目中为什么使用 Spring 框架?
Autowired 和 Resource 关键字的区别?
依赖注入的方式有几种,各是什么?
Spring 核心模块有哪些?
说说你对 Spring MVC 的理解
Spring MVC 常用的注解有哪些?
谈谈你对 Spring 的 AOP 理解
Spring AOP 和 AspectJ AOP 有什么区别?
在 Spring AOP 中,关注点和横切关注的区别是什么?
什么是通知呢?有哪些类型呢?
说说你对 Spring 的 IOC 是怎么理解的?
解释一下 spring bean 的生命周期
解释 Spring 支持的几种 bean 的作用域?
Spring 基于 xml 注入 bean 的几种方式?
Spring 框架中都用到了哪些设计模式?
说说 Spring 中 ApplicationContext 和 BeanFactory 的区别
Spring 框架中的单例 Bean 是线程安全的么?
Spring 是怎么解决循环依赖的?
说说事务的隔离级别
说说事务的传播级别
Spring 事务实现方式
Spring 框架的事务管理有哪些优点
事务三要素是什么?
事务注解的本质是什么?
jsp 和 servlet 有什么区别?
jsp 有哪些内置对象?作用分别是什么?
说一下 jsp 的 4 种作用域?
session 和 cookie 有什么区别?
说一下 session 的工作原理?
如果客户端禁止 cookie 能实现 session 还能用吗?
spring mvc 有哪些组件?
说说 Spring IoC 调用过程
说说 Spring DI 调用过程
说说 Spring AOP 调用过程
说说 Spring MVC 调用过程
Spring Boot
什么是 Spring Boot?
为什么要用 Spring Boot
Spring Boot 与 Spring Cloud 区别
Spring Boot 有哪些优点?
Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
Spring Boot 的自动配置是如何实现的?
什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?
Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?
Spring Boot 2.X 有什么新特性?与 1.X 有什么区别?
SpringBoot 支持什么前端模板,
SpringBoot 的缺点
运行 Spring Boot 有哪几种方式?
Spring Boot 需要独立的容器运行吗?
开启 Spring Boot 特性有哪几种方式?
Spring Boot 实现热部署有哪几种方式?
如何在 Spring Boot 启动的时候运行一些特定的代码?
Spring Boot 有哪几种读取配置的方式?
熟悉 JavaConfig 吗?
Spring Boot 的自动配置原理是什么
你如何理解 Spring Boot 配置加载顺序?
什么是 YAML?
YAML 配置的优势在哪里 ?
Spring Boot 是否可以使用 XML 配置 ?
spring boot 核心配置文件是什么?bootstrap.properties 和 application.properties 有何区别 ?
什么是 Spring Profiles?
Spring Boot 中的监视器是什么?
如何优化对 Spring Boot 性能
您用过哪些 starter maven 依赖项?
Spring Boot 中的 starter 到底是什么 ?
spring-boot-starter-parent 有什么用 ?
Spring Boot 如何实现打包
Spring Boot 源码分析
Spring Boot 实战
Spring Cloud
什么是 Spring Cloud ?
什么是微服务?
Spring Cloud 有什么优势
微服务之间如何独立通讯的?
什么是服务熔断?什么是服务降级?
请说说 Eureka 和 zookeeper 的区别?
Spring Boot 和 Spring Cloud 的区别?
负载平衡的意义什么?
什么是 Hystrix?它如何实现容错?
什么是 Hystrix 断路器?我们需要它吗?
说说 RPC 的实现原理
Eureka 自我保护机制是什么?
什么是 Ribbon?
什么是 Netflix Feign?它的优点是什么?
Ribbon 和 Feign 的区别?
Spring Cloud 的核心组件有哪些?
说说 Spring Boot 和 Spring Cloud 的关系
说说微服务之间是如何独立通讯的?
Spring Cloud 如何实现服务的注册?
什么是服务熔断?
了解 Eureka 自我保护机制吗?
熟悉 Spring Cloud Bus 吗?
Spring Cloud 断路器有什么作用?
了解 Spring Cloud Config 吗?
说说你对 Spring Cloud Gateway 的理解
为什么会出现 Nacos?
Nacos 服务是如何判定服务实例的状态?
Nacos 中的负载均衡底层是如何实现的?
为什么 Nacos 需要一致性协议
为什么 Nacos 选择了 Raft 以及 Distro
MyBatis
JDBC 有几个步骤?
什么是 MyBatis?
什么是 ORM?
说说 ORM 的优缺点
说说 MyBatis 的优缺点
MyBatis 是如何进行分页的?
分页插件的基本原理是什么?
简述 Mybatis 的插件运行原理?
说说 Mybatis 的缓存机制
MyBatis 动态 sql 有什么用?
Xml 映射文件中有哪些标签?
MyBatis 是否支持延迟加载?
延迟加载的基本原理是什么?
mapper.xml 文件对应的 Dao 接口原理是?
MyBatis 中见过什么设计模式?
Dao 接口里的方法,参数不同时能重载吗?
#{}和 ${}的区别是什么?
MyBatis 执行批量插入,能返回数据库主键列表吗?
不同的 xml 映射文件,id 是否可以重复?
MyBatis 中 Executor 执行器的区别是?
为什么说 MyBatis 是半自动 ORM 映射工具?
MyBatis 全局配置文件中有哪些标签?
当实体类中的属性名和表中的字段名不一样时怎么办 ?
模糊查询 like 语句该怎么写?
MyBatis 编程步骤?
简述一下 MyBatis 的手动编程步骤?
MyBatis 工作的流程是?
如果是你来设计 MyBatis,你会怎么设计?
MySQL
什么是 MySQL?
简单说说 MySQL 的架构是怎样的
简述执行 SQL 语言的过程
三大范式?InnoDB 与 MyISAM 的区别?
说说你对自增主键理解?
为什么自增主键不连续
Innodb 为什么推介用自增 ID?
说说 MySQL 中 in 和 exists 的区别
什么是索引?有什么优缺点?
索引的类型有哪些?
索引有哪些种类?
索引底层数据结构?
索引的使用场景有哪些?
Hash 索引和 B+树的区别?
B 树与 B+树区别?为何用 B+树?
索引设计原则(查询快,占用空间少)
索引失效场景?
如何创建索引?
什么是聚簇索引,什么是非聚簇索引?
什么是回表?
非聚簇索引一定会回表查询吗?
联合索引的建立规则?
最左匹配原则?
什么是前缀索引?
count(1)、count(*) 与 count(列名) 的区别?
一条查询 SQL 执行顺序是什么?
什么是触发器?触发器的使用场景有哪些?
百万级数据如何删除
普通索引和唯一索引怎样选
一条 SQL 查询语句是怎么执行的?
使用 Innodb 的情况下,一条更新语句是怎么执行的?
说说 MySQL 使用 explain 的关键字段
两阶段提交(一条更新语句怎么执行?)
MySQL 的事务原理
什么是幻读,脏读,不可重复读呢?
事务的隔离级别有哪些?MySQL 的默认隔离级别是什么?
为什么不要使用长事务?
MySQL 的主从延迟,你怎么解决?
说说 ACID 实现原理
说说 MySQL 中几种日志 log
那你说说 redo log 与 bin log 的区别?
说说幻读的问题
MySQL 是如何解决幻读?
MySQL 中有哪些锁?
熟悉 MVVC 吗
你对 MVCC 原理理解?
Read View 里面包含些什么?
数据可见性规则是怎样实现的?
数据库表创建需要注意什么?
说说 InnoDB 引擎的行锁模式及其是如何实现的?
说说 MySQL 主从复制
一条 SQL 语句查询一直慢会是什么原因?
说说你的 SQL 调优思路
MySQL 优化手段有哪些
limit 1000000 加载很慢的话,你是怎么解决的呢?
如何选择合适的分布式主键方案呢?
SQL 优化的一般步骤是什么
如果某个表有近千万数据,CRUD 比较慢,如何优化?
如何写 sql 能够有效的使用到复合索引?
说一下大表查询的优化方案
什么是数据库连接池?为什么需要数据库连接池呢?
一条 sql 执行过长的时间,你如何优化,从哪些方面入手?
有关心过业务系统里面的 sql 耗时吗?统计过慢查询吗?对慢查询都怎么优化过?
MySQL 数据库 CPU 飙升的话,要怎么处理呢?
Redis
你觉得 Redis 是什么?
Redis 有哪些特点?
分布式缓存常见的技术选型方案有哪些?
说一下 Memcache 与 Redis 的区别都有哪些?
现在让你实现本地缓存,你有哪些方式
为什么要用 Redis?
Redis 的应用场景有哪些?
说一下 Redis 通讯协议是什么?有什么特点?
请说一下 Redis 支持的哪些数据类型
一个字符串类型的值能存储最大容量是多少?
Redis 各个数据类型最大存储量分别是多少?
请介绍一下 Redis 的数据类型 SortedSet(zset)以及底层实现机制?
有了解过 Redis 事务吗?原理是什么?
Redis 事务有相关命令有哪些?
Redis 事务的注意点有哪些?
Redis 支持回滚回滚吗?支与不支持的理由什么什么
请介绍一下 Redis 的 Pipeline(管道),以及使用场景
请说明一下 Redis 的批量命令与 Pipeline 有什么不同?
设置键的生存时间和过期时间有哪些命令?
请介绍一下 Redis 的发布订阅功能
Redis 的链表数据结构的特征有哪些?
请介绍一下 Redis 的 String 类型底层实现?
Redis 的 String 类型使用 SSD 方式实现的好处?
为什么 Redis 需要把所有数据放到内存中?
Redis 是多线程还是单线程?
Redis6.0 之后为何引入了多线程?
Redis 为什么设计成单线程的?
简单说说 Redis 单线程原理
Redis 是单线程还是多线程?Redis 为什么这么快?
什么是缓存穿透?怎么解决?
什么是缓存雪崩? 怎么解决?
缓存的更新策略有几种?分别有什么注意事项?
请介绍几个可能导致 Redis 阻塞的原因
怎么去发现 Redis 阻塞异常情况?
Redis 集群架构模式有哪几种?
哨兵选举过程是怎么样的?
Redis 集群最大节点个数是多少?
Redis 集群的主从复制模型是怎样的?
你知道的 Redis 集群实现方案有哪些?
Redis 集群会有写操作丢失吗?为什么?
Redis 慢查询是什么?通过什么配置?
Redis 的慢查询修复经验有哪些?怎么修复的?
有做过 Redis 服务的性能优化过吗?
说一下 Redis 的主从复制模式的优缺点?
说一下 Redis sentinel(哨兵)模式的优缺点?
熟悉 Redis 的连接数的操作吗?
介绍一些 Redis 常用的安全设置?
说一下 Redis 持久化机制有哪些?
说一下 Redis 持久化机制 AOF 和 RDB 什么不同?
说一下两种持久化的优缺点优缺点
你们用的是哪一种持久化?为什么这么用?
如果 AOF 文件的数据出现异常, Redis 服务怎么处理?
常见的淘汰算法有哪些?
Redis 淘汰策略有哪些?
Redis 缓存失效策略有哪些?
Redis 如何做内存优化?
什么是 bigkey? 有什么影响?
怎么发现 bigkey?
Redis 的内存消耗分类有哪些?内存统计使用什么命令?
简单介绍一下 Redis 的内存管理方式有哪些?
如何设置 Redis 的内存上限?有什么作用?
Redis 报内存不足怎么处理?
Redis 适用场景有哪些?
Redis 有哪些常见应用场景 ?
Redis 支持的 Java 客户端有哪些?
请简单描述一下 Jedis 的基本使用方法?
Jedis 连接池链接方法有什么优点?
什么是分布式锁?有什么作用?
分布式锁可以通过什么来实现?
介绍一下分布式锁实现需要注意的事项?
Redis 怎么实现分布式锁?
缓存命中率表示什么?
怎么提高缓存命中率?
请介绍一下 Spring 注解缓存
商品售卖排名怎么做?
Redis 是单线程还是多线程?
Redis 单线程为什么还这么快?
Redis 中的 I/O 多路复用模型
Redis 中的跳表原理
Redis 中 key 已经过期了,但为什么内存并没有释放?
删除 key 的命令会阻塞 Redis 吗?
主从复制、哨兵、Cluster 三种集群模式优缺点
Redis 集群数据 hash 分片算法原理
Redis 线上问题,导致缓存雪崩
Redis 缓存雪崩、缓存击穿、缓存穿透
Redis 是如何实现分布式锁的
如何保证缓存和数据库的一致性?
Redis 集群为什么推荐奇数个节点?
Dubbo
Dubbo 是什么?
什么是 RPC?
能说说 RPC 原理吗?
说说 Dubbo 的分层?
能说下 Dubbo 的工作原理吗?
在 provider 上可以配置的 consumer 端的属性有哪些?
Dubbo 内置了哪几种服务容器?
Dubbo 需要 Web 容器吗?
为什么要通过代理对象通信?
说说服务暴露的流程?
说说服务引用的流程?
有哪些负载均衡策略?
服务上线怎么兼容旧版本?
说几个 Dubbo 核心的配置
集群容错方式有哪些?
服务读写推荐的容错策略是怎样的?
如何禁用某个服务的启动检查?
说说你对 Dubbo 序列化的了解
知道 Dubbo SPI 机制吗?
Dubbo 服务之间的调用是阻塞的吗?
注册中心宕机了,有什么影响?
说说 Dubbo 的优先级配置
Dubbo 如何优雅停机?
怎么实现动态感知服务下线的呢?
Dubbo 的管理控制台能做什么?
dubbo 协议为什么要消费者比提供者个数多?
dubbo 协议为什么不能传大包?
说说 dubbo 协议
Dubbo 用到哪些设计模式?
如果让你实现一个 RPC 框架,你会怎么设计?
Dubbo 和 Spring Cloud 的区别?
如何设计一个注册中心
Zookeeper
ZooKeeper 是什么?
ZooKeeper 能做什么?
Zookeeper 的系统架构又是怎么样的?
Zookeeper 怎么保证主从节点的状态同步?
说说 zookeeper 有哪些数据节点
Znode 里面都存储了什么?
Zookeeper 初始化是如何进行 Leader 选举的?
如果 Leader 挂了,进入崩溃恢复,怎么选举 Leader?
选举 leader 后是怎么进行数据同步的
说说 Zookeeper Watcher 机制
客户端是如何注册 Watcher 实现
服务端是如何处理 Watcher 实现
客户端是如何回调 Watcher
熟悉 ACL 权限控制机制吗?
了解 Chroot 特性吗
熟悉会话管理吗
服务器有哪些角色
Zookeeper 下 Server 工作状态
能说说数据是如何同步的吗?
Zookeeper 是如何保证事务的顺序一致性的?
分布式集群中为什么会有 Master 主节点?
zk 节点宕机如何处理?
Zookeeper 负载均衡和 nginx 负载均衡区别
Zookeeper 有哪几种几种部署模式?
集群最少要几台机器,集群规则是怎样的?集群中有 3 台服务器,其中一个节点宕机,这个时候 Zookeeper 还可以使用吗?
集群支持动态添加机器吗?
Zookeeper 对节点的 watch 监听通知是永久的吗?
Zookeeper 的 java 客户端都有哪些?
chubby 是什么,和 zookeeper 比你怎么看?
说几个 zookeeper 常用的命令
ZAB 和 Paxos 算法的联系与区别?
那你详细给我讲讲 ZAB 协议吧
Zookeeper 的典型应用场景
Zookeeper 都有哪些功能?
说一下 Zookeeper 的通知机制?
Zookeeper 和 Dubbo 的关系?
Zookeeper 的作用
zookeeper 和 dubbo 的关系
Zookeeper 和 Eureka、Consul、Nacos 有什么区别?
RabbitMQ
说说你对 MQ 的理解
说说 MQ 的优缺点
常用的消息队列性能对比
如何避免消息堆积?
如何避免重复消费?
如何保证消息不丢失?
如何保证消息顺序一致性?
推与拉取的架构模型是怎么样的?
有哪些消费模式?
RabbitMQ 是什么?
RabbitMQ 特点?
AMQP 是什么?
熟悉 AMQP 协议吗?
说说 AMQP 模型的三大组件
说说你对 Broker 服务节点、Queue 队列、Exchange 交换器的理解
说说生产者 Producer 和消费者 Consumer?
说说 RabbitMQ 的作用
为什么选择 RabbitMQ
RabbitMQ 的特点是什么
生产者 producer 和消费者 consumer 有哪些知识点?
RabbitMQ 消息持久化中的坑
RbbitMQ 持久化的工作原理
持久化的优缺点
说说 Rabbitmq 的 ack 应答机制
简单说说 RabbitMQ 的组成
简单说说 RabbitMQ 的六种模式
说说存储机制
RabbitMQ 中消息可能有的几种状态
熟悉 RabbitMQ 的队列结构吗?
交换器无法根据自身类型和路由键找到符合条件队列时,会如何处理?
如何保证消息的可靠性?
集群中的节点类型有哪些?
如何保证 RabbitMQ 消息队列的高可用?
说说你对交换器的理解
说说生产者消息运转多次
说说消费者接收消息过程
导致的死信的几种原因?
说说 RabbitMQ 优先级队列
说说 RabbitMQ 事务机制
生产者如何将消息可靠投递到 MQ?
MQ 如何将消息可靠投递到消费者?
RabbitMQ 高级问题
RocketMQ
为什么要使用消息队列呢?
为什么要选择 RocketMQ?
RocketMQ 有什么优缺点?
消息队列有哪些消息模型?
那 RocketMQ 的消息模型呢?
消息的消费模式了解吗?
RoctetMQ 基本架构了解吗?
那能介绍一下这四部分吗?
如何保证消息的可用性/可靠性/不丢失呢?
如何处理消息重复的问题呢?
怎么处理消息积压?
顺序消息如何实现?
如何实现消息过滤?
延时消息了解吗?
RocketMQ 怎么实现延时消息的?
怎么实现分布式消息事务的?半消息?
死信队列知道吗?
如何保证 RocketMQ 的高可用?
说一下 RocketMQ 的整体工作流程?
为什么 RocketMQ 不使用 Zookeeper 作为注册中心呢?
Broker 是怎么保存数据的呢?
说说 RocketMQ 怎么对文件进行读写的?
说说什么是零拷贝?
消息刷盘怎么实现的呢?
能说下 RocketMQ 的负载均衡是如何实现的?
RocketMQ 消息长轮询了解吗?
Kafka
什么是消息中间件?
kafka 是什么?有什么作用?
kafka 的架构是怎么样的?
Kafka Replicas 是怎么管理的?
如何确定当前能读到哪一条消息?
生产者发送消息有哪些模式?
发送消息的分区策略有哪些?
Kafka 支持读写分离吗?为什么?
那 Kafka 是怎么去实现负载均衡的?
Kafka 的负责均衡会有什么问题呢?
Kafka 的可靠性是怎么保证的?
Kafka 的消息消费方式有哪些?
分区再分配是做什么的?解决了什么问题?
副本 leader 是怎么选举的?
失效副本是指什么?有那些应对措施?
分区数越多越好吗?吞吐量就会越高吗?
如何增强消费者的消费能力?
消费者与 topic 的分区分配策略有哪些?
kafka 控制器是什么?有什么作用
kafka 控制器是怎么进行选举的?
kafka 为什么这么快?
什么情况下 kafka 会丢失消息?
Kafka 中的事务是怎么实现的?
Kafka 消息是采用 Pull 模式,还是 Push 模式?
数据传输的事务有几种?
Kafka 高效文件存储设计特点
Kafka 是如何实现高吞吐率的?
Netty
Netty 是什么?
Netty 的特点是什么?
Netty 的优势有哪些?
Netty 的应用场景有哪些?
Netty 高性能表现在哪些方面?
BIO、NIO 和 AIO 的区别?
NIO 的组成?
Netty 的线程模型?
TCP 粘包/拆包的原因及解决方法?
什么是 Netty 的零拷贝?
Netty 中有哪种重要组件?
Netty 发送消息有几种方式?
默认情况 Netty 起多少线程?何时启动?
什么叫对象序列化,什么是反序列化,实现对象序列化需要做哪些工作熟悉哪几种序列化协议?
如何选择序列化协议?
Netty 支持哪些心跳类型设置?
Netty 和 Tomcat 的区别?
什么是内核空间
MySQL 优化
优化可能带来的问题?
优化的需求?
优化由谁参与?
优化什么?
优化的范围有哪些?
优化维度?
数据库问题排查常用工具有哪些
数据库层面问题解决思路?
系统层面优化有哪些?
系统层面问题解决办法?
优化思路?
硬件如何优化?
服务器硬件优化?
系统如何优化?
系统优化参数有哪些?
系统应用优化?
数据库优化
数据库优化参数有哪些?
存储引擎层(innodb 基础优化参数)?
熟悉哪些 SQL 优化?
分布式
单表数据达到多少的时候会影响数据库的查询性能?为什么?
主从复制的原理是什么?常见的形式有哪些?
分库分表,解释一下垂直和水平 2 种不同的拆分?
垂直拆分会带来哪些问题?
分布式数据存储中间件 MyCat 的核心流程是什么?
概述一下 MyCat?
解释一下全局表、ER 表、分片 表?
MyCat 在分库分表之后,是怎么支持连表查询的?
库表拆分时,拆分规则怎么取舍?
全局 ID 方案有哪些?程序自定义全局 ID 方案有哪些?
说说一致性 hash 的原理?
一致性 Hash 算法的容错性和可扩展性是怎么做的
Hash 环的数据倾斜问题是如何解决的?
四层负载和七层负载谁性能更高,为什么?
讲一讲 MySQL 的高可用方案?
分布式幂等性如何设计?
简单一次完整的 HTTP 请求所经历的步骤?
说说你对分布式事务的了解
你知道哪些分布式事务解决方案?
什么是二阶段提交?
什么是三阶段提交?
什么是补偿事务?
消息队列是怎么实现的?
那你说说 Sagas 事务模型
分布式 ID 生成有几种方案?
幂等解决方法有哪些?
常见负载均衡算法有哪些?
你知道哪些限流算法?
说说什么是计数器(固定窗口)算法
说说什么是滑动窗口算法
说说什么是漏桶算法
说说什么是令牌桶算法
数据库如何处理海量数据?
如何将长链接转换成短链接,并发送短信?
长链接和短链接如何互相转换?
长链接和短链接的对应关系如何存储?
如何提高系统的并发能力?
ElasticSearch
谈谈分词与倒排索引的原理
说说分段存储的思想
谈谈你对段合并的策略思想的认识
了解文本相似度 TF-IDF 吗
能说说 ElasticSearch 写索引的逻辑吗?
熟悉 ElasticSearch 集群中搜索数据的过程吗?
了解 ElasticSearch 深翻页的问题及解决吗?
熟悉 ElasticSearch 性能优化
ElasticSearch 查询优化手段有哪些?
elasticsearch 是如何实现 master 选举的?
elasticsearch 索引数据多了怎么办,如何调优,部署?
说说你们公司 es 的集群架构,索引数据大小,分片有多少?
什么是 ElasticSearch?
ElasticSearch 中的集群、节点、索引、文档、类型是什么?
ElasticSearch 中的分片是什么?
ElasticSearch 中的副本是什么?
ElasticSearch 中的分析器是什么?
什么是 ElasticSearch 中的编译器?
什么是 ElasticSearch 中的过滤器?
启用属性,索引和存储的用途是什么?
tomcat
tomcat 的缺省端口是多少,怎么修改?
tomcat 有哪几种 Connector 运行模式(优化)?
Tomcat 有几种部署方式?
tomcat 容器是如何创建 servlet 类实例?用到了什么原理?
tomcat 如何优化?
熟悉 tomcat 的哪些配置?
Tomcat 是什么?
什么是 Servlet 呢?
什么是 Servlet 规范?
为什么我们将 tomcat 称为 Web 容器或者 Servlet 容器 ?
tomcat 是如何处理 Http 请求流程的?
tomcat 结构目录有哪些?
操作系统
进程和线程的区别?
协程与线程的区别?
并发和并行有什么区别?
进程与线程的切换流程?
为什么虚拟地址空间切换会比较耗时?
进程间通信方式有哪些?
进程间同步的方式有哪些?
线程同步的方式有哪些?
线程的分类?
什么是临界区,如何解决冲突?
什么是死锁?死锁产生的条件?
如何处理死锁问题
进程调度策略有哪几种?
进程有哪些状态?
什么是分页?
什么是分段?
分页和分段有什区别?
什么是交换空间?
物理地址、逻辑地址、有效地址、线性地址、虚拟地址的区别?
页面替换算法有哪些?
什么是缓冲区溢出?有什么危害?
什么是虚拟内存?
虚拟内存的实现方式有哪些?
讲一讲 IO 多路复用?
硬链接和软链接有什么区别?
中断的处理过程?
中断和轮询有什么区别?
什么是用户态和内核态?
用户态和内核态是如何切换的?
说说 Unix 常见的 IO 模型
说说 select、poll 和 epoll 之间的区别?
计算机网络
什么是网络编程
说一下 OSI 的七层体系结构
说说 TCP/IP 四层体系结构
说一下 OSI 模型(七层)和 TCP/IP 模型(四层)有什么关系
知道各个层使用的是哪个数据交换设备?
网络编程中两个主要的问题
网络协议是什么
为什么要对网络协议分层
什么是 TCP/IP 和 UDP
TCP 与 UDP 区别
说说 TCP 和 UDP 的应用场景
说说你对 TCP 和 UDP 的理解
说说运行在 TCP 或 UDP 的应用层协议
什么是 ARP 协议?
什么是 NAT (Network Address Translation, 网络地址转换)?
从输入址到获得页面的过程?
什么是 TCP 的三次握手
建立连接可以两次握手吗?为什么?
可以采用四次握手吗?为什么?
第三次握手中,如果客户端的 ACK 未送达服务器,会怎样?
如果已经建立了连接,但客户端出现了故障怎么办?
初始序列号是什么?
什么是 TCP 的四次挥手
为什么不能把服务器发送的 ACK 和 FIN 合并起来,变成三次挥手(CLOSE_WAIT 状态意义是什么)?
如果第二次挥手时服务器的 ACK 没有送达客户端,会怎样?
客户端 TIME_WAIT 状态的意义是什么?
什么是 Socket?
说说 Socket 通讯的过程
能用 Java Socket 写一个 TCP 协议?
说说 Socket 的常用类
什么是 Http 协议?
说说 Socket 和 http 的区别和应用场景
说说 http 的请求体有哪些内容?
http 的响应报文有哪些?
简单说说 HTTP 和 HTTPS 的区别?
说说 HTTPS 工作原理
一次完整的 HTTP 请求所经历几个步骤?
常用 HTTP 状态码是怎么分类的,有哪些常见的状态码?
Http 协议中有哪些请求方式?
GET 方法与 POST 方法的区别
知道 http 有哪些版本?
什么是对称加密与非对称加密
cookie 和 session 对于 HTTP 有什么用?
什么是 cookie?
什么是 session?
说说 cookie 与 session 的区别
cookie 和 session 对于 HTTP 有什么用?
HR 常见问题
你觉得自己有什么缺点
你对加班怎么看?
入职后你怎么开展自己的工作?
请做一个自我介绍
你有什么问题要问我吗?
您在选择工作中更看重的是什么?
上一家公司为什么选择离职呢?
Git
Git 和 SVN 有什么区别?
什么是 Git?
在 Git 中提交的命令是什么?
什么是 Git 中的“裸存储库”?
Git 是用什么语言编写的?
在 Git 中,你如何还原已经 push 并公开的提交?
git pull 和 git fetch 有什么区别?
git 中的“staging area”或“index”是什么?
什么是 git stash?
什么是 git stash drop?
如何找到特定提交中已更改的文件列表?
git config 的功能是什么?
提交对象包含什么?
如何在 Git 中创建存储库?
怎样将 N 次提交压缩成一次提交?
什么是 Git bisect?如何使用它来确定(回归)错误的来源?
如果想要在提交之前运行代码性检查工具,并在测试失败时阻止提交,该怎样配置 Git 存储库?
描述一下你所使用的分支策略?
如果分支是否已合并为 master,你可以通过什么手段知道?
什么是 SubGit?
列举工作中常用的几个 git 命令?
如果本次提交误操作,如何撤销?
你使用过 git stash 命令吗?你一般什么情况下会使用它?
如何查看分支提交的历史记录?查看某个文件的历史记录呢?
使用过 git merge 和 git rebase 吗?它们之间有什么区别?
使用过 git cherry-pick,有什么作用?
Maven
什么是 maven?
Maven 能为我们解决什么问题?
说说 maven 有什么优缺点?
什么是 Maven 的坐标?
讲一下 maven 的生命周期
说说你熟悉哪些 maven 命令?
如何解决依赖传递引起的版本冲突?
说说 maven 的依赖原则
说说依赖的解析机制?
说说插件的解析机制
系统设计
如何设计一个注册中心?
如何设计一个持久化框架?
秒杀系统怎么设计?
微博这类系统如何设计?
抢红包如何设计?
短网址如何设计?
点赞系统如何设计?
如何设计一个消息队列?
如何设计一个缓存框架?
如何设计一个 Tomcat?
如何设计一个 RPC 框架?
如何设计一个百万级消息推送系统?
如何设计一个订单系统?
如何设计一个抽奖系统?
如何设计一个用户中心?
如何设计一个购物车?
如何设计一个推送系统?
如何设计一个支付系统?
项目问题
XXX 是个什么样的项目?
你们这个 XXX 项目并发高吗?
有没有接触过高并发业务?
项目中用过多线程吗?
画一下你们整个项目架构?
项目中,有没有遇到什么难的问题,最后是怎么解决的?
你最擅长什么?
项目使用 Spring 了吗?用了它的哪些东西?
Spring Cloud 是怎么使用的?
接口是怎么定义的?采用什么数据格式?如何实现?
有没做过性能优化?
前后端开发时具体流程是什么?
前端采用什么技术栈?
这套互联网 Java 工程师面试题包括了:MyBatis、ZK、Dubbo、EL、Redis、MySQL、并发编程、Java 面试、Spring、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题需要获取全部文档的小伙伴【领取/点击】
评论