补习2

知识点 小标题

知识点

小标题

知识点

小标题

质量属性

质量属性描述、关注点及其提升方法

领域驱动

概念

易混淆质量属性对比

表现层技术
各种技术对比和使用场景

质量属性场景的六要素

数据访问层技术
各种技术对比和使用场景

Redis

数据结构

云原生架构

各种架构特点和对比

淘汰策略

容器技术
docker

缓存失效及解决方法

容器技术
k8s

RDB、AOF

微服务与SOA

微服务与SOA对比

主从复制、哨兵模式、集群模式

Restful架构

常用指令

服务注册模式

缓存模式、数据不一致解决方法

信息安全

对称加密方法

数据库锁

非对称加密方法

哈希、一致性哈希

大数据架构

Lambda架构图

No SQL

概念、特点

Lambda架构实现方法

常见No SQL对比

Kappa架构图

常见No SQL数据读写方法

Kappa架构实现方法

消息队列

特点和作用

分布式系统

一致性方法对比 (图中红框标注)

存在问题及解决方案

分片方案

Elasticsearch

分词原理

数据库

分区方案

倒排索引

高可用模式

向量数据库

概念和作用

AI大模型相关

RAG、向量化

实现算法

MCP工作流

New SQL

概念和特点

AGENT流程和技术

一致性方案

MLOps与LLMOps对比

数据流图

画图方法

Prompt 优化(提示词工程)

UML

各种图概念

架构图技术

架构图涉及到所有技术名词

一、 质量属性

  • 1. 质量属性描述、关注点及其提升方法

    • 考点:性能、可用性、安全性等属性的定义与提升策略(如性能的“资源调度”、可用性的“冗余”)。

    • 解析:软件系统非功能性需求的核心,架构评估(如ATAM)的基础。

    • 坑点:混淆可用性(系统正常运行时间)和可靠性(无故障运行概率)。

    • 记忆法:口诀“性安可用易”(性能、安全、可用性、易用性)。

  • 2. 易混淆质量属性对比

    • 考点:可用性 vs 可靠性 vs 健壮性;性能 vs 可伸缩性。

    • 解析:辨析概念边界,例如可伸缩性是面对需求增加时系统提升处理能力的能力。

    • 坑点:将“可修改性”等同于“可维护性”(可修改性更强调修改的代价低)。

    • 记忆法:对比表格法,列出核心定义词进行对比。

  • 3. 质量属性场景的六要素

    • 考点:刺激源、刺激、环境、制品、响应、响应度量。

    • 解析:用于具体化质量需求,将抽象需求转化为可测试的场景。

    • 坑点:遗漏“环境”或“响应度量”。

    • 记忆法:口诀“源刺环制响度”(源头刺激环境,制品响应测度)。

二、 Redis

  • 1. 数据结构

1. 两层含义

层面

含义

例子

Redis 数据类型

用户通过命令操作的数据形态

String、Hash、List、Set、ZSet

底层数据结构

Redis 内部实现机制

SDS、哈希表、跳表、intset、listpack、quicklist

一个数据类型可以由多种底层结构实现,由 redisObject 的 encoding 字段动态决定。

2. 五种基础类型及底层映射

数据类型

底层实现

典型场景

String

int / embstr / raw,均基于 SDS

缓存、计数器、分布式锁、限流

Hash

小数据用 listpack,大数据转哈希表

对象缓存、字段部分更新

List

quicklist:多个 listpack 组成的双向链表

队列、栈、最新动态

Set

纯整数小集合用 intset,否则哈希表

去重、标签、共同好友

ZSet

小数据用 listpack,大数据用跳表 + 哈希表

排行榜、延迟队列、优先级调度

3. 核心底层结构

底层结构

作用

SDS

动态、二进制安全、O(1) 取长度的字符串

哈希表 dict

O(1) 键值查找,支持渐进式 rehash

跳表 skiplist

有序、范围查询、O(log N) 增删查

intset

紧凑存储纯整数集合

listpack

