跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava算法

Java 核心面试知识点汇总:基础、并发、JVM、数据库与中间件

汇总了 Java 开发岗位的核心面试知识点,包括 Java 基础(OOP、集合、异常、IO、反射、序列化)、并发编程(线程池、volatile、锁)、JVM(内存模型、GC)、数据库(MySQL、Redis、MongoDB)以及主流中间件(Spring、Dubbo、RabbitMQ、Kafka 等)。内容旨在帮助开发者梳理技术体系,应对面试挑战。

CodeArtist发布于 2026/3/29更新于 2026/10/25102 浏览
Java 核心面试知识点汇总:基础、并发、JVM、数据库与中间件

Java 核心面试知识点汇总

本文整理了 Java 开发岗位常见的面试知识点,涵盖基础、集合、并发、JVM、数据库及中间件等核心内容。

Java OOP

  • 什么是 B/S 架构?什么是 C/S 架构
  • Java 都有哪些开发平台?
  • 什么是 JDK?什么是 JRE?
  • Java 语言有哪些特点
  • 面向对象和面向过程的区别
  • 什么是数据结构?
  • Java 的数据结构有哪些?
  • 什么是 OOP?
  • 类与对象的关系?
  • Java 中有几种数据类型

image

Java 集合/泛型

  • ArrayList 和 linkedList 的区别
  • HashMap 和 HashTable 的区别
  • Collection 包结构,与 Collections 的区别
  • 泛型常用特点(待补充)
  • 说说 List,Set,Map 三者的区别
  • Array 与 ArrayList 有什么不一样?
  • Map 有什么特点
  • 集合内存放于 Java.util 包中,主要有几种接口
  • 什么是 list 接口
  • 说说 ArrayList(数组)

image

Java 异常

  • Java 中异常分为哪两种?
  • 异常的处理机制有几种?
  • 如何自定义一个异常
  • try catch finally,try 里有 return,finally 还执行么?
  • Exception 与 Error 包结构
  • Throw 与 throws 区别
  • Error 与 Exception 区别?
  • error 和 exception 有什么区别

image

Java 中的 IO 与 NIO

  • Java 中 IO 流?
  • Java IO 与 NIO 的区别
  • 常用 io 类有哪些
  • 字节流与字符流的区别
  • 阻塞 IO 模型
  • 非阻塞 IO 模型
  • 多路复用 IO 模型
  • 信号驱动 IO 模型
  • 异步 IO 模型
  • JAVA NIO

image

Java 反射

  • 除了使用 new 创建对象之外,还可以用什么方法创建对象?
  • Java 反射创建对象效率高还是通过 new 创建对象的效率高?
  • java 反射的作用
  • 哪里会用到反射机制?
  • 反射的实现方式:
  • 实现 Java 反射的类:
  • 反射机制的优缺点:
  • Java 反射 API
  • 反射使用步骤(获取 Class 对象、调用对象方法)
  • 获取 Class 对象有几种方法
  • 利用反射动态创建对象实例

image

Java 序列化

  • 什么是 java 序列化,如何实现 java 序列化?
  • 保存 (持久化) 对象及其状态到内存或者磁盘
  • 序列化对象以字节数组保持 - 静态成员不保存
  • 序列化用户远程对象传输
  • Serializable 实现序列化
  • writeObject 和 readObject 自定义序列化策略
  • 序列化 ID
  • 序列化并不保存静态变量
  • Transient 关键字阻止该变量被序列化到文件中
  • 序列化(深 clone 一中实现)

image

多线程 & 并发

JAVA 并发知识库

  • Java 中实现多线程有几种方法
  • 继承 Thread 类
  • 实现 Runnable 接口。
  • ExecutorService、Callable、Future 有返回值线程
  • 基于线程池的方式
  • 4 种线程池
  • 如何停止一个正在运行的线程
  • notify() 和 notifyAll() 有什么区别?
  • sleep() 和 wait() 有什么区别?
  • volatile 是什么?可以保证有序性吗?

image

JVM

  • java 中会存在内存泄漏吗,请简单描述。
  • 64 位 JVM 中,int 的长度是多少?
  • Serial 与 Parallel GC 之间的不同之处?
  • 32 位和 64 位的 JVM,int 类型变量的长度是多少?
  • Java 中 WeakReference 与 SoftReference 的区别?
  • JVM 选项 -XX:+UseCompressedOops 有什么作用?为什么要使用
  • 怎样通过 Java 程序来判断 JVM 是 32 位 还是 64 位?
  • 32 位 JVM 和 64 位 JVM 的最大堆内存分别是多少?
  • JRE、JDK、JVM 及 JIT 之间有什么不同?
  • 解释 Java 堆空间及 GC?

image

Mysql

  • 数据库存储引擎
  • InnoDB(B+ 树)
  • TokuDB(Fractal Tree-节点带数据)
  • Memory
  • 数据库引擎有哪些
  • InnoDB 与 MyISAM 的区别
  • 索引
  • 常见索引原则有
  • 数据库的三范式是什么
  • 第一范式 (1st NF - 列都是不可再分)

