Github 标星 60K,不愧是阿里巴巴内部出厂的“Java 核心面试神技”
前言
作为一个 Java 程序员,你平时总是陷在业务开发里,每天噼里啪啦忙敲着代码,上到系统开发,下到 Bug 修改,你感觉自己无所不能。然而偶尔的一次聚会,你听说和自己一起出道的同学早已经年薪 50 万,而自己却囊中羞涩。于是你也想看看新机会,找个新平台,好好发展。
但是面试的时候,当那个笑眯眯的面试官问出那些你再熟悉不过的 Java 问题时,你只是感觉似曾相识,却怎么也回答不到点上。比如 HashMap 的工作原理,再或者 volatile 的使用场景。
这个时候,你可能会怀疑自己的能力,也痛恨为什么当初自己没有好好复习。
该新版文档在 Github 上上传一个星期已经收 60K+star 的 Java 核心面试神技(这参数,质量多高就不用我多说了吧)非常全面,包涵 Java 基础、Java 集合、JavaWeb、Java 异常、OOP、IO 与 NIO、反射、注解、多线程、JVM、MySQL、MongoDB、Spring 全家桶、计算机网络、分布式架构、Redis、Linux、git、前端、算法与数据结构、MyBatis、RocketMQ、Netty、Dubbo、Zookeeper、分布式缓存、数据结构等等内容非常丰富,已经帮很多人拿下互联网一线公司的 offer。下面我来跟大家一起分享一下。
JavaOOP
- 什么是 B/S 架构?什么是 C/S 架构
- Java 都有哪些开发平台?
- 什么是 JDK?什么是 JRE?
- Java 语言有哪些特点
- 面向对象和面向过程的区别
- 什么是数据结构?
- Java 的数据结构有哪些?
- 什么是 OOP?
- 类与对象的关系?
- Java 中有几种数据类型

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

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

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

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

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

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

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?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

面试,难还是不难?最终结果好还是不好?取决于面试者的底蕴(气场+技能)、心态和认知以及沟通技巧。而一些主流的大型互联网公司面试(阿里巴巴、京东、美团、滴滴)更是需要你在面试时展现出自己的能力,从而获得面试官的欣赏和肯定。
而程序员在应聘时更是需要经历层层面试。俗话说,磨刀不误砍柴工,做好面试前的准备工作可以帮助大家更好的应对面试官的问题以及面试中的突发情况。