紧凑连续内存序列,替代 ziplist

quicklist

多个 listpack 组成的双向链表

核心设计张力:内存效率 vs 操作性能。小数据走紧凑编码省内存,大数据自动切换为哈希表或跳表保性能。

4. 四种扩展类型

类型

底层/特点

典型场景

Bitmap

基于 String 的位操作,1 bit 一个标志

签到、活跃标记、布隆过滤器

HyperLogLog

约 12KB 估算上亿基数,误差约 0.81%

UV 统计、独立 IP 估算

GEO

基于 ZSet,GeoHash 编码为 score

附近的人、距离计算

Stream

持久化消息流,支持消费者组和 ACK

可靠消息队列、消息回溯

5. 选型原则

  • 简单键值、计数、锁 → String

  • 对象部分字段更新 → Hash

  • 有序两端进出 → List

  • 去重、集合运算 → Set

  • 排序、范围查询、排行榜 → ZSet

  • 海量布尔标记 → Bitmap

  • 海量唯一计数且可接受近似 → HyperLogLog

  • 地理位置查询 → GEO

  • 需要消费者组和 ACK 的消息流 → Stream

注意大 Key 风险:单个 String 过大、单个 Hash 字段过多,会导致编码切换并可能阻塞单线程 Redis,应合理拆分 Key、控制集合规模。

  • 考点:String、Hash、List、Set、ZSet及底层结构(SDS、跳表、字典)。

  • 解析:不同场景选用不同结构(如排行榜用ZSet)。

  • 坑点:底层编码方式(如ziplist跳表)的转换条件。

  • 记忆法:场景记忆法(计数器-String,对象-Hash,消息-List,标签-Set,排名-ZSet)。

  • 2. 淘汰策略

    • 考点:8种淘汰策略(LRU, LFU, Random, TTL等),如何选择。

    • 解析:内存打满时的清理机制。

    • 坑点:noeviction(默认)会报错而非淘汰数据。

    • 记忆法:分类记忆(随机、过期、全量、易失)。

  • 3. 缓存失效及解决方法

    • 考点:缓存穿透、缓存击穿、缓存雪崩。

    • 解析:穿透(查不存在)、击穿(热点key失效)、雪崩(大量key同时失效)。

    • 坑点:解决“击穿”用互斥锁,解决“穿透”用布隆过滤器或空对象。

    • 记忆法:形象记忆(穿透:穿破底裤;击穿:击破一点;雪崩:大面积崩塌)。

  • 4. RDB、AOF

    • 考点:两种持久化方式的优缺点、混合持久化。

    • 解析:RDB快但可能丢数据,AOF全但文件大恢复慢。

    • 坑点:混淆两者的触发条件(fork子进程)。

    • 记忆法:对比法(RDB=快照,AOF=日志)。

  • 5. 主从复制、哨兵模式、集群模式

    • 考点:高可用架构演进。

    • 解析:主从(读写分离)、哨兵(自动故障转移)、集群(数据分片)。

    • 坑点:哨兵模式下主节点挂掉后的选举过程;集群模式的哈希槽(16384)。

    • 记忆法:演进法(单机 -> 备份 -> 自动监控 -> 分布式扩展)。

  • 6. 常用指令

    • 考点:基础操作(get/set/hset)及运维指令(info, keys)。

    • 坑点:生产环境禁用 keys *(阻塞)。

  • 7. 缓存模式、数据不一致解决方法

    • 考点:旁路缓存(Cache Aside)、读写穿透、异步缓存。双写一致性。

    • 解析:先更数据库还是先删缓存(推荐先更DB后删缓存)。

    • 坑点:延时双删的适用场景。

    • 记忆法:顺序法(DB优先,缓存删除)。

  • 8. 数据库锁

    • 考点:乐观锁(版本号)、悲观锁(行锁/表锁)。分布式锁(Redis Redlock)。

    • 坑点:Redis实现分布式锁的死锁及超时问题。

  • 9. 哈希、一致性哈希

    • 考点:一致性哈希的引入原因、虚拟节点。

    • 解析:解决普通哈希扩缩容带来的大规模数据迁移。

    • 坑点:数据倾斜问题及虚拟节点解决法。

    • 记忆法:环形记忆(数据映射到环上,顺时针找节点)。