image

Redis

  • 什么是 Redis?
  • Redis 与其他 key-value 存储有什么不同?
  • Redis 的数据类型?
  • 使用 Redis 有哪些好处?
  • Redis 相比 Memcached 有哪些优势?
  • Memcache 与 Redis 的区别都有哪些?
  • Redis 是单进程单线程的?
  • 一个字符串类型的智能存储最大容量是多少?
  • Redis 持久化机制
  • 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题

image

Memcached

  • Memcached 是什么,有什么作用?
  • memcached 服务在企业集群架构中有哪些应用场景?
  • Memcached 服务分布式集群如何实现?
  • Memcached 服务特点及工作原理是什么?
  • 简述 Memcached 内存管理机制原理?
  • memcached 是怎么工作的?
  • memcached 最大的优势是什么?
  • memcached 和 MySQL 的 query
  • memcached 和服务器的 local cache(比如 PHP 的 APC、mmap 文件等)相比,有什么优缺点?
  • memcached 的 cache 机制是怎样的?
  • memcached 如何实现冗余机制?

image

MongoDB

  • mongodb 是什么?
  • mongodb 有哪些特点?
  • 你说的 NoSQL 数据库是什么意思?NoSQL 与 RDBMS 直接有什么区别?为什么要使用和不使用 NoSQL 数据库?说一说 NoSQL 数据库的几个优点?
  • NoSQL 数据库有哪些类型?
  • MySQL 与 MongoDB 之间最基本的差别是什么?
  • 你怎么比较 MongoDB、CouchDB 及 CouchBase?
  • MongoDB 成为最好 NoSQL 数据库的原因是什么?
  • journal 回放在条目 (entry) 不完整时 (比如恰巧有一个中途故障了) 会遇到问题吗?
  • 分析器在 MongoDB 中的作用是什么?
  • 名字空间 (namespace) 是什么?

image

Spring

  • 不同版本的 Spring Framework 有哪些主要功能?
  • 什么是 Spring Framework?
  • 列举 Spring Framework 的优点。
  • Spring Framework 有哪些不同的功能?
  • Spring Framework 中有多少个模块,它们分别是什么?
  • 什么是 Spring 配置文件?
  • Spring 应用程序有哪些不同组件?
  • 使用 Spring 有哪些方式?
  • 什么是 Spring IOC 容器?
  • 什么是依赖注入?

image

Spring Boot

  • 什么是 Spring Boot?
  • 为什么要用 SpringBoot
  • Spring Boot 有哪些优点?
  • Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
  • 运行 Spring Boot 有哪几种方式
  • 如何理解 Spring Boot 中的 Starters?
  • 如何在 Spring Boot 启动的时候运行一些特定的代码?
  • Spring Boot 需要独立的容器运行吗?
  • Spring Boot 中的监视器是什么?
  • 如何使用 Spring Boot 实现异常处理?

image

Spring Cloud

  • 什么是 Spring Cloud?
  • 使用 Spring Cloud 有什么优势?
  • 服务注册和发现是什么意思?Spring Cloud 如何实现?
  • 负载平衡的意义什么?
  • 什么是 Hystrix?它如何实现容错?
  • 什么是 Hystrix 断路器?我们需要它吗?
  • 什么是 Netflix Feign?它的优点是什么?
  • 什么是 Spring Cloud Bus?我们需要它吗?
  • 什么是微服务
  • 什么是服务熔断?什么是服务降级

image

RabbitMQ

  • 什么是 rabbitmq
  • 为什么要使用 rabbitmq
  • 使用 rabbitmq 的场景
  • 如何确保消息正确地发送至 RabbitMQ?如何确保消息接收方消费了消息?
  • 如何避免消息重复投递或重复消费?
  • 消息基于什么传输?
  • 消息如何分发?
  • 消息怎么路由?
  • 如何确保消息不丢失?
  • 使用 RabbitMQ 有什么好处?

image

Dubbo

  • 为什么要用 Dubbo?
  • Dubbo 的整体架构设计有哪些分层?
  • 默认使用的是什么通信框架,还有别的选择吗?
  • 服务调用是阻塞的吗?
  • 一般使用什么注册中心?还有别的选择吗?
  • 默认使用什么序列化框架,你知道的还有哪些?
  • 服务提供者能实现失效提出是什么原理?
  • 服务上线怎么不影响旧版本?
  • 如何解决服务调用链过长的问题?
  • 说说核心的配置有哪些?

image

MyBatis

  • 什么是 Mybatis?
  • Mybaits 的优点
  • MyBatis 框架的缺点
  • MyBatis 框架适用场合
  • MyBatis 与 Hibernate 有哪些不同?
  • #{}和 ${}的区别是什么?
  • 当实体类中的属性名和表中的字段名不一样,怎么办?
  • 模糊查询 like 语句该怎么写?
  • 通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗?
  • 如何获取自动生成的 (主) 键值?

image

