2024 最新版 Java 八股文汇总(附 1100 道面试题及答案详解)
很多 Java 工程师的技术不错,但是一面试就头疼,10 次面试 9 次都是被刷,过的那次还是去了家不知名的小公司。
问题就在于:面试有技巧,而你不会把自己的能力表达给面试官。
应届生:你该如何准备简历,面试项目和面试说辞?Spring 底层逻辑是什么?
1-3 年经验的程序员:面试中你该讲哪些值钱的技术?如何用这些值钱的技术最大程度展示自己的技能?分布式组件底层逻辑是什么?
3-5 年经验的程序员:k8s 怎么搭建实践?
这些问题,相信每一位 Java 程序员都曾遇到过,甚至有的人至今也不知道要怎么解决,屡面屡败,最终导致你的面试通过率极低。
如果说简历是你求职的敲门砖,那么你回答每一个 Java 技术问题的技巧与方法,就是你面试能否通过的关键!
为了帮助各位工程师,掌握 Java 面试中每一个问题的技巧,提高面试通过率,在这分享一些大厂面试都问的高频常问面试题,这份面试题资料包括了 Spring,JVM,java 基础,Java 集合,Java 并发编程,微服务,网络,Kafka,分布式,Redis,大厂面试解决方案,分布式事务,设计模式,算法,数据结构,MySQL 等
架构师必备技能:(阿里面试必问)
Ps:由于篇幅限制,笔记无法全部为大家展示出来,就以截图主要内容的形式让大家参考啦,需要完整版的小伙伴可以点击>>传送门<<获取
多线程 &并发面试题:
JAVA 并发知识库:
Java 中实现多线程有几种方法
继承 Thread 类
实现 Runnable 接口。
ExecutorSenvice. Callable. Future 有返回值线程
基于线程池的方式
4 种线程池
如何停止一个正在运行的线程
notify0 和 notifyAll0 有什么区别?
sleep0 和 wait0 有什么区别?
volatile 是什么?可以保证有序性吗?
Thread 类中的 start0 和 run0 方法有什么区别?
为什么 wait, notify 和 nfifAllI 这些方法不在 thread 类里面?
为什么 wait 和 ntify 方法要在同步块中调用?
Java 中 interrupted 和 isInterruptedd 方法的区别?
Java 中 synchronized 和 ReentrantLock 有什么不同?
有三个线程 T1,T2,T3,如何保证顺序执行?
SynchronizedMap 和 ConcurrentHashMap 有什么区别?
什么是线程安全
Thread 类中的 yield 方法有什么作用?
Java 线程池中 submit0 和 execute0 方法有什么区别?
说一说自己对于 synchronized 关键字的了解
说说自己是怎么使用 synchronized 关键字,在项目中用到了吗 ynchronized 关键字最主要的三种使用方式?
什么是线程安全? Vector 是一 个线程安全类吗?
volatile 关键字的作用?
简述一下你对线程池的理解
线程生命周期(状态)
JVM 面试题:
Serial 垃圾收集器(单线程、复制算法)
ParNew 垃圾收集器(Serial+ 多线程)
Parallel Scavenge 收集器(多线程复制算法、高效)
Serial Old 收集器(单线程标记整理算法)
Parallel Old 收集器(多线程标记整理算法)
CMS 收集器(多线程标记清除算法)
G1 收集器
JVM 类加载机制
类加载器
双亲委派
OSGI (动态模型系统)
动态改变构造
模块化编程与热插拔
JVM 内存模型
本地方法栈
程序计数器
堆
方法区
分代回收
堆和栈的区别
什么时候会触发 FullGC
什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”?
对象分配规则
描述一下 JM 加载 class 文件的原理机制?
Java 对象创建过程
Java 中的 IO 与 NIO 面试题:
Java 中 10 流?
Java 10 与 NIO 的区别
常用 io 类有哪些
字节流与字符流的区别
阻塞 10 模型
非阻塞 10 模型
多路复用 10 模型
信号驱动 10 模型
异步 10 模型
JAVA NIO
NIO 的缓冲区
NIO 的非阻塞
Channel
Buffer
Mysql 面试题:
分库分表之后,d 主键如何处理
存储过程(特定功能的 SQL 语句集)
存储过程优化思路
触发器(一段能自动执行的程序)
数据库并发策略
MySQL 中有哪几种锁?
MySQL 中有哪些不同的表格?
简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别
MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
CHAR 和 VARCHAR 的区别?
主键和候选键有什么区别?
myisamchk 是用来做什么的?
MyISAM Static 和 MyISAM Dynamic 有什么区别?
如果一个表有一-列定义为 TIMESTAMP,将发生什么?
你怎么看到为表格定义的所有索引?
LIKE 声明中的 %和_是什么意思?
列对比运算符是什么?
BLOB 和 TEXT 有什么区别?
MySQL fetch. array 和 MySQL fetch object 的区别是什么?
MyISAM 表格将在哪里存储,并且还提供其存储格式?
MySQL 如何优化 DISTINCT?
如何显示前 50 名?
可以使用多少列创建索引?
NOW () 和 CURRENT_ DATE () 有什么区别?
什么是非标准字符串类型?
什么是通用 SQL 函数?
MySQL 支持事务吗?
Redis 面试题:
Redis 是单进程单线程的?
一个字符串类型的智能存储最大容量是多少?
Redis 持久化机制
缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
热点数据和冷数据是什么
单线程的 redis 为什么这么快
redis 的数据类型,以及每种数据类型的使用场景
redis 的过期策略以及内存淘汰机制
Redis 常见性能问题和解决方案?
为什么 Redis 的操作是原子性的,怎么保证原子性的?
Redis 事务
Redis 的持久化机制是什么?各自的优缺点?
Redis 常见性能问题和解决方案:
redis 过期键的删除策略?
Redis 的回收策略(海汰策略) ?
为什么 edis 需要把所有数据放到内存中?
Redis 的同步机制了解么?
Pipeline 有什么好处,为什么要用 pipeline?
是否使用过 Redis 集群,集群的原理是什么?
Redis 集群方案什么情况下会导致整个集群不可用?
Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
Jedis 与 Redisson 对比有什么优缺点?
Redis 如何设置密码及验证密码?
MongoDB 面试题:
当更新-个正在被迁移的块(Chunk). 上的文档时会发生什么?
MongoDB 在 A:(B,C}上建立索引,查询 A:{B,C]和 A:{C,B)都会使用索引吗?
如果一个分片(Shard) 停止或很慢的时候,发起一个查询会怎样?
MongoDB 支持存储过程吗?如果支持的话,怎么用?
如何理解 MongoDB 中的 GridFS 机制,MongoDB 为何使用 GridFS 来存储文件?
什么是 NoSQL 数据库? NoSQL 和 RDBMS 有什么区别?在哪些情况下使用和不使用 NoSQL 数据库?
MongoDB 支持存储过程吗?如果支持的话,怎么用?
如何理解 MongoDB 中的 GridFS 机制,MongoDB 为何使用 GridFS 来存储文件?
为什么 MongoDB 的数据文件很大?
当更新-个正在被迁移的块(Chunk) 上的文档时会发生什么?
MongoDB 在 A:(B,C}上建立索引,查询 A:{B,C]和 A:{C,B)都会使用索引吗?
如果一个分片(Shard) 停止或很慢的时候,发起一个查询会怎样
分析器在 MongoDB 中的作用是什么?
如果用户移除对象的属性,该属性是否从存储层中删除?
能否使用日志特征进行安全备份?
更新操作立刻 fsync 到磁盘?
如何执行事务/加锁?
什么是 master 或 primary?
getLasterror 的作用
分片(sharding) 和复制(replication) 是怎样工作的?
数据在什么时候才会扩展到多个分片(shard) 里?
当我试图更新 一个正在被迁移的块(chunk) 上的文档时会发生什么?
MyBatis 面试题:
通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,
这个 Dao 接口的工作原理是什么? Dao 接口里的方法,参数不同时,方法能重载吗?
如何获取自动生成的(主)键值?
在 mapper 中如何传递多个参数?
Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql?
Xml 映射文件中,除了常见的 selectlinsertlupdaeldelete 标签之外,还有哪些标签?
Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?
为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
一对一、一对多的关联查询?
MyBatis 实现一对一有几种方式?具体怎么操作的?
MyBatis 实现-对多有几种方式,怎么操作的?
Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
Mybatis 的一级、二级缓存
什么是 MyBatis 的接口绑定?有哪些实现方式?
使用 MyBatis 的 mapper 接口调用时有哪些要求?
Mapper 编写有哪几种方式?
简述 Mybatis 的插件运行原理,以及如何编写一个插件。
MyBatis 实现一对一有几种方式?具体怎么操作的?
Spring 面试题:
Spring AOP and AspectU AOP 有什么区别?
如何理解 Spring 中的代理?
什么是编织(Weaving) ?
Spring MVC 框架有什么用?
描述一下 DispatcherServlet 的工作流程
介绍一下 WebApplicationContext
什么是 spring?
使用 Spring 框架的好处是什么?
Spring 由哪些模块组成?
Spring 的 IOC 和 AOP 机制
Spring 中 Autowired 和 Resource 关键字的区别
依赖注入的方式有几种,各是什么?
讲一下什么是 Spring
Spring MVC 流程
springMVC 是什么
SpringMVC 怎么样设定重定向和转发的?
SpringMVC 常用的注解有哪些
Spring 的 AOP 理解
Spring 的 IOC 理解
解释一下 spring bean 的生命周期
解释 Spring 支持的几种 bean 的作用域。
Spring 基于 xml 注入 bean 的几种方式
Spring 框架中都用到了哪些设计模式
核心容器(应用上下文)模块
BeanFactory - BeanFactory 实现举例。
XML BeanFactory
解释 AOP 模块
Spring Boot 面试题:
我们能否在 spring-boot- starter-web 中用 jetty 代替 tomcat?
如何使用 Spring Boot 生成一个 WAR 文件?
如何使用 Spring Boot 部署到不同的服务器?
RequestMapping 和 GetMapping 的不同之处在哪里?
为什么我们不建议在实际的应用程序中使用 Spring Data Rest?
在 Spring Initializer 中,如何改变-个项目的包名字?
可以配置 application.propertierde 的完整的属性列表在哪里可以找到?
JPA 和 Hibernate 有哪些区别?
使用 Spring Boot 启动连接到内存数据库 H2 的 JPA 应用程序需!要哪些依赖项?
如何不通过任何配置来选择 Hibernate 作为 JPA 的默认实现?
指定的数据库连接信息在哪里?它是如何知道自动连接至 H2 的?
我们如何连接一个像 MSSQL 或者 orcale -样的外部数据库?
Spring Boot 配置的默认 H2 数据库的名字是上面?为什么默认的数据库名字是 testdb?
如果 H2 不在类路径里面,会出现上面情况?
你能否举一个以 ReadOnly 为事务管理的例子?
发布 Spring Boot 用户应用程序自定义配置的最好方法是什么?
配置文件的需求是什么?
如何使用配置文件通过 Spring Boot 配置特定环境的配置?
我们如何使用 Maven 设置 Spring Boot 应用程序?
如何禁用特定的自动配置?
Spring boot 支持哪些外部配置?
如何对 Spring Boot 应用进行测试?
Spring Boot Actuator 有什么用?
SpringBoot 中静态首页默认位置可以放在哪里?
SpringBoot 中静态资源直接映射的优先级是怎样的?
Spring Cloud 面试题:
SpringBoot 和 SpringCloud 的区别?
什么是 Hystrix 断路器?我们需要它吗
说说 RPC 的实现原理
微服务的优点缺点?说下开发项目中遇到的坑?
spring cloud 和 dubbo 区别?
REST 和 RPC 对比
你所知道的微服务技术栈?
微服务之间是如何独立通讯的?
springcloud 如何实现服务的注册?
Eureka 和 Zookeeper 区别
eureka 自我保护机制是什么?
什么是 Ribbon?
什么是 feigin?它的优点是什么?
Ribbon 和 Feign 的区别?
什么是 Spring Cloud Bus?
springcloud 断路器作用?
Spring Cloud Gateway?
作为服务注册中心,Eureka 比 Zookeeper 好在哪里?
什么是 Ribbon 负载均衡?
Ribbon 负载均衡能干什么?
什么是 zuu|路由网关
分布式配置中心能干嘛?
数据结构面试题:
栈(stack)
队列(queue)
链表(Link)
散列表(Hash Table)
排序二叉树
前缨树
红黑树
B-TREE
位图
算法面试题:
数据里有{1,2,3,4,5,6,7,8,9}. 请随机打乱顺序,生成一个新的数组(请以代码实现)
写出代码判断一个整数是不是 2 的阶次方(请代码实现,谢绝调用 API 方法)
假设今日是 2015 年 3 月 1 日,星期日,请算出 13 个月及 6 天后是星期几,距离现在多少天(请用代码实现,谢绝调用 API 方法)
有两个篮子,分别为 A 和 B,篮子 A 里装有鸡蛋,篮子 B 里装有苹果,请用面向对象的思想实现两个篮子里的物品交换(请用代码实现)
二分查找
冒泡排序算法
插入排序算法
快速排序算法
希尔排序算法
归并排序算法
桶排序算法
基数排序算法
剪枝算法
回溯算法
最短路径算法
最小生成树算法
AES
RSA
CRC
MD5
更多算法练习
Kafka 面试题:
Consumer Group
如何获取 topic 主题的列表
生产者和消费者的命令行是什么?
consumer 是推还是拉?
讲讲 kafka 维护消费状态跟踪的方法
讲一下主从同步
为什么需要消息系统,mysql 不能满足需求吗?
Zookeeper 对于 Kafka 的作用是什么?
Kafka 判断一个节点是否还过着有那两个条件?
Kafka 与传统 MQ 消息系统之间有三个关键区别
讲一讲 kafka 的 ack 的三种机制|
消费者如何不自动提交偏移量,由应用提交?
消费者故障,出现过锁问题如何解决?
如何控制消费的位置
微服务 面试题:
Container 在微服务中的用途是什么?
什么是微服务架构中的 DRY?
什么是消费者驱动的合同(CDC) ?
Web, RESTful API 在微服务中的作用是什么?
您对微服务架构中的语义监控有何了解?
我们如何进行跨功能测试?
我们如何在测试中消除非决定论?
Mock 或 Stub 有什么区别?
您对 Mike Cohn 的测试金字塔了解多少?
Docker 的目的是什么?
什么是金丝雀释放?
什么是持续集成(CI) ?
什么是持续监测?
架构师在微服务架构中的角色是什么?
我们可以用微服务创建状态机吗?
什么是微服务中的反应性扩展?
Elasticsearch 面试题
Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法
ucence 内部结构是什么?
Elasticsearch 是如何实现 Master 选举的?
Elasticsearch 中的节点(比如共 20 个),其中的 10 个选
个 master, 另外 10 个选了另一个 master, 怎么办?
客户端在和集群连接时,如何选择特定的节点执行请求的?
详细描述一下 Elasticsearch 索引文档的过程。
详细描述一下 Elasticsearch 更新和删除文档的过程。
详细描述一 下 Elasticsearch 搜索的过程
在 Elasticsearch 中,是怎么根据一个词找到对应的倒排索
Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?
对于 GC 方面,在使用 Elasticsearch 时要注意什么?
Elasticsearch 对于大数据量( 上亿量级)的聚合如何实现?
在并发情况下,Elasticsearch 如何保证读写一致?
如何监控 Elasticsearch 集群状态?
介绍下你们电商搜索的整体技术架构
介绍一下你们的个性化搜索方案?
是否了解字典树?
拼写纠错是如何实现的?
Ps:由于篇幅限制,笔记无法全部为大家展示出来,就以截图主要内容的形式让大家参考啦,需要完整版的小伙伴可以点击>>传送门<<获取
总结
不论是技术经理还是架构师,没有绝对地说哪条路是对还是错,适合自己才是最重要。小公司的可能没有架构师这个概念,大公司的架构师职位又不是那么容易拿下。但不管怎样,不断去学习新的技术,提升自己的层次是很有必要的,无论你在哪一家公司,过硬的技术水平才能吃得开。
评论