三、 No SQL

  • 1. 概念、特点

    • 考点:CAP理论、BASE理论。

    • 解析:非关系型,高并发、海量数据场景。

    • 坑点:CAP三者不可兼得(通常P必须保证,C和A二选一)。

    • 记忆法:缩写记忆(CAP:一致性、可用性、分区容忍性)。

  • 2. 常见No SQL对比

    • 考点:KV型(Redis)、文档型(MongoDB)、列族型(HBase)、图(Neo4j)。

    • 坑点:选型混淆(如大数据宽表用HBase,复杂查询用MongoDB)。

  • 3. 常见No SQL数据读写方法

    • 考点:特定数据库的API调用及底层存储逻辑。

四、 消息队列

  • 1. 特点和作用

    • 考点:解耦、异步、削峰填谷。

    • 记忆法:口诀“异解削”。

  • 2. 存在问题及解决方案

    • 考点:消息丢失(生产/存储/消费端)、重复消费(幂等性)、消息积压。

    • 解析:通过ACK机制、死信队列、分布式事务消息解决。

    • 坑点:只保证“至少一次”还是“恰好一次”。

    • 记忆法:全链路记忆(产-存-消,对应三个环节的可靠性)。

五、 Elasticsearch

  • 1. 分词原理

    • 考点:Analyzer(Char Filter, Tokenizer, Token Filter)。中文分词器(IK)。

    • 坑点:分词器不一致导致搜索不到(写入和查询需使用同一分词器)。

  • 2. 倒排索引

    • 考点:Term Dictionary, Term Index, Posting List。

    • 解析:从“文档->词”变为“词->文档”的映射,实现极速检索。

    • 记忆法:查字典法(根据字找页码,而不是一页页翻)。

六、 向量数据库

  • 1. 概念和作用

    • 考点:存储和检索高维向量,用于相似度计算。

    • 解析:RAG架构的核心组件,解决大模型幻觉和私有数据问题。

  • 2. 实现算法

    • 考点:ANN(近似最近邻搜索),如HNSW、IVF。

    • 记忆法:近似记忆(不求最准,但求最快,算个大概就行)。

七、 New SQL

  • 1. 概念和特点

    • 考点:结合了关系型数据库的ACID和非关系型的可扩展性(如TiDB)。

  • 2. 一致性方案

    • 考点:Raft/Paxos协议,分布式事务(2PC/3PC)。

八、 数据流图

  • 1. 画图方法

    • 考点:数据流图(DFD)的四大元素(外部实体、处理、数据存储、数据流)及平衡原则。

    • 坑点:父图与子图不平衡(输入输出不匹配),黑洞/奇迹(有进无出/有出无进)。

    • 记忆法:找茬法(检查输入输出数量是否守恒)。

九、 UML

  • 1. 各种图概念

    • 考点:用例图、类图、时序图、活动图、状态图、部署图的区别。

    • 坑点:混淆时序图(强调时间顺序)和活动图(强调业务流程)。

    • 记忆法:分类记忆(结构图 vs 行为图)。

十、 领域驱动 (DDD)

  • 1. 概念

    • 考点:核心域、支撑域、通用域;限界上下文;聚合根。

    • 坑点:把贫血模型当作充血模型。

  • 2. 表现层技术、各种技术对比和使用场景

    • 考点:前后端分离、SSR、CSR。

  • 3. 数据访问层技术、各种技术对比和使用场景

    • 考点:ORM(MyBatis/Hibernate)、JPA对比。