ZooKeeper

  • 什么是 Zookeeper?
  • Zookeeper 如何保证了分布式一致性特性?
  • ZooKeeper 提供了什么?
  • Zookeeper 文件系统
  • ZAB 协议?
  • 四种类型的数据节点 Znode
  • Zookeeper Watcher 机制 -- 数据变更通知
  • 客户端注册 Watcher 实现
  • 服务端处理 Watcher 实现
  • 客户端回调 Watcher

image

数据结构

  • 栈(stack)
  • 队列(queue)
  • 链表(Link)
  • 散列表(Hash Table)
  • 排序二叉树
  • 前缀树
  • 红黑树
  • B-TREE
  • 位图

image

Elasticsearch

  • elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段。
  • elasticsearch 的倒排索引是什么
  • elasticsearch 索引数据多了怎么办,如何调优,部署
  • elasticsearch 是如何实现 master 选举的
  • 详细描述一下 Elasticsearch 索引文档的过程
  • 详细描述一下 Elasticsearch 搜索的过程?
  • Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法
  • lucence 内部结构是什么?
  • Elasticsearch 是如何实现 Master 选举的?
  • Elasticsearch 中的节点(比如共 20 个),其中的 10 个选了一个 master,另外 10 个选了另一个 master,怎么办?

image

Kafka

  • Kafka 是什么
  • partition 的数据文件(offset,MessageSize,data)
  • 数据文件分段 segment(顺序读写、分段命令、二分查找)
  • 负载均衡(partition 会均衡分布到不同 broker 上)
  • 批量发送
  • 压缩(GZIP 或 Snappy)
  • 消费者设计
  • Consumer Group
  • 如何获取 topic 主题的列表
  • 生产者和消费者的命令行是什么?

image

微服务

  • 微服务架构有哪些优势?
  • 微服务有哪些特点?
  • 设计微服务的最佳时间是什么?
  • 微服务架构如何运作?
  • 微服务架构的优缺点是什么?
  • 单片,SOA 和微服务架构有什么区别?
  • 在使用微服务架构时,您面临哪些挑战?
  • SOA 和微服务架构之间的主要区别是什么?
  • 微服务有什么特点?

image

Linux

  • 绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示?切换目录用什么命令?
  • 怎么查看当前进程?怎么执行退出?怎么查看当前路径?
  • 怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当
  • Ls 命令执行什么功能?可以带哪些参数,有什么区别?
  • 查看文件有哪些命令
  • 列举几个常用的 Linux 命令
  • 你平时是怎么查看日志的?
  • 建立软链接 (快捷方式),以及硬链接的命令
  • 目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?
  • 查看文件内容有哪些命令可以使用?

image

面试,难还是不难?最终结果好还是不好?取决于面试者的底蕴(气场 + 技能)、心态和认知以及沟通技巧。而一些主流的大型互联网公司面试(阿里巴巴、京东、美团、滴滴)更是需要你在面试时展现出自己的能力,从而获得面试官的欣赏和肯定。

而程序员在应聘时更是需要经历层层面试。俗话说,磨刀不误砍柴工,做好面试前的准备工作可以帮助大家更好的应对面试官的问题以及面试中的突发情况。

image

目录

  1. Java 核心面试知识点汇总
  2. Java OOP
  3. Java 集合/泛型
  4. Java 异常
  5. Java 中的 IO 与 NIO
  6. Java 反射
  7. Java 序列化
  8. 多线程 & 并发
  9. JVM
  10. Mysql
  11. Redis
  12. Memcached
  13. MongoDB
  14. Spring
  15. Spring Boot
  16. Spring Cloud
  17. RabbitMQ
  18. Dubbo
  19. MyBatis
  20. ZooKeeper
  21. 数据结构
  22. Elasticsearch
  23. Kafka
  24. 微服务
  25. Linux

更多推荐文章

查看全部
  • Python 常用第三方库整理:数据分析、爬虫与机器学习
  • 宇树 G1 机器人开发:有线与无线连接配置指南
  • GitHub Copilot 登录失败排查指南:从网络到账户的 7 个关键点
  • BeyondCompare 安装与本地试用状态管理
  • Python 实现 MCP 客户端调用高德地图天气查询示例
  • AI 时代产品经理全流程落地管控:从需求到上线
  • Stable Diffusion 云端部署与绘画实战指南
  • KMP 字符串匹配算法原理与 next 数组推导
  • Python FastAPI 入门教程:新手快速上手指南
  • 告别随意修改 State:Immutable.js 实战与避坑指南
  • SpringBoot+Vue 高校疫情防控管理系统设计与实现
  • Python Flask 职位数据采集与数据分析系统设计与实现
  • AI 辅助开发:基于 DeepSeek 构建贪吃蛇游戏实战
  • C++ string 类全面解析
  • C++备忘录模式:优雅实现对象状态保存与恢复
  • 大模型入门教程:基础原理、微调技术与实战指南
  • 基于 YOLOv8 全系列模型的乡村道路路面缺陷智能检测系统
  • Python 爬虫实战:基于 SimHash 的语义级去重与近重复检测
  • Strudel:在浏览器里做实时算法音乐
  • AI 产品经理入门基础与核心知识体系

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online