相关文章:
Github 标星 60K,不愧是阿里巴巴内部出厂的“Java 核心面试神技”
前言 作为一个 Java 程序员,你平时总是陷在业务开发里,每天噼里啪啦忙敲着代码,上到系统开发,下到 Bug 修改,你感觉自己无所不能。然而偶尔的一次聚会,你听说和自己一起出道的同学早已经年薪 50 万&#x…...
git 使用教程
git 使用手册 参考链接: https://blog.csdn.net/wanjun_007/article/details/126770712 git给远程仓库添加分支并上传文件 注意:git init 是建一个自己的本地仓 0 : 先git clone master 分支 1. 先pull master分支 2. git checkout -b &q…...
【Vue2.0源码学习】模板编译篇-模板解析阶段(HTML解析器)
文章目录 1. 前言2. HTML解析器内部运行流程3. 如何解析不同的内容3.1 解析HTML注释3.2 解析条件注释3.3 解析DOCTYPE3.4 解析开始标签3.5 解析结束标签3.6 解析文本 4. 如何保证AST节点层级关系5. 回归源码5.1 HTML解析器源码5.2 parseEndTag函数源码 6. 总结 1. 前言 上篇文…...
ARM裸机开发-串口通信
一、在使用EXYNOS4412的串口发送和接收的时候,首先要对EXYNOS4412的串口进行配置,我们使用轮询方式时的配置有哪些? 1、配置GPIO,使对应管脚作为串口的发送和接收管脚 GPA0CON寄存器[7:4][3:0] 0x22 GPA0PUD寄存器[3:0] 0 禁止上…...
Dubbo分布式服务框架,springboot+dubbo+zookeeper
一Dubbo的简易介绍 1.Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需…...
网络:UDP out of order;SIP;CPU out-of-order 执行
文章目录 问题SIP如果使用UDP出现乱序网络CPU问题 最近遇到虚拟机收到的UDP包发生乱序。从协议上说,这个乱序是标准,及特性所允许的,期望的。所以上层应用需要适应这种乱序,如果不能适应,可能需要做协议转换,专用TCP,让TCP来处理这种乱序的可能。 产生乱序的原因: 是网…...
我心中的TOP1编程语言—JavaScript
作为一名研发工程师(程序员),平时工作中肯定会接触或了解很多编程语言。每个人都会有自己工作中常用的语言,也会有偏爱的一些编程语言。而我心中的最爱,毫无疑问,就是 JavaScript。 JavaScript 是一门编程…...
CentOS环境下的Maven安装
CentOS 安装 Maven 镜像地址 镜像地址:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/ 下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.8.8/binaries/ 下载maven 将下载好的压缩包拷贝到根目录下 解压 tar -zxvf ap…...
表的增删改查
1、创建表 mysql> create table employee ( -> id int(1) comment 员工编号, -> name varchar(6) comment 员工名字, -> gender varchar(2) comment 员工性别, -> salary int (4) comment 员工薪资); Query OK, 0 rows affected (0.01 sec) 2、…...
Tauri 应用中发送 http 请求
最近基于 Tauri 和 React 开发一个用于 http/https 接口测试的工具 Get Tools,其中使用了 tauri 提供的 fetch API,在开发调试过程中遇到了一些权限和参数问题,在此记录下来。 权限配置 在 tauri 应用中,如果想要使用 http 或 fe…...
基于霍夫变换的航迹起始算法研究(Matlab代码实现)
目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨💻4 Matlab代码 💥1 概述 一、设计内容 利用Hough变换处理量测得到的含杂波的二维坐标,解决多目标航迹起始问题。使用Matlab进行仿真&#x…...
如何使用Excel公式将(d:1,a:4,c:2,b:3)快速分割成8列并按顺序排列
Excel是一款功能强大的电子表格软件,可以帮助我们处理各种数据。在处理数据时,有时候需要将一列数据按照特定的格式进行分割和重新排列。本文将介绍如何使用Excel公式将"(d:1,a:4,c:2,b:3)"快速分割成8列,并按照指定顺序排列为&quo…...
遥控泊车系统技术规范
目 录 1. 版本履历... 3 2. 文档使用范围... 3 3. 术语缩写... 3 4. 系统架构... 4 5. 功能需求... 4 5.1 功能清单... 4 6.2 功能关系描述(如有)... 4 5.3 功能1. 4 5.3.1 功能总体状态动态说…...
qt 线程状态机实现并发自动任务
一、状态机类 头文件 MyStateMachine.h#ifndef MYSTATEMACHINE_H #define MYSTATEMACHINE_H#include <QStateMachine> #include "ActionTask.h" #include...
社交机器人培育
论文: 自我繁殖的假新闻:机器人和人工智能使印度冲突地区的社会两极分化永久化 Self-Breeding Fake News: Bots and Artificial Intelligence Perpetuate Social Polarization in India’s Conflict Zones 论文链接:https://jps.library.ut…...
CUnit在ARM平台上的离线搭建(让CUnit编译安装成功之后的可执行文件.so变成ARM下的—ARM aarch64)(实用篇)
前言:1 CUint-2.1-3.tar.bz2压缩安装包下载并解压2 进入CUint-2.1-3目录并且通过指令./bootstrap*产生configure *执行文件3 执行./configure*命令4 make编译5 make install 安装 前言: 在X86架构上的Linux操作系统上面进行cmake编译(Cyclon…...
整数序列(山东大学考研机试题)
水仙花数(中南考研机试题) 链接:3644. 水仙花数 - AcWing题库 /* 暴力枚举罢了 */ #include<iostream> using namespace std; const int N1e3100; int book[N]; int pow3(int k){return k*k*k; } int main() {int m,n;for(int i100;i<999;i){int t1,t2,t3;t1 i%10;t…...
k8s集群安装
目录 一 主机准备 1.1 设备配置 ⚠️注意1 ⚠️注意2 1.2 环境准备 1.3docker安装 二 安装kubeadm、kubectl、kubelet 2.1 添加镜像源 2.2 安装 三 master节点部署 四 node节点加入集群 五 CNI网络插件calico 六 其他节点使用kubectl 1.拷贝文件 2.添加到环境变量…...
【webrtc】ProcessThreadAttached
RegisterModule 调用所在的线程指针传递给ProcessThreadAttached ProcessThreadAttached 调用不是在worker thread 而是在 registers/deregister 这个module或者 start stop 这个module的时候 ** ** pacedsender是一个moudle -实现了...
Orange pi3初调试
因为树莓派沦为理财产品1年前出手殆尽后,现在唯一一个B性能不足一直没动力调试,沦为吃灰工具。 偶然之间多多给推了个orange产品预售,看了下pi3的参数,这不和赚了差价的3B一个性能吗?果断定了个预售款,在差…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
