系列
按主题整理的连续文章 · 234 篇文章
- 1JVM 面试导读:内存、类加载、对象与垃圾回收
- 2JVM 是什么:从类加载到执行引擎的四大组成
- 3JVM 运行时数据区:堆、方法区、虚拟机栈、本地方法栈与程序计数器
- 4Java 类加载:加载过程、初始化与双亲委派
- 5JVM 对象创建与引用:分配、晋升和四种引用
- 6JVM 垃圾回收如何判断对象可以被回收:引用计数与可达性分析
- 7哪些对象可以作为 GC Roots:可达性分析的起点
- 8JVM 三大垃圾回收算法:标记-清除、标记-复制与标记-整理
- 9JVM 常见垃圾收集器:Serial、Parallel、CMS、G1 与 ZGC
- 10Minor GC、Major GC、Full GC 的区别
- 11JVM 基础排障:OOM、频繁 GC 与 CPU 飙高
- 1Redis 系列导读:知识地图、必会主线与复习顺序
- 2Redis 中常见的数据类型有哪些?
- 3Redis 通常应用于哪些场景?
- 4Redis为什么这么快?
- 5Redis 常用的过期时间、删除 Key 命令有哪些?
- 6Redis 的过期 Key 是如何被删除的?
- 7Redis 内存满了怎么办?有哪些淘汰策略?
- 8缓存穿透、击穿、雪崩的区别与解决方案
- 9Redis 如何保证缓存与数据库的数据一致性?
- 10Redis 的持久化机制有哪些?
- 11Redis 主从复制的完整流程是什么?
- 12Redis 的哨兵机制是什么?
- 13Redis Cluster 模式与 Sentinel 模式的区别是什么?
- 14Redis 支持事务吗?如何实现?
- 15Redis 中如何实现分布式锁?
- 16Redis 的 Lua 脚本功能是什么?如何使用?
- 17如何解决 Redis 中的热点 Key 问题?
- 18Redis BigKey 有什么危害?如何发现和治理?
- 19为什么 Redis 设计为单线程?6.0 版本为何引入多线程?
- 20Redis 的 LRU 和 LFU 有什么区别?
- 21Redis 数据类型和底层编码有什么区别?
- 22Redis 中跳表的实现原理是什么?
- 23Redis 的 ZSet 为什么使用跳表,而不是平衡树?
- 24Redis 的 RDB 快照如何生成?为什么会有写时复制?
- 25Redis 的 AOF 刷盘和重写有什么区别?
- 26Redis 断线后如何通过 PSYNC 部分重同步?
- 27Redis 主从切换为什么会丢数据?WAIT 能解决吗?
- 28Redis 集群会出现脑裂问题吗?
- 29Redisson 看门狗(watch dog)机制了解吗?
- 30Redis Cluster:哈希槽、Gossip 与故障转移
- 31Redis Pipeline 为什么能提高吞吐?能保证原子性吗?
- 32Redis 的 SCAN 和 KEYS 有什么区别?
- 33Redis 变慢时如何排查?SLOWLOG 能看到所有耗时吗?
- 34Redis 和 MySQL 有什么区别?
- 35Redis 为什么使用 SDS,而不是 C 字符串?
- 36Redis 的哈希表如何处理冲突和渐进式 rehash?
- 37Redis Cluster 的 MOVED 和 ASK 重定向有什么区别?
- 38Redis Cluster 为什么会报 CROSSSLOT?Hash Tag 怎么用?
- 39Redis 如何实现限流?固定窗口和滑动窗口怎么选?
- 40Redis Stream 如何保证消息消费?ACK 和 PEL 是什么?
- 41Redis 删除数据后为什么内存不下降?如何理解内存碎片?
- 1MySQL 面试复习导读:知识地图与阅读路线
- 2MySQL 存储引擎怎么选:InnoDB、MyISAM 与 MEMORY
- 3MySQL 索引类型与 B+ 树:结构、分类和失效场景
- 4MySQL B+ 树查询全过程:从根节点到页目录
- 5InnoDB 聚簇索引与二级索引:什么是回表
- 6MySQL 覆盖索引:如何避免回表
- 7MySQL 联合索引的最左前缀匹配原则
- 8MySQL 索引下推:把过滤提前到存储引擎
- 9MySQL 事务异常读:脏读、不可重复读与幻读
- 10MySQL 四种事务隔离级别与选型取舍
- 11MySQL MVCC:Undo Log、版本链与 ReadView
- 12MySQL InnoDB 锁的分类:行锁、表锁与意向锁
- 13MySQL 乐观锁与悲观锁:冲突少时重试,冲突多时排队
- 14MySQL 发生死锁怎么办:检测、定位与处理
- 15MySQL 事务的 ACID 特性分别是什么
- 16InnoDB Redo Log 如何保证崩溃恢复
- 17InnoDB Undo Log 的回滚与 MVCC 作用
- 18MySQL Binlog 是什么,和 Redo Log 有什么区别
- 19一条 MySQL 查询从连接到返回结果经历什么
- 20如何用 EXPLAIN 读懂 MySQL 执行计划
- 21MySQL 为什么需要 Redo Log 与 Binlog 两阶段提交
- 22MySQL 崩溃后如何恢复已提交事务
- 23InnoDB Buffer Pool 如何提升查询与写入性能
- 24联合索引应该如何设计
- 25InnoDB 快照读与当前读如何处理幻读
- 26联合索引范围条件之后的列还能使用吗
- 27MySQL 索引看起来失效了,如何判断优化器的选择
- 28MySQL 8.0 如何定位并处理 InnoDB 死锁
- 29MySQL 慢查询如何定位和优化
- 30MySQL 的 ORDER BY、GROUP BY 与 filesort
- 31MySQL 普通索引和唯一索引如何选择
- 32MySQL 主从复制的基本流程是什么
- 33MySQL 主从延迟和读写分离如何处理
- 34MySQL 深分页为什么慢,如何改写
- 35InnoDB 主键应该如何设计
- 36MySQL 字符集与排序规则有什么区别
- 37数据库范式与反范式如何取舍
- 1操作系统面试学习路线与知识地图
- 2什么是用户态和内核态
- 3什么是系统调用?它和普通函数调用有什么区别
- 4进程和线程有什么区别
- 5进程的五种状态:新建、就绪、运行、阻塞与终止
- 6fork、exec 和 wait 分别做什么
- 7什么是竞态条件和临界区?如何保证互斥
- 8互斥锁和自旋锁有什么区别?分别适合什么场景
- 9死锁的四个必要条件是什么?如何逐个预防
- 10缺页异常如何处理?虚拟内存不等于 Swap
- 11阻塞、非阻塞、同步、异步 I/O 怎么区分
- 12抢占式调度是什么?SJF 和 MLFQ 适合什么假设
- 13进程间通信如何选择?管道、共享内存、信号和 Socket
- 14线程切换时,操作系统要做哪些操作
- 15进程上下文切换要保存什么?为什么有开销
- 16死锁是什么?如何预防和避免死锁?
- 17银行家算法如何避免死锁?死锁检测后怎样恢复
- 18活锁、饥饿和死锁有什么区别
- 19进程调度算法:FCFS、SJF、优先级、时间片轮转与多级反馈队列
- 20调度指标有哪些?什么是优先级反转
- 21为什么要有虚拟内存
- 22TLB、多级页表和虚拟地址转换是怎么工作的
- 23什么是分段,什么是分页
- 24页面置换算法有哪些?FIFO、LRU 和 Clock
- 25信号量是什么?计数信号量和二元信号量怎么用
- 26条件变量是什么?为什么要和互斥锁配合使用
- 27进程间通信方式:管道、消息队列、共享内存、信号量与套接字
- 28I/O 模型有哪些:阻塞、非阻塞与多路复用
- 29select、poll 和 epoll 有什么区别
- 30epoll 的 LT 和 ET 模式有什么区别
- 31什么是异步 I/O?它和非阻塞、多路复用的区别
- 32什么是僵尸进程和孤儿进程?如何处理
- 33原子操作是什么?原子性、可见性和有序性有什么区别
- 34什么是工作集和抖动?内存不足时为何系统变慢
- 35mmap 是什么?文件映射和匿名映射怎么理解
- 36什么是写时复制?fork 和私有映射如何利用 COW
- 1计算机网络学习路线与文章导读
- 2网络分层模型与数据封装是怎么回事
- 3TCP/IP 四层模型与 OSI 七层模型
- 4IP 地址与 CIDR 子网怎么理解
- 5ARP 是什么?主机如何找到目标 MAC 地址
- 6IP 路由与默认网关是如何工作的
- 7TCP 和 UDP 有什么区别?如何选择
- 8TCP 握手、挥手和丢包重传分别解决什么问题
- 9TCP 三次握手与四次挥手
- 10TCP 流量控制和拥塞控制有什么区别
- 11TCP 为什么可靠:流量控制、拥塞控制与局限性
- 12TCP 丢包、粘包和拆包是什么
- 13HTTP/1.0、HTTP/1.1、HTTP/2 与 HTTP/3 有什么区别
- 14HTTP 请求包含哪些内容
- 15HTTP 中 GET 和 POST 有什么区别
- 16HTTP 方法的安全性与幂等性怎么区分
- 17HTTP 状态码与网络故障如何区分排查
- 18常见 HTTP 状态码与网站故障排查
- 19HTTP 和 HTTPS 有什么区别
- 20谈谈对 DNS 和 CDN 的理解
- 21从输入网址到网页显示发生了什么
- 22TCP 的 TIME_WAIT 状态有什么作用
- 23TCP 的 CLOSE_WAIT 状态是什么,过多如何排查
- 24TLS 1.3 握手过程是什么
- 25HTTPS 如何校验证书
- 26HTTP 强缓存和协商缓存怎么工作
- 27HTTP Keep-Alive 是什么,连接如何复用
- 28WebSocket 和 HTTP 有什么区别
- 29服务端如何解析 HTTP 请求的数据
- 30NAT 是什么?端口映射如何实现
- 31ICMP、ping 和 traceroute 分别做什么
- 32网络故障如何分层排查
- 33Cookie、Session、Token 与 JWT 有什么区别
- 34常见的登录鉴权方式有哪些
- 35什么是 SYN Flood 攻击
- 1两数之和:哈希表查找补数
- 2罗马数字转整数:识别特殊减法对
- 3三数之和:排序加双指针去重
- 411. 盛最多水的容器:双指针如何排除无效区间
- 542. 接雨水:双指针维护两侧最高柱
- 676. 最小覆盖子串:滑动窗口的扩张与收缩
- 71871. 跳跃游戏 VII:用滑动窗口优化可达性 DP
- 8两数相加:递归模拟进位
- 9合并两个有序链表:哑结点尾插
- 1019. 删除链表的倒数第 N 个结点:哨兵与快慢指针
- 11反转链表:三指针迭代
- 1292. 反转链表 II:头插法与三指针法
- 1325. K 个一组翻转链表:三指针与头插法
- 1461. 旋转链表:定位断点后重新连接
- 1582. 删除排序链表中的重复元素 II:跳过整段重复值
- 16141. 环形链表:哈希集合判圈
- 17138. 复制带随机指针的链表:用哈希表建立新旧节点映射
- 18LCR 110. 所有可能的路径:DFS 回溯枚举 DAG 路径
- 19785. 判断二分图:DFS 染色与冲突检测
- 2052. N 皇后 II:回溯与方向检查
- 21315. 计算右侧小于当前元素的个数:离散化与树状数组
- 22209. 长度最小的子数组:滑动窗口收缩求最短区间
- 23LRU 缓存:哈希表 + 双向链表