
2025最新Java八股文
文章平均质量分 93
内容通俗易懂
xumistore
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java八股文——Git
特性/维度git mergegit rebase核心操作创建一个新的“合并提交”来汇合两个分支将一个分支的提交“平移”并重新应用到另一个分支的顶端提交历史保留真实历史,产生分叉和合并记录重写历史,形成一条线性的、干净的历史优点真实、可追溯,对团队协作安全提交历史清晰、整洁缺点历史记录可能变得复杂混乱(“意大利面条”)修改了历史,如果分支已被共享,会给他人带来麻烦。原创 2025-06-23 00:30:00 · 907 阅读 · 0 评论 -
Java八股文——Linux
常用命令组合核心作用ps -ef查看所有进程的完整信息,常用于grep查找特定进程ps aux查看所有进程的资源占用情况,常用于sort排序定位性能瓶颈查看指定进程下的所有线程,用于更细粒度的线程级问题排查虽然top命令可以动态地展示这些信息,但ps的优势在于它是一个静态快照,非常适合在脚本中或与其他命令(如grepawksort)通过管道结合使用,进行自动化的分析和处理。方法优点缺点/注意事项常用场景ps + kill通用性最强,所有Unix-like系统都支持步骤稍多,需要手动处理grep。原创 2025-06-23 00:15:00 · 2675 阅读 · 0 评论 -
Java八股文——系统场景设计
前端:CDN + 静态化 + 交互限流,过滤90%以上的无效流量。网关:IP/UID限流,拦截恶意攻击。服务层读:通过Redis缓存预热,抗住海量查询。写(库存):通过Redis + Lua脚本进行原子性的库存预扣减,解决最核心的并发瓶颈。写(订单):通过消息队列进行异步化,实现削峰填谷,保护后端数据库。数据层:通过乐观锁保证数据库库存一致性,通过幂等消费保证订单不重复创建。保障:通过监控告警和降级预案,保证系统的稳定运行。原创 2025-06-23 00:00:00 · 941 阅读 · 0 评论 -
Java八股文——分布式(下)
做什么:ZooKeeper主要用于实现分布式锁、服务注册与发现、配置管理等分布式协调任务。怎么做:它通过类似文件系统的树形数据模型(Znode)和强大的Watch机制,为上层应用提供了丰富的操作接口。如何保证可靠:其底层通过ZAB协议,以主从复制和过半数提交的方式,保证了在分布式环境下数据的一致性和系统的容错能力。总的来说,ZooKeeper是一个CP系统,它在任何时候都优先保证数据的一致性,是构建可靠分布式系统的关键基础设施。算法名称核心思想优点缺点固定窗口固定时间窗口内计数实现简单。原创 2025-06-22 01:15:00 · 753 阅读 · 0 评论 -
Java八股文——分布式(上)
架构选择放弃的特性保证的特性优点缺点典型系统CP可用性 (A)一致性 (C) + 分区容错性 (P)数据强一致,可靠延迟高,分区时可能部分不可用AP一致性 (C)可用性 (A) + 分区容错性(P)高可用,响应快数据弱一致(最终一致性)CA分区容错性(P)一致性 (C) + 可用性 (A)(理论模型,不存在于分布式系统中)无法应对网络分区,不是分布式系统传统的单体数据库在现代大规模互联网应用的设计中,由于对高可用性的要求越来越高,越来越多的系统倾向于选择AP。原创 2025-06-22 01:00:00 · 616 阅读 · 0 评论 -
Java八股文——消息队列「RabbitMQ篇」
特性核心实现/机制带来的优势可靠性持久化 + 生产者Confirm + 消费者ACK提供了端到端的消息不丢失保证灵活性四种交换机类型 (Direct, Fanout, Topic, Headers)能够实现极其复杂的、精细化的消息路由逻辑高可用镜像队列 (Mirrored Queues)通过多副本和自动故障转移,保证服务不中断功能全面死信队列、TTL、优先级队列、插件生态能优雅地处理各种异常情况和复杂的业务需求总的来说,RabbitMQ凭借其成熟、稳定、功能全面的特性,在。原创 2025-06-22 00:15:00 · 1798 阅读 · 0 评论 -
Java八股文——消息队列「Kafka篇」
优化方面关键技术/设计带来的好处磁盘I/O顺序写操作系统Page Cache极高的写入速度,高效的内存缓存数据传输零拷贝 (sendfile)减少CPU消耗和内存拷贝,极高的投递速度网络效率批量处理数据压缩减少网络往返次数和数据量,提升网络吞吐系统架构分区模型 (Partition)实现了高并发和水平扩展正是这一系列从底层I/O到顶层架构的、环环相扣的优化设计,共同造就了Kafka无可匹敌的高性能。面试官您好,Kafka的模型设计非常独特,它并不是一个传统意义上的消息队列,而是一个。原创 2025-06-22 00:00:00 · 1578 阅读 · 0 评论 -
Java八股文——消息队列「RocketMQ篇」
如果你的系统…那么你应该选择…是一个数据管道,处理海量日志/流数据Kafka是一个业务系统,处理复杂交易/状态流转RocketMQ关于“Kafka可能丢数据”这是一个常见的误解。Kafka通过配置acks=all,并结合(要求写入成功的最小同步副本数)参数,可以实现与RocketMQ同等级别甚至更高的数据可靠性保证,但这样做会牺牲一部分性能。所以,与其说Kafka会丢数据,不如说它给了用户在性能和可靠性之间做选择的灵活性。最终,技术选型是一个权衡的过程。原创 2025-06-21 01:00:00 · 1350 阅读 · 0 评论 -
Java八股文——消息队列「场景篇」
解决消息重复消费问题的核心,是在消费端实现幂等性。首先,为每一条需要幂等处理的消息,确定一个全局唯一的业务ID。然后,在消费时,通过数据库唯一键或Redissetnx等方式,构建一个“判重系统在执行核心业务逻辑前,先进行判重检查,如果发现消息已被处理,就直接丢弃,并正常ACK,保证流程的顺畅。通过这种方式,即使MQ重复投递了消息,我们的业务系统也能保证最终结果的正确性。生产者:使用同步发送 + ACK确认 + 失败重试。MQ服务端:开启持久化 + 集群部署 + 多副本机制。消费者:关闭。原创 2025-06-21 00:00:00 · 643 阅读 · 0 评论 -
Java八股文——数据结构「排序算法篇」
算法名称平均时间复杂度最好时间复杂度最坏时间复杂度空间复杂度稳定性冒泡排序O(n²)O(n)O(n²)O(1)稳定选择排序O(n²)O(n²)O(n²)O(1)不稳定插入排序O(n²)O(n)O(n²)O(1)稳定快速排序O(n log n)O(n log n)O(n²)O(log n)不稳定归并排序O(n log n)O(n log n)O(n log n)O(n)稳定堆排序O(n log n)O(n log n)O(n log n)O(1)原创 2025-06-20 16:49:45 · 410 阅读 · 0 评论 -
Java八股文——数据结构「数据结构篇」
数据结构主要优点主要缺点Java中的实现ArrayListO(1) 随机访问O(n) 插入/删除动态数组LinkedListO(1) 插入/删除O(n) 随机访问双向链表HashMapO(1) 平均增删查无序,哈希冲突影响性能哈希表TreeMapO(log n) 增删查,且有序性能略低于HashMap红黑树O(1) 查最值,O(log n) 增删只能访问最值堆特性/维度数组 (Array)链表 (Linked List)内存结构连续存储离散存储随机访问 (读)O(1),极快。原创 2025-06-20 15:50:22 · 509 阅读 · 0 评论 -
Java八股文——操作系统「网络 I/O 篇」
I/O模型第一阶段 (等待数据)第二阶段 (拷贝数据)特点BIO阻塞阻塞简单,但并发性能差NIO非阻塞(需用户轮询)阻塞避免阻塞,但CPU空转I/O 复用阻塞(在上,但可监视多个FD)阻塞高效管理大量连接,Java NIO的核心信号驱动非阻塞阻塞利用信号通知,应用较少AIO非阻塞(由内核完成)非阻塞(由内核完成)真异步,性能最高特性/维度selectpollepoll连接数限制有 (约1024)无无时间复杂度O(n)O(n)O(1)工作模式被动轮询被动轮询主动回调。原创 2025-06-20 14:52:12 · 793 阅读 · 0 评论 -
Java八股文——操作系统「中断篇」
中断机制通过。原创 2025-06-20 13:26:04 · 847 阅读 · 0 评论 -
Java八股文——操作系统「内存管理篇」
面试官您好,虚拟内存和物理内存是现代操作系统内存管理中的两个核心概念,它们之间是映射关系,而不是简单的等同关系。1. 物理内存(Physical Memory)是什么:物理内存就是我们常说的内存条,它是计算机上真实存在的硬件。它的容量是固定的,比如8GB、16GB,是所有进程最终要运行的地方。你可以把它想象成一个实际的、有限大小的仓库。特点资源有限:大小是固定的,所有程序共享这个有限的资源。地址唯一:每个存储单元都有一个唯一的、真实的物理地址。由硬件直接访问:CPU通过地址总线直接访问。原创 2025-06-20 11:54:51 · 788 阅读 · 0 评论 -
Java八股文——操作系统「锁篇」
加锁的本质,就是通过建立一套规则,牺牲一部分并发性,来换取多线程环境下数据操作的。原创 2025-06-20 11:07:29 · 1031 阅读 · 0 评论 -
Java八股文——操作系统「进程篇」
用户态和内核态是操作系统为保护自身而设计的。原创 2025-06-19 18:52:29 · 798 阅读 · 0 评论 -
Java八股文——计算机网络「网络攻击篇」
DDoS攻击是一种利用。原创 2025-06-19 15:58:34 · 1094 阅读 · 0 评论 -
Java八股文——计算机网络「网络场景篇」
我的排查思路就是这样一个。原创 2025-06-19 15:29:00 · 969 阅读 · 0 评论 -
Java八股文——计算机网络「传输层篇」
面试官您好,TCP的拥塞控制,是TCP协议中最高级、也最能体现其“智能”和“社会责任感”的机制。如果说流量控制(Flow Control)是为了解决“点对点”之间,发送方不要撑爆接收方的问题,那么拥塞控制(Congestion Control)就是为了解决“点对网”之间,发送方不要撑爆整个网络的问题。1. 为什么需要拥塞控制?—— 避免“公地悲剧”正如您所分析的,互联网是一个共享资源。如果每一个TCP连接都只顾自己,以最快的速度疯狂地发送数据,那么很快就会导致网络中的路由器不堪重负,发生。原创 2025-06-19 14:21:10 · 883 阅读 · 0 评论 -
Java八股文——计算机网络「应用层篇」
面试官您好,您提出的这个问题,直击了现代Web架构从单体走向分布式过程中,身份认证方式演进的核心驱动力。1. 首先,什么是集群部署?集群部署,简单来说,就是为了应对高并发、保证高可用,我们将同一个应用程序,同时部署在多台服务器上,然后通过一个负载均衡器(Load Balancer),将用户的请求分发到这些不同的服务器实例上去处理。2. 传统Session-Cookie方式在集群中的“困境”在单机时代,传统的Session-Cookie方式工作得很好。但一旦进入集群部署,它就遇到了一个。原创 2025-06-18 19:47:22 · 976 阅读 · 0 评论 -
Java八股文——计算机网络「网络模型篇」
面试官您好,TCP/IP模型,也叫TCP/IP协议簇(Protocol Suite),它不是一个单一的协议,而是一整套网络通信协议的集合。与OSI七层模型不同,TCP/IP模型并不是一个纯粹的理论框架,而是源于实践、并最终成为互联网事实标准的一套模型。它更简化、更核心,直接定义了今天互联网是如何工作的。TCP/IP模型通常被划分为四层1. 应用层 (Application Layer)对应OSI模型:相当于OSI的应用层、表示层、会话层的合体。职责:直接面向用户和应用程序,负责。原创 2025-06-18 15:27:40 · 756 阅读 · 0 评论 -
Java八股文——Redis「场景篇」
面试官您好,热Key问题,也叫热点Key问题,是我们在使用Redis时,需要重点关注和处理的一种典型的“数据访问倾斜”问题。1. 什么是热Key?一个Key之所以被称为“热Key”,并不是因为它本身有什么特殊,而是因为它在某个时间段内,被访问的频率(QPS)极高,导致绝大部分的请求压力都集中在了这个单一的Key上。QPS集中(最常见)比如,整个Redis实例的总QPS是5万,但其中一个Key(比如一个爆款商品的ID)的QPS就占了4万。带宽集中这通常发生在大Key和高QPS的组合下。原创 2025-06-18 14:58:58 · 378 阅读 · 0 评论 -
Java八股文——Redis「集群篇」
面试官您好,整个选主过程,正是在主节点被确认“客观下线”,并且哨兵集群选举出一位“Leader”之后,由这位Leader来唯一地执行的。这个“选主算法”,并不是一个单一的算法,而是一套层次分明、逐步筛选的规则。Leader哨兵会像一个严谨的面试官一样,对所有从节点进行层层考察,最终挑选出最合适的那一位“继任者”。这个筛选过程,严格按照以下优先级顺序第一轮筛选:健康与状态检查(过滤掉不合格的)Leader哨兵会首先遍历所有从节点,并淘汰掉必须是在线状态。原创 2025-06-18 12:58:57 · 782 阅读 · 0 评论 -
Java八股文——Redis「淘汰删除篇」
面试官您好,Redis的内存淘汰策略,是当Redis的物理内存使用量达到maxmemory上限时,为了能继续服务新的写入请求,而必须执行的一种“自我保护”机制。它定义了“当内存满了,应该扔掉哪个数据来腾出空间”的规则。Redis提供了非常丰富的淘汰策略,正如您所分析的,我们可以将这八种策略,按照两个维度来进行一个清晰的分类。第一层分类:是否进行淘汰?noeviction这是Redis 3.0之后至今的默认策略。行为:当内存达到上限时,它不淘汰任何数据。对于后续的所有写入命令(如SETLPUSH。原创 2025-06-18 11:24:33 · 902 阅读 · 0 评论 -
Java八股文——Redis「事务篇」
面试官您好,在Redis中实现原子性,我们需要分两种情况来讨论:单条命令的原子性和多条命令组合的原子性。然而,在很多业务场景中,我们需要将多个Redis命令组合成一个不可分割的操作单元。比如,经典的“读取-修改-写回”(Read-Modify-Write)模式。如果简单地将多条命令一条条地发送给Redis,那么在这些命令的执行间隙,就可能会有其他客户端的命令插进来,从而破坏了我们想要的原子性。为了解决这个问题,Redis提供了几种方案,其中Lua脚本是目前最推荐、也是最强大的方式。终极方案:Lua脚本通过原创 2025-06-18 11:07:51 · 1064 阅读 · 0 评论 -
Java八股文——Redis「线程模型篇」
Redis的快,是。原创 2025-06-18 10:35:42 · 760 阅读 · 0 评论 -
Java八股文——Redis「数据结构篇」
面试官您好,listpack是Redis在5.0版本中引入、并在7.0版本中正式全面取代ziplist的一种新的紧凑型列表数据结构。在保留ziplist极高空间利用率这一核心优点的同时,彻底解决ziplist最致命的“连锁更新”(Cascading Update)问题。我们可以把listpack看作是ziplist的一次“青出于蓝而胜于蓝”的进化。1. 回顾ziplist的“阿喀琉斯之踵”——连锁更新要理解listpack的精妙之处,我们必须先回顾ziplist为什么会被取代。ziplist。原创 2025-06-17 16:01:52 · 1305 阅读 · 0 评论 -
Java八股文——MySQL「架构篇」
MySQL主从复制通过一套精巧的、基于。原创 2025-06-17 14:28:33 · 952 阅读 · 0 评论 -
Java八股文——MySQL「性能调优篇」
面试官您好,命令是我在进行SQL性能优化时,使用最频繁、也最重要的一个工具。它的核心作用可以一句话概括:模拟MySQL的查询优化器来执行一条SQL语句,并向我们展示出它最终决定采用的“执行计划”(Execution Plan)。通过,我们可以在不真正执行查询的情况下,就能“洞察”到MySQL内部打算如何处理我们的SQL。这就像我们拿到了一份“作战地图”,可以清晰地看到:非常简单,只需要在我们的, , , 等语句前,加上关键字即可。如何解读的输出?—— 关注核心字段的输出结果是一张表,里面包含了很多列。在原创 2025-06-17 13:55:12 · 743 阅读 · 0 评论 -
Java八股文——MySQL「日志篇」
面试官您好,MySQL的日志体系非常完善,不同的日志扮演着不同的角色,共同保障了数据库的数据一致性、持久性、可恢复性以及主从同步。我通常会把它们分为两大类:InnoDB引擎层的日志和Server层的日志。这两种日志是InnoDB实现事务ACID特性的基石。1. (重做日志) —— 保证持久性 (Durability)2. (回滚日志) —— 保证原子性 (Atomicity) 与MVCC这是MySQL服务层面的日志,与具体存储引擎无关。3. (二进制日志) —— 用于复制与恢复4. (中继日志) —原创 2025-06-17 12:48:03 · 586 阅读 · 0 评论 -
Java八股文——MySQL「锁篇」
MySQL通过一个。原创 2025-06-16 20:32:31 · 1033 阅读 · 1 评论 -
Java八股文——MySQL「事务篇」
在InnoDB中,原创 2025-06-16 19:39:31 · 691 阅读 · 0 评论 -
Java八股文——MySQL「索引篇」
索引是提升数据库查询性能的核心手段,本质上是一种特殊的数据结构(如B+树或哈希表)。主要分为聚簇索引(数据行直接存储在索引中,如主键)和非聚簇索引(存储指向数据的指针或主键值)。索引能显著减少数据扫描量,将查询复杂度从O(N)降至O(logN),并加速排序、分组等操作。但创建索引需要权衡存储空间和写操作性能损耗。 索引可从多个维度分类:按数据结构分为B+树、哈希、全文索引;按存储方式分为聚簇索引(数据与索引合一)和二级索引(需回表查询);按功能分为主键、唯一、普通等类型;按字段数量分为单列和联合索引。合理设原创 2025-06-16 18:14:12 · 856 阅读 · 0 评论 -
Java八股文——MySQL「存储引擎篇」
一条SQL的旅程就是:通过。原创 2025-06-12 16:05:27 · 830 阅读 · 0 评论 -
Java八股文——MySQL「SQL 基础篇」
面试官您好,SQL(关系型数据库)和NoSQL(非关系型数据库)是当今数据存储领域的两大主流阵营。它们之间不是“谁取代谁”的关系,而是两种完全不同的设计哲学,适用于解决不同类型的问题。我通常会从以下几个核心维度来对比它们:SQL (关系型数据库):NoSQL (非关系型数据库):SQL:NoSQL:SQL:NoSQL:SQL:NoSQL:我的选型策略:什么时候选择SQL数据库?什么时候选择NoSQL数据库?在现代架构中,我们通常不会只选择一种,而是将SQL和NoSQL数据库组合使用,让它们各自在最擅长的领域原创 2025-06-12 15:00:21 · 945 阅读 · 0 评论 -
Java八股文——Spring「SpringCloud 篇」
面试官您好,服务熔断是微服务架构中一种至关重要的服务保护机制。它的作用就像电路中的“保险丝”,其核心目标是防止在分布式系统中,因某个下游服务的故障或延迟,而导致整个调用链像多米诺骨牌一样接连崩溃,即所谓的“雪崩效应”。1. 为什么需要服务熔断?—— 雪崩效应的模拟“A -> B -> C”的例子非常经典。正常情况:客户端请求服务A,A调用B,B再调用C。故障发生:突然,服务C因为数据库慢查询或自身Bug,导致响应极度缓慢甚至不可用。问题蔓延所有调用C的服务B的线程,都会因为等待C的响应而被。原创 2025-06-11 18:49:55 · 833 阅读 · 0 评论 -
Java八股文——Spring「MyBatis篇」
MyBatis通过。原创 2025-06-11 18:14:54 · 1074 阅读 · 0 评论 -
Java八股文——Spring「SpringBoot 篇」
Spring Boot通过。原创 2025-06-11 18:11:29 · 1247 阅读 · 0 评论 -
Java八股文——Spring「SpringMVC 篇」
MVC模式通过清晰的职责划分,将Web应用拆分为M、V、C三个松耦合的部分。而Spring MVC框架,则通过。原创 2025-06-11 18:03:08 · 1452 阅读 · 0 评论 -
Java八股文——Spring「Spring 篇」
面试官您好,IoC和AOP是Spring框架的两大基石,也是Spring能够实现“解耦”这一核心目标的左膀右臂。它们分别从不同的维度,解决了软件开发中的耦合问题。我可以用一个“造汽车”IoC(控制反转):负责的是“零部件的组装”。AOP(面向切面编程):负责的是“全车功能的统一加装”。1. IoC (Inversion of Control) —— 对象的组装者核心思想:IoC的核心是“控制反转”。在传统开发中,我们需要自己去new一个对象,并手动处理它所依赖的其他对象。原创 2025-06-11 17:54:12 · 1119 阅读 · 0 评论