十一、 云原生架构

  • 1. 各种架构特点和对比

    • 考点:微服务、Serverless、Service Mesh。

  • 2. 容器技术-docker

    • 考点:镜像、容器、仓库;隔离机制(Namespace, Cgroups)。

    • 记忆法:集装箱记忆(标准化打包,随处运行)。

  • 3. 容器技术-k8s

    • 考点:Pod、Deployment、Service、Ingress;核心组件(API Server, etcd, Scheduler)。

    • 坑点:Pod是最小调度单位,而不是容器。

十二、 微服务与SOA

  • 1. 微服务与SOA对比

    • 考点:微服务去中心化、独立部署;SOA强调企业总线(ESB)、粗粒度。

    • 记忆法:大小对比(SOA大而全,微服务小而精)。

  • 2. Restful架构

    • 考点:资源导向,GET/POST/PUT/DELETE,状态码。

    • 坑点:无状态性(Stateless)。

  • 3. 服务注册模式

    • 考点:注册中心(Nacos, Eureka, Zookeeper),服务发现机制(客户端/服务端发现)。

十三、 信息安全

  • 1. 对称加密方法

    • 考点:AES、DES。速度快,适合大量数据。

    • 坑点:密钥分发困难。

  • 2. 非对称加密方法

    • 考点:RSA、ECC。公钥加密,私钥解密(或相反)。适合数字签名。

    • 记忆法:对比记忆(对称=快,非对称=安全)。

十四、 大数据架构

  • 1. Lambda架构图

    • 考点:批处理层、速度处理层、服务层。

    • 解析:兼顾实时和离线,但代码维护复杂(需维护两套代码)。

  • 2. Lambda架构实现方法

    • 考点:Hadoop + Spark + Storm/Flink。

  • 3. Kappa架构图

    • 考点:只保留流处理,通过消息队列(如Kafka)重放数据。

    • 解析:架构简化,一套代码。

  • 4. Kappa架构实现方法

    • 考点:Kafka + Flink。

    • 记忆法:希腊字母记忆(Λ像分叉,批流分离;K像一条直线,纯流处理)。

十五、 分布式系统

  • 1. 一致性方法对比

    • 考点:强一致性、弱一致性、最终一致性。2PC/3PC、TCC、Saga、本地消息表。

    • 坑点:分布式事务无法做到绝对的强一致性(受限于CAP)。

  • 2. 分片方案

    • 考点:哈希分片、范围分片、一致性哈希。

    • 解析:解决单机容量和性能瓶颈。

十六、 数据库

  • 1. 分区方案

    • 考点:垂直分库/分表、水平分库/分表。

    • 坑点:水平分表后跨库JOIN和分布式ID问题。

    • 记忆法:切蛋糕法(垂直按列切,水平按行切)。

  • 2. 高可用模式

    • 考点:主从复制、双主(MHA)、MGR(MySQL Group Replication)。

    • 坑点:主从延迟(读写分离导致的数据不一致)。

十七、 AI大模型相关

  • 1. RAG、向量化

    • 考点:检索增强生成(Retrieval-Augmented Generation)。文档切片->向量化->召回->拼接Prompt。

    • 解析:解决大模型知识更新慢和幻觉。

    • 记忆法:开卷考试记忆(大模型是考生,向量库是参考书)。

  • 2. MCP工作流

    • 考点:Model Context Protocol(模型上下文协议),标准化大模型与外部工具的交互。

  • 3. AGENT流程和技术

    • 考点:规划(Planning)、记忆(Memory)、工具使用(Tools)。

    • 解析:大模型从“聊天”走向“做事”。

  • 4. MLOps与LLMOps对比

    • 考点:传统机器学习运维 vs 大模型运维(重点在于提示词工程、微调、评估)。

  • 5. Prompt 优化(提示词工程)

    • 考点:Few-shot(少样本)、CoT(思维链)、角色扮演。

    • 记忆法:面试法(给背景+给例子+定角色+分步骤)。

十八、 架构图技术

  • 1. 架构图涉及到所有技术名词

    • 考点:4+1视图(逻辑、开发、进程、物理、场景)。架构图的规范画法。

LICENSED UNDER CC BY-NC-SA 4.0
Comment