花了一个月,整理了这份 2021 金三银四 Java 面试 / 学习指南,1500+ 题全面解析
程序员一步入中年,不知不觉便会被铺天盖地的“危机感”上身,曾经的那个少年已经不在,时间就是这样公平。就算你能发明 Java 语言,随着时间的推移,你注定还是要成为慢慢变蔫的茄子,缓缓变黑的葡萄。
看着金三银四马上就要来临的消息,吓得我周末赶紧拿出了面试资料,只读了一小部分我就发现一个事实,果然有很多的知识点都模棱两可,相信很多的人都跟我一样有这样的危机感。怎么办呢???
 
 今天给大家分享一份阿里 P9 架构师推荐的 Java 后端领域巅峰之作《Java 面试资源大礼包》,我看完这份 PDF 之后彻底颠覆了我对 Java 的认知。
注意:关于金三银四面试题的内容整理,包括了 1500 面试题、使用文档以及 Xmind 思维图几个部分,需要高清完整版《Java 面试资源大礼包》的朋友见【下图添加上小助手即可获取到了】
 
 架构师必备技能:(阿里面试必问)
 
 多线程 &并发面试题:
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 集群状态? 
- 介绍下你们电商搜索的整体技术架构 
- 介绍一下你们的个性化搜索方案? 
- 是否了解字典树? 
- 拼写纠错是如何实现的? 
 
 本 PDF 共 1500 道面试题,需要完整版的朋友【可见下图添加上小助手】 即可获得这份《Java 面试资源大礼包》电子版了
 
 











 
    
评论