迟来的 Offer,至今已有 672 名学长靠这套 Java 八股文成功入职大厂
为大家分享的这份 Java 八股文总分为 14 个技术专题
Java 基础
多线程并发
Spring 底层
Spring MVC+Spring Boot
Mybatis
MySQL+数据库
Redis 缓存
分布式+消息队列+微服务
消息中间件
力扣算法
网络通信
JVM 调优
搜索引擎
安全验证
小编在社区里看见不少小伙伴都在背 Java 八股文,为此在这里统一的做一次总结归类,也算是给粉丝们划重点了。
1、Java 基础
1、Java 中的 final 关键字有哪些用法?
2、GC 如何判断对象可以被回收
3、Java 类加载器
4、什么是 B/S 架构?什么是 C/S 架构
5、Java 中的继承是单继承还是多继承
6、ArrayList 和 LinkedList 区别
7、如何实现对象克隆?
8、什么是字节码?采用字节码的好处是什么?
9、标识符的命名规则。
10、String 是最基本的数据类型吗?
11、排序都有哪几种方法?请列举
12、双亲委托模型
13、java 中有没有指针?
14、Java 中的异常体系
15、String、StringBuffer、StringBuilder 有什么区别?
16、equals 与==的区别
17、什么是 JDK?什么是 JRE?
18、hashCode 与 equals
19、面向对象和面向过程的区别
2、多线程并发
1、Thread、Runable 的区别
2、JAVA 线程锁机制是怎样的?偏向锁、轻量级锁、重量级锁有什么区别?锁机制是如何升级的?
3、 Volatile 和 Synchronized 有什么区别?Volatile 能不能保证线程安全?DCL(Double Check Lock)单例为什么要加 Volatile?
4、线程池中线程复用原理
5、并发的三大特性
6、ThreadLocal 内存泄露原因,如何避免
7、线程的生命周期?线程有几种状态
8、有 A,B,C 三个线程,如何保证三个线程同时执行?如何在并发情况下保证三个线程依次执行?如何保证三个线程有序交错进行?
9、谈谈你对 AQS 的理解。AQS 如何实现可重入锁?
10、并发、并行、串行的区别
11、JAVA 如何开启线程?怎么保证线程安全?
12、对线程安全的理解
13、什么是 volatile?
14、sleep()、wait()、join()、yield()的区别
15、对守护线程的理解
16、简述线程池处理流程
17、线程池中阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?
18、为什么用线程池?解释下线程池参数?
19、ThreadLocal 的原理和使用场景
20、如何对一个字符串快速进行排序?
答案解析获取方式:关注+转发后,私信【119】获取
3、Spring 底层
1、描述一下 Spring Bean 的生命周期?
2、Spring 事务的实现方式和原理以及隔离级别?
3、什么是 Spring?谈谈你对 IOC 和 AOP 的理解。
4、什么是 bean 的自动装配,有哪些方式?
5、Spring 容器的启动流程是怎么样的?
6、Spring 框架中都用到了哪些设计模式?
7、谈谈你对 AOP 的理解
8、Spring 框架中 Bean 的创建过程是怎样的?
9、spring 是什么?
10、BeanFactory 和 ApplicationContext 有什么区别?
11、Spring 框架中的 Bean 是线程安全的吗?如果线程不安全,要如何处理?
12、Spring 如何处理事务?
13、spring 事务什么时候会失效?
14、Spring 如何处理循环依赖问题?
15、spring 事务传播机制
16、谈谈你对 IOC 的理解
17、SpringMVC 中的控制器是不是单例模式?如果是,如何保证线程安全?
18、如何实现一个 IOC 容器
19、解释下 Spring 支持的几种 bean 的作用域。
4、Spring MVC+Spring Boot
1、介绍一下 WebApplicationContext:
2、SpringBoot 的缺点
3、SpringBoot 异常处理相关注解?
4、如何解决 POST 请求中文乱码问题,GET 的又如何处理呢?
5、您使用了哪些 starter maven 依赖项?
6、Spring Boot 自动配置原理?
7、描述一下 DispatcherServlet 的工作流程
8、Spring MVC 的主要组件?
9、什么是嵌入式服务器?为什么要使用嵌入式服务器?
10、SpringBoot 配置途径?
11、SpringBoot 多数据源事务如何管理
12、什么是 Spring Profiles?
13、SpringBoot 自动配置原理?
14、SpringMVC 工作流程
15、Spring Boot、Spring MVC 和 Spring 有什么区别
16、Spring MVC 里面拦截器是怎么写的?
17、如果想在拦截的方法里面得到从前台传入的参数,怎么得到?
18、SpringBoot 支持配置文件的格式?
19、Spring MVC 怎么样设定重定向和转发的?
20、我们如何监视所有 Spring Boot 微服务?
21、如果在拦截请求中,我想拦截 get 方式提交的方法,怎么配置
22、Spring MVC 用什么对象从后台向前台传递数据的?
23、SpringBoot 事物的使用
24、你如何理解 Spring Boot 配置加载顺序?
25、Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?
26、SpringBoot 热部署方式?
27、关闭应用程序访问哪个端点?
28、SpringBoot 与 SpringCloud 区别
29、如何实现 Spring Boot 应用程序的安全性?
30、Spring Boot 是否可以使用 XML 配置 ?
31、MVC 设计模式的好处有哪些
32、如何理解 Spring Boot 中的 Starter
33、简单介绍下你对 Spring MVC 的理解?
34、SpingMvc 中的控制器的注解一般用哪个,有没有别的注解可以替代?
35、什么是 SpringBoot?
36、编写测试用例的注解?
37、SpringBoot 如何实现打包
38、什么是 SpringProfiles?
39、Spring Boot 中的监视器是什么?
5、Mybatis
1、Mybatis 如何执行批量操作
2、讲下 MyBatis 的缓存
3、JDBC 编程有哪些不足之处,MyBatis 是如何解决的?
4、MyBatis 编程步骤是什么样的?
5、Mybatis 中如何指定使用哪一种 Executor 执行器?
6、mybatis 的优缺点
7、#{}和 ${}的区别是什么?
8、使用 MyBatis 的 mapper 接口调用时有哪些要求?
9、Mybatis 是如何将 sql 执行结果封装为目标对象并返回的?
10、Mybatis 是否可以映射 Enum 枚举类?
11、MyBatis 和 Hibernate 的适用场景?
12、简述 Mybatis 的插件运行原理,如何编写一个插件。
6、MySQL+数据库
1、分表后非 sharding_key 的查询怎么处理,分表后的排序?
2、读写分离是怎么做的?
3、索引设计的原则?
4、分库分表的方式和分片策略由哪些?
5、MySQL 有哪几种数据存储引擎?有什么区别?
6、事务的基本特性和隔离级别有哪些?
7、mysql 主从同步原理
8、聚簇索引和非聚簇索引又是什么?
9、关心过业务系统里面的 sql 耗时吗?统计过慢查询吗?对慢查询都怎么优化过?
10、简述 mysql 中索引类型及对数据库的性能的影响
11、MySQL 的集群是如何搭建的?
12、mysql 索引的数据结构,各自优劣
13、锁的类型有哪些
14、MySQL 的锁有哪些?什么是间隙锁?
15、MySQL 的索引结构是什么样的?
16、什么是最左前缀原则?什么是最左匹配原则
17、索引的基本原理
18、谈谈如何对 MySQL 进行分库分表?
19、多大数据量需要进行分库分表?
20、事务的基本特性和隔离级别
21、分库分表后,SQL 语句的执行流程是怎样的?
22、mysql 执行计划怎么看
23、ACID 靠什么保证的?
24、简述 MyISAM 和 InnoDB 的区别
25、InnoDB 存储引擎的锁的算法
26、什么是脏读、幻读、不可重复读?要怎么处理?
27、什么是 MVCC
7、Redis 缓存
1、Redis 是单线程的,如何提高多核 CPU 的利用率?
2、Redis 集群方案什么情况下会导致整个集群不可用?
3、Redis 是单进程单线程的?
4、什么是 Redis?
5、简述 Redis 事务实现
6、Redis 的持久化机制是什么?各自的优缺点?
7、Redis 提供了哪几种持久化方式?
8、怎么理解 Redis 事务?
9、Redis 线程模型、单线程快的原因
10、Redis 的过期键的删除策略
11、RDB 和 AOF 机制
12、Redis 集群会有写操作丢失吗?为什么?
13、redis 主从复制的核心原理
14、redis 集群方案
15、Redis 的同步机制了解么?
16、Redis 事务相关的命令有哪几个?
17、修改配置不重启 Redis 会实时生效吗?
18、如何实现集群中的 session 共享存储?
19、Redis 的内存用完了会发生什么?
20、缓存雪崩、缓存穿透、缓存击穿
21、使用 Redis 有哪些好处?
8、分布式+消息队列+微服务
1、分布式锁解决方案
2、怎么保证事务一致性?
3、zk 和 eureka 的区别
4、负载均衡算法、类型
5、CAP 理论,BASE 理论
6、SpringCloud 和 SpringCloudAlibaba 都有哪些组件?都解决了什么问题?
7、zk 的数据模型和节点类型
8、什么是中台?
9、怎么拆分微服务?
10、分布式事务解决方案
11、怎样设计出高内聚、低耦合的微服务?
12、讲下 Zookeeper watch 机制
13、有没有了解过 DDD 领域驱动设计?
14、springcloud 核心组件及其作用
15、Dubbo 的整体架构设计及分层
16、中台和微服务有什么关系?
17、分布式架构下,Session 共享有什么方案
18、Spring Cloud 和 Dubbo 的区别
19、如何实现接口的幂等性
20、微服务的链路追踪、持续集成、AB 发布要怎么做?
21、简述你对 RPC、RMI 的理解
22、分布式 id 生成方案
23、什么是 Hystrix?简述实现机制
24、谈谈你对微服务的理解,微服务有哪些优缺点?
25、分布式事务如何处理?
26、你的项目中是怎么保证微服务敏捷开发的?
27、简述 zk 的命名服务、配置管理、集群管理
28、简述 ZAB 协议
9、消息中间件
1、kafka 怎么处理消息顺序、重复发送、重复消费、消息丢失?
2、如何保证消息消费的幂等性?
3、Kafka 中 zk 的作用?
4、如何保证消息不丢失?
5、RabbitMQ 事务消息?
6、简述 kafka 的 rebalance 机制
7、如何保证消息的顺序?
8、MQ 有什么用?有哪些具体的使用场景?
9、如何保证消息的高效读写?
10、Kafka 的性能好在什么地方?
11、Kafka 在什么情况下会出现消息丢失及解决方案?
12、让你设计一个 MQ,你会如何设计?
13、RabbitMQ 镜像队列机制
14、如何进行产品选型?
15、Kafka 是 pull?push?优劣势分析
16、简述 kafka 架构设计
17、RabbitMQ 如何确保消息发送 ? 消息接收?
18、简述 RabbitMQ 的架构设计
19、使用 MQ 如何保证分布式事务的最终一致性?
20、解释什么是 RabbitMQ 死信队列、延时队列?
10、力扣算法
1、x 的平方根
2、删除排序数组中的重复项
3、斐波那契数列
4、环形链表
5、二叉树遍历
6、合并两个有序数组
7、Dota2 参议院
8、寻找数组的中心索引
9、二叉树的最小深度
10、反转链表
11、预测赢家
12、井字游戏
13、优势洗牌
14、子数组最大平均数
15、三个数的最大乘积
16、冒泡排序
17、插入排序
18、希尔排序
19、归并排序
11、网络通信
1、线程池解决多线程 BIO 编程会出现的问题
2、TCP 和 UDP 有什么区别?
3、描述下 HTTP 和 HTTPS 的区别?
4、怎么使用 Netty 实现网络通信?
5、BIO 编程会出现什么问题?
6、JAVA 有哪几种 IO 模型?有什么区别?
7、IO 的常用类和方法,以及如何使用
8、如何使用 NIO 实现网络通信?
9、select,poll 和 epoll 有什么区别?
10、五种 IO 模型分别是哪些?
11、网络操作 IO 讲解
12、ava 中流类的超类主要有那些?
13、JAVA NIO 的几个核心组件是什么?分别有什么作用?
14、为什么图片、视频、音乐、文件等 都是要字节流来读取?
15、TCP 为什么是三次握手,而不是两次?
12、JVM 调优
1、说一说 JVM 的内存模型:
2、什么是类加载器,类加载器有哪些?
3、什么是 STW?他都发生在哪些阶段?
4、一个对象从加载到 JVM,再到被 GC 清除,都经历了什么过程?
5、什么是 GC Root?
6、怎么确定一个对象到底是不是垃圾?
7、如果一个 java 程序每次运行一段时间后,就变得非常卡顿,你准备如何对他进行优化?
8、JAVA 类加载的全过程是怎样的?
9、如何解决错标记和漏标记的问题?
10、怎么查看一个 JAVA 进程的 JVM 参数?
11、JVM 参数有哪些?
12、内存模型以及分区,需要详细到每个区放什么。
13、什么是双亲委派机制?有什么作用?
14、什么是三色标记?
15、谈谈你了解的 JVM 参数:
16、JVM 有哪些垃圾回收器?他们都是怎么工作的?
17、什么情况下会发生栈内存溢出。
18、简述 java 内存分配与回收策率以及 Minor GC 和 Major GC
19、为什么要设计这么多的垃圾回收器?
20、JVM 有哪些垃圾回收算法?
21、如何进行 JVM 调优?
13、搜索引擎
1、elasticsearch 的倒排索引是什么
2、用过哪些分词器?
3、Elasticsearch 对于大数据量(上亿量级)的聚合如何实现?
4、Elasticsearch 是如何实现 Master 选举的?
5、介绍一下你们的个性化搜索方案?
6、详细描述一下 Elasticsearch 索引文档的过程
7、如何进行中文分词?
8、Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎。
9、ES 查询数据的工作原理是什么?
10、lucence 内部结构是什么?
11、什么是倒排索引?有什么好处?
12、ES 部署时,要如何进行优化?
13、说说你们公司的 ES 集群架构。
14、在 Elasticsearch 中,是怎么根据一个词找到对应的倒排索引的?
15、ES 写入数据的工作原理是什么?
16、ES 了解多少?
17、拼写纠错是如何实现的?
14、安全验证
1、如何设计一个开放授权平台?
2、如何设计一个权限认证框架?
3、什么是 CSRF 攻击?如何防止?
4、什么是 JWT 令牌?和普通令牌有什么区别?
5、如果没有 Cookie,Session 还能进行身份验证吗?
6、Cookie 和 Session 有什么区别?
7、什么是认证和授权?
8、什么是 OAuth2.0 协议?有哪几种认证方式?
9、什么是 SSO?与 OAuth2.0 有什么关系?
答案解析获取方式:【传送门】获取
总结
所有的面试题目都不是一成不变的,现在面试都在背八股文,虽然是为了应付面试官,但是最重要的还是看自己技术底层是否巩固,这样才能逐步的提升自己的技术能力,为以后的技术生涯打下牢固的基础,这样才不会那么容易被击溃!
评论