跳转至

本文件是专业课速记原文迁移的审计基准,按源文件顺序完整保留十份原文;新增的一级标题仅用于分隔源文件,原文不压缩、不删减、不改写。

00_复习总览.md

中国银行信息科技岗位笔试 · 复习总览

适用:临考冲刺复习,按模块分册。

一、复习优先级

  1. 数据库与 SQL
  2. 计算机网络
  3. 操作系统与并发
  4. 数据结构与算法
  5. 软件工程、系统架构与项目管理
  6. 信息安全及信息科技风险管理
  7. 云计算、大数据、人工智能基础

优先掌握"概念辨析 + 高频计算 + 场景判断"。

二、分册目录

分册 文件
数据库与 SQL 01_数据库与SQL.md
计算机网络 02_计算机网络.md
操作系统与并发 03_操作系统与并发.md
数据结构与算法 04_数据结构与算法.md
软件工程与系统架构 05_软件工程与系统架构.md
信息安全 06_信息安全.md
银行信息科技风险管理 07_银行信息科技风险管理.md
云计算、大数据、人工智能 08_云计算大数据AI.md
考前必背清单 09_考前必背清单.md

三、资料核对说明

  • 工作区中的《考试大纲》实际为"金融监管计算机类"大纲,与信息科技岗专业范围高度相关。
  • 现有练习题主要为英语、行测和综合金融知识,未形成完整的信息科技专业题库。
  • 各分册知识点解释为通用计算机知识补充(🟡 AI 补充,可能与你老师讲的不完全一致),专业范围以大纲为准。

01_数据库与SQL.md

数据库与 SQL

1. 实际场景:银行转账

假设账户 A 给账户 B 转账 1,000 元:

  1. 从账户 A 扣除 1,000 元。
  2. 给账户 B 增加 1,000 元。
  3. 两步都成功后提交;任何一步失败就全部撤销。

这说明数据库概念不是孤立定义,而是用来保证银行交易不出错。

  • 原子性:扣款和入账必须一起成功或一起失败,不能只扣款不入账。
  • 一致性:转账前后金额关系正确,A 少 1,000,B 多 1,000,总金额不凭空增加或减少。
  • 隔离性:多笔转账同时进行时,彼此不能读取不完整的中间状态。
  • 持久性:系统显示转账成功后,即使服务重启,交易结果也不能消失。

典型处理逻辑:

BEGIN;

UPDATE account
SET balance = balance - 1000
WHERE account_id = 'A001';

UPDATE account
SET balance = balance + 1000
WHERE account_id = 'A002';

COMMIT;

中途失败时执行 ROLLBACK,保证扣款和入账不会只成功一半。

2. 事务 ACID

  • Atomicity,原子性:事务要么全部成功,要么全部失败。
  • Consistency,一致性:事务执行前后,数据库从一个合法状态变成另一个合法状态。
  • Isolation,隔离性:多个事务并发执行时,彼此不能看到不该看到的中间状态。
  • Durability,持久性:提交后的修改永久保存。

3. 四种隔离级别(场景:并发读写产生错账)

场景:账户 A 有 1,000 元,同时有两个转账请求各转 800 元。如果两个请求都先读到"余额 1,000",再各自扣款,就可能超额转出。数据库通过锁和隔离机制控制这类并发问题。

隔离级别 脏读 不可重复读 幻读
Read Uncommitted 可能 可能 可能
Read Committed 避免 可能 可能
Repeatable Read 避免 避免 一般仍可能
Serializable 避免 避免 避免

三种并发异常的场景理解:

  • 脏读:读到另一笔尚未提交的修改。对方最后回滚了,你却依据这笔"临时数据"做了决策。
  • 不可重复读:同一事务两次读取账户余额,期间别的事务修改并提交了,两次结果不同。
  • 幻读:同一事务两次查询"余额低于 100 元的账户",两次查到的账户数量不同,通常是中间有记录被新增或修改到查询范围内。

强弱顺序:Read Uncommitted 最弱 → Read Committed → Repeatable Read → Serializable 最强。隔离越强,一致性保护越强,但并发性能通常越受影响。

4. 锁与死锁(场景:给账户记录加"使用权限")

  • 共享锁 S 锁像"允许多人同时查看":多个事务可以同时读。
  • 排他锁 X 锁像"正在修改,请暂时别动":写入时阻止其他冲突读写。

转账扣款常见做法是先锁住账户记录,再检查余额和扣款,避免两个事务同时根据旧余额做决定。

  • 两阶段锁协议:事务先加锁,释放锁后不能再加锁。

死锁场景:事务 1 锁住账户 A、等待账户 B;事务 2 锁住账户 B、等待账户 A。双方互相等待对方释放锁,就卡住了。死锁成立的四个必要条件:

  1. 互斥
  2. 请求并保持
  3. 不可剥夺
  4. 循环等待

银行场景:转账必须放在同一个事务中,否则可能出现扣款成功但入账失败。

5. 事务日志(Redo / Undo 与 WAL)

事务日志是数据库自动维护的"操作流水账",记录事务对数据的修改操作,是实现原子性和持久性的底层机制。

为什么只记修改:故障恢复时,数据库只需重做(redo)已提交的修改、撤销(undo)未提交的修改,保证不丢数据、不留半成品;查询不改动数据,恢复时无需重放。

两类日志:

日志 记录内容 用途 保障
重做日志 Redo Log "做了什么修改"(修改后的值) 宕机重启后重放已提交事务 持久性
回滚日志 Undo Log "如何撤销修改"(修改前的值/反向操作) 事务回滚、MVCC 读旧版本 原子性

先写日志原则(WAL,Write-Ahead Logging):修改数据前必须先把对应日志写入并落盘,再修改数据页。若先改数据后写日志,日志尚未落盘就宕机,数据库就无法知道要恢复什么。

检查点(Checkpoint):定期把内存中的脏页批量刷盘,并推进日志位置,缩短宕机后的恢复时间。

银行场景:转账执行到扣款后、入账前断电。重启时数据库根据日志自动处理——已提交的事务重做(redo),未提交的事务回滚(undo),资金既不会丢,也不会停在"只扣款未入账"的中间状态。

查询操作有没有类似的日志?(易混点)

SELECT 不写入事务日志——事务日志为故障恢复和回滚服务,只关心"数据被改成了什么样"。但查询行为并非无迹可寻,数据库另有几类日志,用途完全不同:

日志 记录内容 主要用途 银行场景
审计日志 谁在何时执行了什么 SQL(含 SELECT) 合规、追责、防内部泄密 监管要求"查客户信息必留痕",员工偷看客户资料可追溯
通用查询日志 所有 SQL 语句(默认关闭) 调试 开销大,生产环境慎用
慢查询日志 执行时间超过阈值的查询 性能调优 定位"查账户列表特别慢"之类的 SQL

速记:事务日志为恢复而生(只记修改),审计日志为合规而生(查询也留痕)。两类日志互不替代:前者保数据不丢不错,后者保行为可追溯。

6. 数据管理三阶段

人工管理阶段 → 文件系统阶段 → 数据库系统阶段

一句话速记:人工管理"人管数据";文件系统"程序管文件";数据库系统"数据库管理系统统一管数据"。

人工管理阶段(纸质账本时代):

  • 数据由人工记录和管理,与业务程序无明确分离。
  • 容易重复、丢失和出错;查询修改效率低;多人难以共享。
  • 例:客户改手机号需在多个账本分别修改,漏改则不一致。

文件系统阶段(customer.txt、account.txt 等分散文件):

  • 数据以文件保存,由各应用程序分别管理,效率提高但:
  • 数据冗余:客户信息同时存在储蓄、信用卡、贷款系统,改一处漏其他。
  • 数据不一致:同一客户不同系统中手机号不同。
  • 程序与数据耦合强:文件格式一变,所有读它的程序都可能要改。

数据库系统阶段(DBMS 统一管理):

  • 数据集中统一管理,共享性强、冗余可控、一致性好。
  • 支持并发访问、事务、故障恢复、权限控制,可用 SQL 灵活查询。
  • 数据独立性(重要特征):
  • 物理独立性:修改存储方式不影响应用程序。
  • 逻辑独立性:修改逻辑结构不影响应用程序。
对比维度 人工管理 文件系统 数据库系统
数据载体 纸质账本 计算机文件 数据库
数据共享 很弱 较弱 强
数据冗余 高 较高 可控制
数据独立性 没有 较低 较高
并发控制 基本没有 较弱 完善
故障恢复 依靠人工 较弱 日志、备份、恢复

核心考点:文件系统阶段的主要问题是数据冗余、不一致、共享困难、程序与数据耦合;数据库系统阶段的核心优势是共享性高、独立性高、冗余小、统一管理控制。

7. 三级模式与两级映像

数据库体系结构 = 三级模式 + 两级映像,这是"数据独立性"的理论基础。

三级模式(从外到内):

模式 又称 含义 银行例子
外模式 用户视图、子模式 单个用户/应用看到的数据结构 柜员只看到账号、户名、余额
模式 逻辑模式、概念模式 数据库整体逻辑结构(全库的表和联系) 客户表、账户表、交易表及其联系
内模式 存储模式、物理模式 数据实际存储方式(文件组织、索引、压缩) 客户表按 B+ 树聚簇存储

一个数据库只有一个模式、一个内模式,但可以有多个外模式。

两级映像:

  • 外模式/模式映像:模式改变(如加字段、改表结构)时,只需修改映像,外模式保持不变,应用程序不用改 → 保证逻辑数据独立性。
  • 模式/内模式映像:内模式改变(如换存储结构、加索引)时,只需修改映像,模式保持不变 → 保证物理数据独立性。

场景例:客户表增加"身份证号"字段(模式变化),柜员视图仍只暴露账号和余额(外模式不变),柜员端程序无需修改——这就是外模式/模式映像在"吸收变化"。

速记:映像负责吸收变化,改动被限制在 DBMS 内部,不波及应用程序。

8. 码:候选码与外码(外键)

候选码:在一张表里,能唯一确定一条记录,而且已经"精简到不能再删字段"的字段组合。

判断分两步:

  1. 这个字段或字段组合能否唯一确定一行?
  2. 是否最小?去掉其中任意一个字段后,都不能再唯一确定一行?

同时满足才是候选码。

示例(账户表):

客户号 账号 客户姓名 手机号
C101 A001 林晓 138…
C101 A002 林晓 138…
  • 假设每个账号全局唯一,则 {账号} 是候选码。
  • {客户号, 账号} 也能唯一标识记录,但客户号是多余的(去掉后账号仍唯一),因此不是候选码。

相关概念辨析:

  • 超码:能唯一标识一行即可,不要求最小。例:{账号, 客户姓名} 是超码但不是候选码。
  • 候选码:最小超码,一个表可能有多个。
  • 主码(主键):从候选码中选定的主要标识。
  • 主属性:至少属于一个候选码的属性。
  • 非主属性:不属于任何候选码的属性。

例:客户表中"客户号"和"身份证号"都能独立唯一标识客户,则二者都是候选码;设计时可选客户号作主键,身份证号作唯一键。

速记:候选码 = 能唯一标识记录的最小字段集;主键 = 选定的候选码。

外码(外键,Foreign Key)

定义:外码是本表中引用另一张表主码(或候选码)的字段或字段组合。设 F 是关系 R 中的属性(组),若 F 与关系 S 的主码相对应,则 F 是 R 的外码;R 称为参照关系,S 称为被参照关系。

判断要点:

  1. 外码是"站在本表角度"对别的表主码的引用,方向是"我引用你"。
  2. 外码的取值:要么为空(若允许 NULL),要么必须等于被参照表中已存在的主码值——这正是参照完整性。
  3. 外码在自身表中不要求是候选码;一张表可以有多个外码。

银行例子:

表 字段 角色
customer(客户表) customer_id 主码
account(账户表) account_id 主码
account(账户表) customer_id 外码,引用 customer.customer_id
  • account 是参照关系,customer 是被参照关系。
  • 账户表的 customer_id 必须指向真实存在的客户,不能出现"未注册客户名下的账户"。
  • 客户注销(删除被参照记录)时若账户仍在,将违反参照完整性,数据库默认 RESTRICT 拒绝(详见第 11 节完整性约束)。

外码可以是自身主码的一部分:m:n 联系转换出的持有表 holding(account_id, product_id, share),主码是 (account_id, product_id),其中 account_id 是账户表的外码、product_id 是产品表的外码——组合主码的每个成员同时是外码,这在多对多联系表中很常见。

码家族对比(高频选择题):

概念 一句话 关键特征
超码 能唯一标识一行即可 唯一,不要求最小
候选码 最小的超码 唯一 + 最小
主码 从候选码中选定的标识 唯一 + 非空(实体完整性)
外码 引用别的表的主码 值为空或存在于被参照表(参照完整性)

速记:主码标识"自己这一行",外码指向"别人表的行";主码管唯一,外码管引用。

9. E-R 模型转换关系模式

E-R 模型三要素:实体(矩形)、属性(椭圆)、联系(菱形),联系两端标注 1:1、1:n、m:n。

转换规则:

  1. 每个实体 → 一个关系模式;实体的属性 → 关系的属性;实体的码 → 关系的主键。
  2. 1:1 联系:可与任意一端实体合并(在合并端加入另一端的主键作外键);也可独立成表。
  3. 1:n 联系:合并到 n 端(n 端加入 1 端的主键作外键);也可独立成表(主键取 n 端的主键)。
  4. m:n 联系:必须独立成关系模式,其主键 = 两端实体主键的组合,联系自身的属性(如份额、数量)也放入该表。

银行例子:

  • 客户(1:n)账户:一个客户多个账户 → 账户表加 customer_id 外键,不必单独建表。
  • 账户(m:n)理财产品:一个账户可买多只产品,一只产品被多个账户持有 → 必须单独建持有表:
holding(account_id, product_id, share)
主键:(account_id, product_id)

考试易错点:

  • m:n 联系不能并入任何一端实体,必须单独建表,组合主键。
  • 1:n 联系应并入 n 端(多端),不要错并入 1 端。
  • 联系本身的属性(如"持有份额")跟随联系走,不留在实体表里。

10. 范式(场景:客户信息重复、更新不一致)

场景:一张大表每笔交易都重复保存客户姓名、手机号、账户号。客户换手机号时要改很多行,漏改一行就出现同一客户有多个手机号。

规范化做法是把不同实体拆开:

  • 客户表:客户编号、姓名、手机号
  • 账户表:账号、客户编号、余额
  • 交易表:交易编号、转出账号、转入账号、金额、时间

定义与判断(需先明确候选码和函数依赖):

  • 1NF:字段不可再分,保证原子性。
  • 2NF:满足 1NF,且非主属性完全依赖于主键(消除部分函数依赖:非主属性只依赖复合候选码的一部分)。
  • 3NF:满足 2NF,且不存在非主属性对主键的传递依赖(非主属性经由另一个非主属性依赖候选码)。

1NF 案例:字段不可再分

反例:

客户号 姓名 联系方式
C101 林晓 手机:138…, 邮箱:lin@x.com

"联系方式"一列塞进了手机和邮箱两个信息,无法直接按手机号查询或建索引 → 违反 1NF。

1NF 修正:拆成 phone、email 两列。判断口诀:每个格子只装一个值。

2NF 案例:消除部分函数依赖

储蓄业务表 deposit(客户号, 账号, 客户姓名, 余额, 开户网点),复合主码 = (客户号, 账号):

客户号 账号 客户姓名 余额 开户网点
C101 A001 林晓 5000 网点1
C101 A002 林晓 3000 网点2
C102 A003 周芸 8000 网点1

依赖分析:

  • 客户姓名只依赖客户号(复合主码的一半)→ 部分依赖。
  • 余额、开户网点只依赖账号(复合主码的另一半)→ 部分依赖。

带来的异常:

  • 插入异常:新客户尚未开户,姓名无处保存。
  • 删除异常:C102 销掉唯一业务后姓名丢失。
  • 更新异常:林晓改名要改两行,漏改即不一致。

2NF 修正:按"谁依赖谁"拆表——客户表(客户号, 姓名)、账户表(账号, 余额, 开户网点)、业务表(客户号, 账号)。

3NF 案例:消除传递依赖

账户表问题版 account(账号, 余额, 网点编号, 网点名称, 网点电话),主码 = 账号:

账号 余额 网点编号 网点名称 网点电话
A001 5000 B01 朝阳支行 010-…
A002 3000 B02 海淀支行 010-…
A003 8000 B01 朝阳支行 010-…

依赖分析:网点名称、网点电话依赖网点编号,而网点编号依赖账号 → 网点名称、网点电话传递依赖账号。

带来的异常:朝阳支行换电话,要更新该网点下所有账户的行,漏改即不一致。

3NF 修正:account(账号, 余额, 网点编号) + branch(网点编号, 网点名称, 网点电话)。

判断流程速记

  1. 每个字段不可再分?→ 满足 1NF(原子性)。
  2. 非主属性完全依赖候选码(没有只依赖复合码一半的)?→ 满足 2NF(消部分依赖)。
  3. 非主属性直接依赖候选码(没有绕道其他非主属性的)?→ 满足 3NF(消传递依赖)。

一句话口诀:1NF 装一个值,2NF 别只靠半个码,3NF 别绕道。注意 2NF 的部分依赖只出现在复合主码场景——单属性主码的表自动满足 2NF。

  • 范式越高,数据冗余通常越低,但查询连接可能变多。
  • 反规范化:在读性能确实重要时,有控制地保存冗余数据,换取更快查询。

11. 完整性约束

11.1 定义与作用

完整性约束(Integrity Constraint):数据库中用于规定数据必须满足的正确性、有效性和一致性规则。数据库管理系统会在插入、修改、删除数据时自动检查这些规则;若违反约束,通常拒绝操作,防止“脏数据”进入数据库。

银行场景:账户余额不能为负、账户号不能重复、交易记录不能指向不存在的客户,这些都是完整性约束要保证的数据规则。

11.2 三类经典完整性约束

类型 管什么 规则 银行例子
实体完整性 主键 主键值唯一且非空,每行都能被唯一识别 账户表 account_id 不能重复、不能为空
参照完整性 外键 外键值必须为空(允许 NULL 时),或引用被参照表中已存在的候选码/主码 交易表的 customer_id 必须真实存在于客户表
用户定义完整性 具体业务规则 由业务需求定义,如取值范围、格式、默认值、唯一性等 balance >= 0;交易金额 > 0;手机号格式合法

11.3 “主键不属于完整性约束吗?”

要区分主键和主键约束:

  • 主键(Primary Key)本身是关系模型中的一种码,用于唯一标识一行记录,不是“约束类别”名称。
  • 主键约束(PRIMARY KEY constraint)是数据库实施实体完整性的一种约束,要求主键唯一且非空。
  • 因此,若题目问“主键属于哪类完整性约束”,答案是:实体完整性;若问“主键是不是一种码”,答案是:主键是从候选码中选定的码。
1
2
3
4
CREATE TABLE account (
    account_id VARCHAR(20) PRIMARY KEY, -- 同时体现主键定义和实体完整性约束
    balance DECIMAL(18, 2) CHECK (balance >= 0)
);

11.4 还有哪些完整性约束?

考试教材通常重点考“三类经典约束”,但在 SQL 实现中还会看到以下具体约束。它们不是与三类并列的新大类,通常归入用户定义完整性或作为实现手段:

SQL 约束 作用 常见归类 示例
PRIMARY KEY 唯一标识记录,非空且唯一 实体完整性 account_id PRIMARY KEY
FOREIGN KEY 保证表间引用有效 参照完整性 customer_id REFERENCES customer(customer_id)
UNIQUE 限制列或列组合不能重复 用户定义完整性 身份证号、手机号唯一
NOT NULL 不允许缺失值 用户定义完整性/域约束 客户姓名不能为空
CHECK 限制取值范围或业务条件 用户定义完整性/域约束 amount > 0
DEFAULT 未提供值时自动填入默认值 用户定义完整性 账户状态默认“正常”

从数据库理论看,有些教材还会把以下内容单独强调:

  • 域完整性(Domain Integrity):属性值必须来自规定的合法域,例如金额必须是数值、交易金额大于 0、状态只能取“正常/冻结/注销”。不少教材把它归入用户定义完整性。
  • 断言(Assertion):对跨表、全局业务条件进行约束,例如“所有账户余额之和不能小于 0”。这是 SQL 标准中的概念,但实际数据库产品支持情况和考试要求可能不同。
  • 语义完整性/业务完整性:由业务规则表达,例如未成年人不能开通某类产品、已注销账户不能发起交易,通常通过 CHECK、触发器、存储过程或应用程序实现。

注意:权限控制、审计日志、事务隔离性主要解决“谁能访问、行为能否追溯、并发是否互相干扰”,不属于完整性约束本身。

11.5 易混点

  1. 主键不是完整性约束类别,但主键约束属于实体完整性。
  2. 唯一性不等于主键:UNIQUE 列通常允许 NULL(具体行为依数据库而异),主键不允许 NULL 且每张表通常只能定义一个主键。
  3. 外键不一定唯一:多个交易可以引用同一个客户;外键主要保证“引用对象存在”。
  4. 外键为 NULL 不等于引用错误:若业务允许空值,NULL 表示暂未建立引用关系;若列声明 NOT NULL,才禁止为空。
  5. CHECK 约束通常只能直接检查当前行条件;跨行、跨表的复杂规则常需断言、触发器或业务代码。
  6. 完整性约束与安全控制不同:约束保证数据合法,权限控制保证用户有权操作,二者不能混为一谈。

11.6 参照完整性动作

违反参照完整性时的处理(删除/更新被参照记录时):

  • RESTRICT / NO ACTION:拒绝执行(常见默认行为)。
  • CASCADE:级联删除或更新关联记录。
  • SET NULL:把引用端外键置空(外键列需允许 NULL)。

场景例:客户注销时,若仍有账户或交易记录,默认 RESTRICT 会拒绝删除,避免交易记录失去关联。

速记:实体管主键,参照管外键,用户定义管业务;主键是码,主键约束才是约束。

12. 视图(VIEW)

定义:视图是基于基表的查询定义的虚表。数据库只存视图的定义(SQL 语句),不存实际数据;查询视图时实时从基表取数。

优点:

  1. 简化查询:把复杂 JOIN、聚合封装成一个简单的视图名,业务方直接 SELECT * FROM v_customer_balance。
  2. 安全控制:只暴露部分行、列。柜员视图只含账号、户名、余额,隐藏身份证号、风险评级等敏感字段;不同岗位绑定不同视图,实现"按角色看数据"。
  3. 逻辑独立性:基表结构变化时修改视图定义,应用程序仍照常查询视图,无需改动。

限制与易考点:

  • 视图是虚表,本身不存储数据。
  • 含聚合函数、GROUP BY、DISTINCT 或多表 JOIN 的视图不能直接 INSERT/UPDATE/DELETE;只有映射单个基表、直接对应行列子集的简单视图才可更新。
  • DROP VIEW 只删除视图定义,不影响基表数据。
1
2
3
4
-- 柜员视图:只暴露必要字段
CREATE VIEW v_teller_account AS
SELECT account_id, customer_name, balance
FROM account;

13. 索引(场景:像账户目录,帮助快速定位记录)

索引既是逻辑对象,也是物理存储结构

逻辑上,索引是数据库中的一种辅助访问对象:用户通过 CREATE INDEX 指定在哪些列上建立索引,查询优化器可以选择利用它加快检索。

物理上,索引会真实存储在磁盘或 SSD 中,通常组织为 B+ 树节点、哈希桶、索引页,以及指向数据记录的键值或指针。因此索引会占用存储空间。

1
2
3
逻辑层面:CREATE INDEX idx_account_customer ON account(customer_id)
物理层面:数据库实际维护 B+ 树/哈希结构和索引页
应用层面:应用只写查询 SQL,不必知道索引如何存储

这体现了物理数据独立性:底层改变索引结构或存储方式时,应用通常仍使用相同的 SQL。

场景:没有索引时,查一个账号可能要逐行扫描整张表;有索引时,先通过索引定位,再读取对应记录。

  • B+ 树索引像按顺序整理的目录,适合查单个值,也适合范围查询,例如"查询本月交易"。
  • 哈希索引像按键直接找位置,适合精确匹配账号,但不适合按日期范围查找。
  • 联合索引最左匹配:建了 (customer_id, create_time) 索引,按 customer_id 或 customer_id + create_time 查询通常能利用它;只按 create_time 查询则不一定。
  • 索引不是越多越好:交易表每新增一个索引,插入和更新时也要维护它,写入会变慢。
  • 对索引字段做函数处理,可能让数据库难以直接使用索引。
1
2
3
4
5
6
-- 可能导致索引失效
WHERE YEAR(create_time) = 2026

-- 通常更适合使用索引
WHERE create_time >= '2026-01-01'
  AND create_time < '2027-01-01'

14. SQL 高频点(场景:统计客户月交易总额)

场景:统计每个客户本月交易总额,只看总额超过 10,000 元的客户。

1
2
3
4
5
6
SELECT customer_id, SUM(amount) AS total_amount
FROM transactions
WHERE create_time >= '2026-10-01'
  AND create_time < '2026-11-01'
GROUP BY customer_id
HAVING SUM(amount) > 10000;

执行顺序理解:

  1. WHERE:先筛出本月交易(分组前过滤行)。
  2. GROUP BY:按客户分组。
  3. SUM:计算每位客户的交易总额。
  4. HAVING:筛选汇总后总额超过 10,000 的客户(分组后过滤组)。

速记:WHERE 筛行,HAVING 筛组。 WHERE 不能直接使用聚合结果,聚合条件放在 HAVING。

其他易考点:

  • COUNT(*) 统计行数。
  • COUNT(phone) 不统计 phone 为 NULL 的行。
  • INNER JOIN:只保留两表能匹配上的记录。
  • LEFT JOIN:保留左表全部记录;右表没有匹配时,右表字段为 NULL。

连接运算辨析:等值连接与自然连接

这两个是关系代数(关系运算)的概念,与 SQL 语法一一呼应:SELECT ↔ 投影 π,WHERE ↔ 选择 σ,JOIN ↔ 连接,CROSS JOIN ↔ 笛卡尔积。

连接的定义:从两个关系的笛卡尔积中选取满足条件的元组。按条件分类:

  • θ 连接:满足任意比较条件(>、<、= 等)的一般连接。
  • 等值连接(Equi-Join):θ 为 = 的连接,按指定列的值相等来连接。连接列不要求同名,结果保留两表全部列——连接列会出现两次。
  • 自然连接(Natural Join):特殊的等值连接——在所有同名列上自动做相等比较,并去掉重复的连接列,结果中每个同名列只出现一次。
维度 等值连接 自然连接
连接条件 显式指定(任意列相等) 所有同名列自动相等
列名要求 不要求同名 必须同名
连接列在结果中 出现两次 只出现一次
SQL 写法 JOIN ... ON c.id = a.id NATURAL JOIN

银行例子:customer(customer_id, name) 与 account(account_id, customer_id, balance)

1
2
3
4
5
6
7
-- 等值连接:customer_id 出现两次
SELECT * FROM customer c
JOIN account a ON c.customer_id = a.customer_id;

-- 自然连接:在同名列 customer_id 上连接,该列只出现一次
SELECT * FROM customer
NATURAL JOIN account;

易错点:

  1. 自然连接自动匹配同名列——若两表有多个同名列会全部参与比较,易出事故,生产环境慎用 NATURAL JOIN,写显式 ON 更安全。
  2. 自然连接属于内连接:无匹配的行被丢弃;要保留无匹配行需用外连接(LEFT/RIGHT JOIN)。
  3. 笛卡尔积(CROSS JOIN)是无连接条件的运算,行数 = 两表行数相乘,业务上通常是事故。

15. 场景自测题

题 1:银行转账时,账户 A 扣款成功后,给账户 B 入账失败。正确处理方式是什么?

  • A. 保留扣款,稍后再处理
  • B. 回滚本次事务,撤销扣款
  • C. 忽略入账失败
  • D. 只记录错误日志

正确答案:B。这是事务原子性:扣款与入账必须作为一个整体成功或失败。

题 2:设计"账户-理财产品"表,一个账户可买多只产品、一只产品可被多个账户持有,应如何建表?

  • A. 在账户表加 product_id 字段
  • B. 在产品表加 account_id 字段
  • C. 单独建持有表,主键为 (account_id, product_id)
  • D. 不需要记录持有关系

正确答案:C。m:n 联系必须独立成关系模式,组合主键;A、B 都无法表达多对多。

题 3:银行系统把客户表拆分存储结构后,柜员端程序无需修改,这体现了哪一级映像保证的哪种独立性?

正确答案:模式/内模式映像,保证物理数据独立性。若修改的是表逻辑结构(如加字段)而外模式不变,则是外模式/模式映像,保证逻辑数据独立性。

题 4:转账事务提交后服务器立即断电,重启后该笔转账数据完好。最直接的原因是什么?

  • A. 数据页在提交前已全部刷盘
  • B. 重做日志在提交时已先落盘,重启后据此重放
  • C. 回滚日志记录了撤销操作
  • D. 通用查询日志保存了该 SQL

正确答案:B。WAL 要求日志先于数据落盘,redo log 保证持久性。A 不可靠——脏页通常延后刷盘;C 的 undo 用于回滚未提交事务;D 与故障恢复无关。

题 5:customer(customer_id, name) 与 account(account_id, customer_id, balance) 执行自然连接后,结果表的属性列是什么?

  • A. customer_id, name, account_id, customer_id, balance
  • B. customer_id, name, account_id, balance
  • C. name, account_id, balance
  • D. customer_id, name, balance

正确答案:B。自然连接去掉重复连接列,customer_id 只出现一次;A 是等值连接的结果。


🟡 本分册解释为通用计算机知识补充,可能与你老师讲的不完全一致;专业范围以《考试大纲》"金融监管计算机类"部分为准。

02_计算机网络.md

计算机网络

1. OSI 七层

  1. 物理层
  2. 数据链路层
  3. 网络层
  4. 传输层
  5. 会话层
  6. 表示层
  7. 应用层
协议 所属层次 作用
HTTP/HTTPS 应用层 Web 通信
DNS 应用层 域名解析
FTP 应用层 文件传输
TCP/UDP 传输层 端到端传输
IP 网络层 寻址与路由
ARP 网络层附近 IP 找 MAC
ICMP 网络层 差错报告与连通性诊断(ping)
Ethernet 数据链路层 局域网帧传输

2. TCP 与 UDP

TCP:

  • 面向连接。
  • 可靠、有序、无重复。
  • 有流量控制和拥塞控制。
  • 适合银行交易、文件传输、网页请求。

UDP:

  • 无连接。
  • 不保证可靠性和顺序。
  • 开销小、速度快。
  • 适合直播、实时音视频、DNS 等场景。

3. TCP 三次握手

  1. 客户端发送 SYN。
  2. 服务端回复 SYN + ACK。
  3. 客户端回复 ACK。

作用:确认双方发送和接收能力正常,避免历史连接请求造成误建立。

4. TCP 四次挥手

  1. 主动关闭方发送 FIN。
  2. 对方回复 ACK。
  3. 对方处理完数据后发送 FIN。
  4. 主动关闭方回复 ACK。

TIME_WAIT 的作用:

  • 保证最后 ACK 能够到达。
  • 等待旧连接中的报文在网络中过期。

5. IP 与子网

IPv4 地址长度为 32 位。

  • /24:255.255.255.0,可用主机地址通常为 254 个。
  • /26:255.255.255.192,每个子网 64 个地址,通常可用主机地址 62 个。
  • /30:常用于点到点链路,通常可用主机地址 2 个。
可用主机数 = 2^(主机位数) - 2

子网划分与广播地址计算(高频计算题)

三种特殊地址(看主机位的二进制):

  • 网络地址:主机位全 0 → 标识网段本身,不能分给主机。
  • 广播地址:主机位全 1 → 发给它 = 向本网段所有主机广播,不能分给主机。
  • 可用主机地址:两者之间的地址。

四步解题法:

  1. 定主机位:主机位 = 32 − 前缀长度。
  2. 算块大小:块大小 = 2^主机位,即每个子网包含的地址总数。
  3. 找网段起点:从 0 开始按块大小跳(0, 16, 32, …),看 IP 落入哪个区间,区间起点就是网络地址。
  4. 算广播地址:广播地址 = 网络地址 + 块大小 − 1(即主机位全 1)。

例题(易错真题):主机 IP 为 192.168.1.100/28,求该网络的广播地址。

步骤 计算 结果
1. 主机位 32 − 28 4 位
2. 块大小 2⁴ = 16 掩码 255.255.255.240
3. 找网段 96 ≤ 100 < 112 网段 192.168.1.96/28
4. 广播地址 96 + 16 − 1 192.168.1.111

该网段全貌:网络地址 192.168.1.96(主机位全 0)→ 可用主机 97 ~ 110 → 广播地址 192.168.1.111(主机位全 1)。

易错点:把 /28 当成 /24 算,直接选 192.168.1.255——255 是 /24 网段的广播地址,不是 /28 的。前缀给到多少位就按多少位算,别套默认类别的边界。

常用前缀块大小速查:

前缀 掩码 块大小 可用主机
/25 255.255.255.128 128 126
/26 255.255.255.192 64 62
/27 255.255.255.224 32 30
/28 255.255.255.240 16 14
/29 255.255.255.248 8 6
/30 255.255.255.252 4 2

6. HTTP 与 HTTPS

  • HTTP 默认端口:80。
  • HTTPS 默认端口:443。
  • HTTPS = HTTP + TLS。
  • HTTPS 主要提供机密性、完整性、身份认证。
  • HTTPS 不等于业务绝对安全,仍可能存在弱密码、业务逻辑漏洞、越权等问题。

7. 路由协议:RIP 与 OSPF

路由协议解决"数据包该走哪条路"的问题,按作用范围分两类:

  • IGP(内部网关协议):一个机构内部使用,如 RIP、OSPF。
  • EGP(外部网关协议):机构之间使用,典型是 BGP(互联网骨干)。

RIP(路由信息协议)——距离向量协议(高频考点)

  • 度量是跳数(途经路由器的个数),与带宽无关。
  • 最大 15 跳可达;16 跳 = 无穷大 = 不可达。
  • 为什么把 16 定为无穷大:防"计数到无穷"问题——路由环路中两个路由器互相"抄作业",跳数 1→2→3→…无限累加,网络永远无法收敛;设了上限,跳数一到 16 就判定不可达,环路传播终止。
  • 只适合小型网络;收敛慢;基于 Bellman-Ford 算法。
  • 速记:"15 可达,16 完蛋"。

OSPF——链路状态协议

  • 度量是开销 Cost(与带宽相关,带宽越大开销越小)。
  • 无跳数限制;收敛快;适合大中型网络。
  • 每台路由器掌握全网拓扑(像手里有完整地图);RIP 只听邻居指路(邻居说往哪走就往哪走)。
RIP OSPF
类型 距离向量 链路状态
度量 跳数 开销(与带宽相关)
跳数限制 15 跳,16 不可达 无
收敛速度 慢 快
适用网络 小型 大中型
类比 只听邻居指路 有完整地图

8. DNS:记录类型与查询方式

常见 DNS 记录类型(选择题必背)

记录 全称 作用
A Address 域名 → IPv4 地址
AAAA — 域名 → IPv6 地址
CNAME Canonical Name 别名记录:一个域名指向另一个域名
MX Mail Exchange 邮件服务器记录
PTR Pointer 反向解析:IP → 域名
NS Name Server 指定该域名由哪台 DNS 服务器负责

速记:A 管 IPv4,AAAA 管 IPv6(四个 A = 128 位是 32 位的 4 倍长);CNAME 是"外号"(别名);MX 管邮件;PTR 反着查(IP 查域名)。

递归查询 vs 迭代查询(高频易错)

  • 递归查询:DNS 服务器代替客户端完成整个解析过程,直接返回最终结果。关键字:"代替客户端""要最终答案"。
  • 迭代查询:服务器只返回下一级服务器的地址("我不知道,你去问 XX"),查询方自己继续问。

完整解析流程(查 www.bank.cn 为例):

  1. 客户端问本地 DNS:"www.bank.cn 的 IP 是?"——对客户端是递归(本地 DNS 代劳到底)。
  2. 本地 DNS 问根服务器 → 根答"去问 .cn 顶级服务器"(迭代:只指路)。
  3. 问顶级服务器 → 指向 bank.cn 的权威服务器。
  4. 问权威服务器 → 拿到最终 IP,逐级返回客户端。

判断口诀:主机 → 本地 DNS 是递归(要最终结果);本地 DNS → 各级上游是迭代(问路模式)。

另两个词:正向查询 = 域名查 IP;反向查询 = IP 查域名(用 PTR 记录)。

9. ICMP 与网络层协议辨析

ICMP(互联网控制报文协议):

  • 工作在网络层,配合 IP 使用。
  • 主要功能:报告差错 + 提供诊断——不传输用户数据、不加密、不做地址转换。
  • 典型应用:ping(Echo 请求/应答,测连通性)、traceroute / tracert(追踪路径)。

"XX 协议的功能是"类题目对号入座表:

功能描述 对应协议
报告差错、诊断连通性(ping) ICMP
IP 地址 ↔ MAC 地址转换 ARP
私网 IP ↔ 公网 IP 转换 NAT
传输用户数据 TCP / UDP(传输层)
加密网络通信 TLS / IPsec
动态分配 IP 地址 DHCP

易错点:ICMP 与 IP、ARP 同属网络层,但 ICMP 不传业务数据——它是 IP 的"报错与体检工具"。

10. CSMA/CD:以太网介质访问控制

CSMA/CD(载波侦听多路访问/冲突检测)是传统有线以太网(IEEE 802.3)的介质访问控制方法。

核心工作原理(十六字口诀):

先听后说,边听边说,冲突停发,随机延迟后重发。

  1. 先听后说:发送前先侦听信道,信道空闲才立即发送(不是发完才听)。
  2. 边听边说:边发送边侦听,检测是否发生冲突。
  3. 冲突停发:一旦检测到冲突,立即停止发送。
  4. 随机延迟后重发:冲突后不是立即重传,而是按二进制指数退避算法等随机时间再发(立即重传只会再撞一次)。

高频易错点:

  • CSMA/CD 用于有线以太网,不用于无线局域网——无线用的是 CSMA/CA(冲突避免,IEEE 802.11),因为无线环境难以可靠检测冲突(隐藏终端问题),只能尽量"避免"。
  • 冲突检测上限:检测冲突的最长时间 = 2 倍端到端传播时延(争用期)。
  • 现代交换式全双工以太网基本无冲突,CSMA/CD 重要性下降,但仍是经典考点。
CSMA/CD CSMA/CA
含义 冲突检测 冲突避免
适用 有线以太网 802.3 无线局域网 802.11
原因 有线可通过电压变化可靠检测冲突 无线难以检测冲突(隐藏终端)

🟡 本分册解释为通用计算机知识补充,可能与你老师讲的不完全一致;专业范围以《考试大纲》"金融监管计算机类"部分为准。

03_操作系统与并发.md

操作系统与并发

1. 进程与线程

  • 进程是资源分配的基本单位。
  • 线程是 CPU 调度的基本单位。
  • 同一进程内线程共享代码段、数据段、打开的文件等资源。
  • 线程拥有独立的栈和程序计数器。

2. 用户态与内核态

系统调用会引发用户态到内核态的切换,例如文件读写、创建进程、网络通信、内存申请。频繁系统调用会产生上下文切换开销。

3. 虚拟内存分页与 TLB(快表)

分页的基本概念

分页把进程的虚拟地址空间划分成固定大小的页(Page),把物理内存划分成同样大小的页框/帧(Page Frame)。程序的页可以装入物理内存中不连续的页框,由操作系统维护页表记录映射关系。

  • 页:虚拟内存中的固定大小区块。
  • 页框/页帧:物理内存中的固定大小区块,大小与页相同。
  • 页表:记录“虚拟页号 → 物理页框号”的映射,以及存在位、权限、修改位等状态。
  • 分页可消除外部碎片,但最后一页未用满时可能有少量内部碎片。

虚拟地址如何转换

虚拟地址通常拆成两部分:虚拟页号 + 页内偏移量。页内偏移在转换前后保持不变,页表或快表将虚拟页号转换为物理页框号,再与页内偏移组合成物理地址。

1
2
3
虚拟地址 [虚拟页号 | 页内偏移量]
        ↓ 查快表 / 页表
物理地址 [物理页框号 | 页内偏移量]

例:页大小为 4 KB,则页内偏移需要 12 位(4 KB = 2^12);虚拟地址低 12 位是页内偏移,其余高位用于虚拟页号。页大小为 2 的幂,页号与偏移可通过位划分得到。

快表(TLB)

快表是处理器中用于缓存近期页表映射的高速小型硬件缓存。它缓存的是虚拟页号到物理页框号的映射,不是整个进程,也不是磁盘数据。

地址转换过程:

  1. CPU 产生虚拟地址,硬件先用 VPN 查 TLB。
  2. TLB 命中:直接取得 PFN,与页内偏移组合成物理地址,速度快。
  3. TLB 未命中:到内存中的页表查映射;若该页在内存中,把映射装入 TLB 后继续访问。
  4. 页表显示该页不在内存时,发生缺页异常/缺页中断;操作系统从磁盘调入页面,更新页表,必要时置换其他页面,再重新执行引发缺页的指令。
事件 含义 后果
TLB 命中 快表中找到 VPN→PFN 快速完成地址转换
TLB 未命中 快表没找到映射 查内存中的页表;页面可能仍在内存
缺页 页表表明页面不在物理内存 需要操作系统从后备存储调页,代价远高于 TLB 未命中

关键辨析:TLB 未命中不等于缺页。未命中只表示“快表没有缓存映射”;只有页表也表明页面不在内存,才需要缺页处理。

TLB 与页表的配合

  • 页表通常保存在主存中,容量可以较大,但访问它会增加地址转换开销。
  • TLB 是速度更快但容量较小的缓存,利用程序访问的时间局部性和空间局部性提高地址转换速度。
  • TLB 命中率越高,平均地址转换开销通常越低。
  • 进程切换时,若不同进程的地址空间映射不同,需要通过地址空间标识(ASID)区分 TLB 项,或刷新部分/全部 TLB;具体由处理器机制决定。

分页的优缺点与相关概念

  • 优点:物理内存可不连续分配;消除外部碎片;便于实现虚拟内存和内存保护。
  • 代价:页表占用内存;地址转换增加开销;页未用满会产生内部碎片;缺页时磁盘 I/O 代价很高。
  • 请求分页:页面只有在被访问且不在内存时才调入,属于虚拟内存常见机制。
  • 页面置换:内存没有空闲页框时,选择页面换出,为新页腾出空间;置换算法不等同于 TLB 替换策略。

4. 页面置换算法

缺页且没有空闲页框时,操作系统需要选一个内存页面换出:

  • FIFO:先进先出,可能出现 Belady 异常。
  • LRU:淘汰最近最少使用页面。
  • OPT:淘汰未来最长时间不会使用的页面,理论最优,但实际无法准确知道未来。
  • Clock:LRU 的近似实现。

4. 死锁

死锁四个必要条件:

  1. 互斥
  2. 请求并保持
  3. 不可剥夺
  4. 循环等待

处理方法:

  • 预防死锁:破坏必要条件。
  • 避免死锁:银行家算法。
  • 检测与恢复:允许发生,定期检测并处理。
  • 忽略:某些通用操作系统的实际策略。

5. 进程通信

常见方式:管道、消息队列、共享内存、信号量、Socket。

共享内存速度快,但需要配合锁或信号量解决并发问题。

6. 指令流水线与流水线冒险

指令流水线:把一条指令的执行拆成多个阶段(经典五段:取指 IF → 译码 ID → 执行 EX → 访存 MEM → 写回 WB),不同指令的不同阶段重叠执行——像工厂装配线,每个工位只干一道工序,多条指令同时在流动,整体吞吐量大幅提高。

流水线冒险(Hazard):因为某种冲突,下一条指令无法在预定的时钟周期继续执行,流水线"卡壳"。共三类(必背):

冒险类型 原因 例子 主要对策
结构冒险 多条指令争用同一硬件资源 取指和访存指令同时要用同一个存储器 资源重复设置:指令 Cache 与数据 Cache 分开
数据冒险 后一条指令要用前一条的结果,结果还没写回 ADD 算出 R1,紧跟的 SUB 立刻要用 R1 转发/旁路(结果直接送下游,不等写回)、插入停顿(气泡)、编译器调整指令顺序
控制冒险 分支/跳转改变执行流,转向目标确定前已取错指令 if 判断还没出结果,下一条取顺序指令还是跳转目标? 分支预测(猜方向,猜错作废重来)、尽早算出分支结果

银行柜面类比(帮助记忆):

  • 流水线 = 柜面流水作业:填单 → 审核 → 录入 → 出钞,四个柜员同时各服务一位客户的不同环节。
  • 结构冒险:两位客户同时要用同一台验钞机——对策是多配一台设备(资源重复)。
  • 数据冒险:录入岗等审核岗的结论,审核没完只能干等——对策是结论直接口头递过去(转发),不用等归档完再查(写回)。
  • 控制冒险:客户中途改主意"不取了,改存款",已经准备好的出钞动作作废重来(预测失败清空流水线)。

高频考点:

  1. 数据冒险里 RAW(写后读)最常见:后一条指令读了前一条尚未写入的寄存器;WAR(读后写)、WAW(写后写)在按序流水线中较少出现。
  2. 转发(Forwarding / 旁路)是数据冒险的主要解法,停顿(Stall / 气泡)是补充手段——纯靠停顿性能损失太大。
  3. 分支预测猜对零代价,猜错清空流水线重来(控制冒险的代价来源)。

流水线性能计算

设流水线有 k 个阶段,每个阶段耗时近似为 t,共有 n 条指令:

  • 非流水线执行时间:n × k × t。
  • 流水线执行时间:(k + n − 1) × t。第一条指令要经过全部 k 个阶段,之后通常每个时钟周期完成一条。
  • 吞吐率:单位时间完成的指令数。稳定运行后约为 1 / t 条/周期。
  • 加速比:非流水线时间 ÷ 流水线时间,即 nkt / [(k+n−1)t]。
  • 当 n 很大时,加速比接近 k,但不会真正超过阶段数 k。

例:5 段流水线执行 10 条指令,每段 1 个周期:

  • 非流水线:10 × 5 = 50 周期;
  • 流水线:5 + 10 − 1 = 14 周期;
  • 加速比:50 / 14 ≈ 3.57;
  • 不是 5 倍,因为第一条指令需要“装入”流水线,最后还要“排空”流水线。

注意:流水线提高的是吞吐率,不一定缩短单条指令的实际执行延迟;单条指令仍需经过全部阶段。

数据冒险的典型时序:load-use 冒险

LW  R1, 0(R2)      ; 从内存读数据到 R1
ADD R3, R1, R4     ; 下一条立即使用 R1

LW 的结果通常要到 MEM 阶段结束才产生,而下一条 ADD 在 EX 阶段开始就需要 R1。即使有转发,也可能来不及,因此通常需要插入 1 个停顿周期(气泡),然后再转发结果。

判断方法:

  • 普通算术指令产生的结果,常可通过转发直接供下一条使用;
  • 加载指令后紧跟使用加载结果,是最典型的必须停顿场景;
  • 编译器可以把一条无关指令插入两条指令之间,减少或消除停顿。

控制冒险的分支预测

处理器遇到条件分支时,可能暂时不知道下一条指令来自顺序地址还是跳转目标。常见策略:

  • 静态预测:固定预测“跳转”或“ 不跳转”,实现简单;
  • 动态预测:根据历史执行结果预测,通常维护分支历史信息;
  • 延迟分支:由编译器安排分支后的指令槽位;
  • 预测正确:流水线继续运行;
  • 预测错误:清除已经取入的错误路径指令,并从正确目标重新取指,产生若干周期损失。

一眼判断题

  • 流水线是让一条指令同时执行多个阶段:错;流水线是让多条指令的不同阶段重叠执行。
  • 流水线能把单条指令执行时间降为一个阶段:错;它主要提高整体吞吐率。
  • 指令 Cache 和数据 Cache 分开可减少取指与访存的结构冲突:对。
  • 只要采用转发,所有数据冒险都不需要停顿:错;load-use 冒险常仍需停顿。
  • 分支预测失败时应清空错误路径上的部分指令:对。

10. 题目对应补充:存储器、Cache、异步性与 MMU

10.1 字扩展与位扩展

存储器规格通常写成“存储单元数量 × 每个存储字的位数”。扩展时要先判断改变的是地址数量还是每个地址对应的数据位数:

扩展方式 改变内容 地址线 数据线 典型目的
字扩展 增加存储单元数量,存储字长不变 增加地址线或片选译码 基本不变 扩大容量
位扩展 增加每个存储字的位数,单元数量不变 基本不变 增加数据线 扩大字长

例子:已有 1K × 8 芯片,要组成 4K × 8,需要 4 片并进行字扩展:每片仍提供 8 位数据,但用更高位地址经过译码选择其中一片。若要组成 1K × 16,需要 2 片并行工作进行位扩展:两片共用地址和控制信号,分别提供低 8 位和高 8 位数据。

易错点:字扩展改变的是“能存多少个字”,不是“每个字有多少位”;位扩展才改变存储字长。读写速度、总线宽度不是字扩展的直接定义。

10.2 IEEE 754 浮点数格式

IEEE 754 浮点数通常表示为:

数值 = (-1)^符号位 × 1.尾数 × 2^(阶码 - 偏置值)
类型 总位数 符号位 阶码 尾数字段 阶码偏置
单精度 32 1 8 23 127
双精度 64 1 11 52 1023

单精度的“尾数位数”在选择题中通常指尾数字段的存储位数,即 23 位;规格化数的有效精度还包括隐藏的最高位 1,因此不能把 23 位与总位数、阶码位数混淆。

例子:单精度格式按“1 位符号 + 8 位阶码 + 23 位尾数”划分,共 32 位。双精度按“1 + 11 + 52”划分,共 64 位。题目问单精度尾数字段时选 23 位,不选 8 位阶码。

10.3 多体交叉存储

多体交叉把主存划分为多个相互独立、可以交错工作的存储体,核心目标是提高连续访问时的主存吞吐率和带宽,而不是直接扩大总容量、降低刷新频率或减少 Cache 缺失。

  • 低位交叉:用地址低位选择存储体,连续地址通常落入不同存储体,适合连续数据的并行访问。
  • 高位交叉:用地址高位选择存储体,连续地址可能集中在同一存储体,更多体现分区管理效果。
  • 存储体之间仍可能受存取周期限制;交叉并不表示每个存储体能在同一时刻无限次读写。

例子:4 体低位交叉存储中,连续地址 0、1、2、3 可分别放入第 0、1、2、3 体。处理器连续读取这 4 个字时,可以在一个存储体等待恢复的同时访问其他存储体,从而提高连续数据的传输速度。

10.4 Cache 的三类缺失

Cache 缺失(Cache miss)是处理器访问的数据块不在 Cache 中,需要从下一层存储器取回。经典分类为:

类型 含义 例子 主要原因
强制缺失 某数据块第一次被访问,之前从未装入 Cache 程序第一次读取数组首元素 冷启动或首次访问
容量缺失 Cache 容量不足,已装入的数据块被淘汰 循环处理的大数组超过 Cache 容量 工作集大于 Cache
冲突缺失 不同数据块映射到同一 Cache 位置,互相替换 直接映射 Cache 中两个地址反复占用同一行 映射位置竞争

“传输缺失”不是 Cache 经典三分类之一。例子:一个数组第一次遍历时,首次访问的 Cache 行产生强制缺失;反复访问远大于 Cache 的数组可能产生容量缺失;两个地址虽然总数据量不大,但总映射到同一行时产生冲突缺失。

10.5 操作系统的异步性

异步性是指进程的推进速度、调度顺序以及 I/O 完成时机具有不确定性,不能预先准确知道某个事件何时发生。它强调“事件时机不可预知”,不是“多个进程同时执行”。

  • 并发:多个进程在同一时间段内交替推进,宏观上同时存在。
  • 并行:多个处理器或核心在同一时刻真正执行多个任务。
  • 异步:一个进程不必等待另一个事件按固定时间发生,事件到达和执行顺序可能变化。

例子:进程发起磁盘 I/O 后进入等待,磁盘何时完成、进程何时被唤醒取决于设备和调度;即使同一程序运行两次,I/O 完成顺序和进程获得 CPU 的时间也可能不同。这体现异步性。若两个进程在单核 CPU 上轮流运行,是并发;若在两个核心上同时运行,是并行。

10.6 MMU 与虚拟内存硬件支撑

MMU(Memory Management Unit,内存管理单元)是处理器中的硬件模块,负责在访问内存时配合页表和 TLB,把虚拟地址转换为物理地址,并检查访问权限。

一次分页地址转换可概括为:

  1. CPU 生成虚拟地址,MMU 将其拆成虚拟页号和页内偏移。
  2. MMU 先查 TLB;命中时直接取得物理页框号。
  3. TLB 未命中时查页表。页表显示页面在内存中,就取得物理页框号并更新 TLB。
  4. 页表显示页面不在内存中时,触发缺页异常,由操作系统调入页面、更新页表后重新执行访问。
  5. 物理页框号与不变的页内偏移组合成物理地址,再完成访问。

例子:虚拟地址由虚拟页号 VPN=5 和偏移 100 组成,页表把第 5 页映射到物理页框 PFN=12,则物理地址由页框 12 和偏移 100 组成。若页表显示第 5 页不在内存,MMU 不会自己从磁盘读取,而是触发缺页异常,由操作系统完成调页。

硬件辨析:Cache 缓存近期数据和指令;DMA 控制器负责设备与内存之间的直接数据传送;中断控制器负责管理和分发中断;虚拟地址到物理地址的转换核心硬件是 MMU。TLB 是 MMU 地址转换路径中的高速映射缓存,不等于 MMU 本身。


🟡 本分册解释为通用计算机知识补充,可能与你老师讲的不完全一致;专业范围以《考试大纲》"金融监管计算机类"部分为准。

04_数据结构与算法.md

数据结构与算法

1. 复杂度必背

操作/算法 常见复杂度
数组随机访问 O(1)
顺序查找 O(n)
二分查找 O(log n)
哈希表平均查找 O(1)
平衡二叉搜索树查找 O(log n)
普通二叉搜索树最坏查找 O(n)
冒泡排序 O(n²)
插入排序 O(n²),近乎有序时较快
归并排序 O(n log n)
快速排序平均 O(n log n)
快速排序最坏 O(n²)
堆排序 O(n log n)

2. 线性表与广义表

线性表:n 个原子元素(不可再分)的有限序列。

广义表:线性表的推广——元素既可以是原子,也可以是子表(另一个广义表)。记作 LS = (a₁, a₂, …, aₙ)。

广义表 含义 长度 深度
A = () 空表 0 1
B = (e) 只含一个原子 1 1
C = (a, (b, c)) 原子 + 子表 2 2
D = (A, B, C) = ((), (e), (a, (b, c))) 元素全是子表 3 3
E = (a, E) 递归表(自己包含自己) 2 ∞
  • 长度 = 最外层元素的个数。
  • 深度 = 括号最大嵌套层数(原子深度为 0,空表深度为 1,递归表深度为无穷)。

表头与表尾运算(最高频考点)

  • 表头 GetHead(LS):第一个元素——可以是原子,也可以是子表。
  • 表尾 GetTail(LS):除去第一个元素后,剩余元素组成的表——永远是一个广义表。

例:L = (a, (b, c), d)

  • GetHead(L) = a(原子)
  • GetTail(L) = ((b, c), d)——注意外面套一层括号,因为表尾本身是"装着剩余元素的表"
  • GetHead(GetTail(L)) = (b, c)(子表)

运算链套路:"取第 k 个元素 = 先取 k−1 次表尾,再取一次表头"。

例:L = (a, b, c, d),取第 2 个元素:GetHead(GetTail(L)) = b。

三个易错点

  1. 表尾永远套一层括号:GetTail((a, (b, c))) = ((b, c)),不是 (b, c)。
  2. 空表不能取表头表尾:() 没有第一个元素,运算无意义。
  3. 表头可以是原子或子表,表尾一定是表——两者类型不对称,这是与"第一个元素/其余元素"直觉的最大区别。

存储结构:广义表常用链式存储(头尾指针存储法),原子节点与表节点分开表示。

银行场景类比:客户资产清单 = (活期存款, (股票组合A, (债券, 国债逆回购)), 黄金)——清单里既有单笔资产(原子),也有整包的投资组合(子表),组合里还能再嵌套组合。

3. 排序特点

  • 稳定排序:相同关键字元素的相对顺序不变。
  • 归并排序、插入排序、冒泡排序稳定。
  • 快速排序、堆排序通常不稳定。

3. 树

  • 二叉搜索树:左子树所有节点小于根,右子树所有节点大于根。
  • 二叉搜索树中序遍历结果是递增序列。
  • 大顶堆:根节点最大;小顶堆:根节点最小。
  • AVL 树通过旋转保持平衡。
  • B+ 树常用于数据库索引和文件系统。

4. 图算法

  • BFS:广度优先,适合求无权图最短路径。
  • DFS:深度优先,适合遍历、连通性、拓扑相关问题。
  • Dijkstra:非负权图单源最短路。
  • Floyd:多源最短路,复杂度通常为 O(n³)。
  • Kruskal、Prim:最小生成树。
  • 拓扑排序:有向无环图。

🟡 本分册解释为通用计算机知识补充,可能与你老师讲的不完全一致;专业范围以《考试大纲》"金融监管计算机类"部分为准。

05_软件工程与系统架构.md

软件工程与系统架构

1. 软件开发模型

  • 瀑布模型:阶段清晰,需求变更成本高。
  • 增量模型:分批交付功能。
  • 螺旋模型:强调风险分析,适合大型复杂项目。
  • 敏捷开发:快速迭代、持续交付、拥抱变化。
  • Scrum 常见角色:Product Owner、Scrum Master、开发团队。

2. 软件测试

测试层次:

  1. 单元测试
  2. 集成测试
  3. 系统测试
  4. 验收测试

测试类型:

  • 黑盒测试:关注输入输出,不关注内部实现。
  • 白盒测试:关注代码逻辑和路径。
  • 回归测试:修改后重新测试,确认原有功能未被破坏。
  • 压力测试:高负载下观察系统表现。
  • 性能测试:关注响应时间、吞吐量、并发数等。

3. 软件设计

  • 高内聚:模块内部功能相关性强。
  • 低耦合:模块之间依赖少。
  • 高内聚、低耦合是软件设计的重要目标。

4. 常见架构

  • 单体架构:部署简单,但扩展和维护容易受限。
  • 分层架构:表现层、业务层、数据层。
  • 微服务架构:服务独立部署,扩展性强,但带来分布式事务、服务治理、链路追踪等复杂性。
  • SOA:面向服务的架构思想。
  • 事件驱动架构:通过事件解耦系统模块。

5. 分布式系统

CAP:

  • Consistency:一致性
  • Availability:可用性
  • Partition tolerance:分区容错性

网络分区一定要考虑,因此分布式系统通常在一致性和可用性之间权衡。

BASE:

  • Basically Available:基本可用
  • Soft state:软状态
  • Eventually consistent:最终一致性

🟡 本分册解释为通用计算机知识补充,可能与你老师讲的不完全一致;专业范围以《考试大纲》"金融监管计算机类"部分为准。

06_信息安全.md

信息安全

1. CIA 三要素

  • 机密性:只有授权主体可以访问。
  • 完整性:数据未被非法篡改。
  • 可用性:系统和数据在需要时可正常使用。

2. 加密

对称加密:

  • 加解密使用同一把密钥。
  • 速度快,适合大量数据加密。
  • 典型:AES。

非对称加密:

  • 公钥加密、私钥解密,或私钥签名、公钥验证。
  • 速度较慢。
  • 典型:RSA、ECC。

哈希:

  • 不可逆。
  • 用于完整性校验、密码存储等。
  • 典型:SHA-256。
  • MD5、SHA-1 已不适合高安全场景。

3. 数字签名与数字证书

数字签名主要保证:

  • 消息完整性
  • 消息来源真实性
  • 不可否认性

数字证书用于把公钥和主体身份绑定起来,由 CA 签发。

4. 常见攻击与防护

攻击 含义 防护关键词
SQL 注入 注入恶意 SQL 改变查询逻辑 参数化查询、输入校验
XSS 向网页注入恶意脚本 输出编码、输入过滤
CSRF 诱导已登录用户发起非本人意愿请求 CSRF Token
DDoS 大量请求消耗服务资源 限流、清洗、扩容
越权 访问不属于当前用户的资源 访问控制、最小权限
重放攻击 重复发送捕获的合法请求 时间戳、随机数、签名
中间人攻击 第三方插入并窃听或篡改通信 HTTPS、证书校验

其他高频防护词:多因素认证、日志审计、WAF、熔断、备份、灾备。

5. 防火墙:能力边界(高频考点)

防火墙主要工作在网络层(部分扩展到传输层),按规则控制进出网络的访问。类比:防火墙管"门禁",防病毒软件管"体检",分工不同、互相补充。

能做:

  • 阻挡外部未授权访问(封端口、拦截扫描)。
  • 依据 IP / 端口 / 协议做访问控制。
  • 缓解部分 DoS 攻击(限流、封 IP)。

不能做(考试最爱):

  • 不能查杀病毒 / 木马——病毒常藏在正常流量里(邮件附件、下载文件),需要防病毒软件。典型考法:"防火墙不能防范的攻击是——病毒传播"。
  • 难以防范内部人员攻击——传统边界防火墙防"外"不防"内"。
  • 不能防范内容层攻击(网页挂马、SQL 注入等需 WAF / IPS 配合)。
  • 不能防止合法用户滥用权限。

引申:纵深防御——防火墙、防病毒、IDS/IPS、WAF、访问控制、日志审计多道防线配合,任何单一设备都不能包打天下。


🟡 本分册解释为通用计算机知识补充,可能与你老师讲的不完全一致;专业范围以《考试大纲》"金融监管计算机类"部分为准。

07_银行信息科技风险管理.md

银行信息科技风险管理

1. 风险分类

  • 战略风险
  • 操作风险
  • 技术风险
  • 合规风险
  • 数据风险
  • 外包风险
  • 业务连续性风险
  • 信息安全风险

2. 三道防线

  1. 第一道防线:业务和技术部门,直接承担风险管理责任。
  2. 第二道防线:风险管理、合规等部门,进行监督和指导。
  3. 第三道防线:内部审计,独立评价前两道防线。

3. 灾备指标

  • RTO:恢复时间目标,系统最长允许中断多久。
  • RPO:恢复点目标,最多允许丢失多长时间的数据。

例如:

  • RTO = 2 小时:两小时内恢复服务。
  • RPO = 15 分钟:最多丢失最近 15 分钟的数据。

4. 业务连续性

重点关注:关键业务识别、单点故障、主备切换、数据备份、灾难恢复、应急预案、定期演练、供应商和外包管理。


🟡 本分册解释为通用计算机知识补充,可能与你老师讲的不完全一致;专业范围以《考试大纲》"金融监管计算机类"部分为准。

08_云计算大数据AI.md

云计算、大数据、人工智能

1. 云计算服务模式

缩写 英文全称 中文 典型例子
IaaS Infrastructure as a Service 基础设施即服务 虚拟机、存储、网络
PaaS Platform as a Service 平台即服务 运行环境、数据库平台
SaaS Software as a Service 软件即服务 在线办公、企业应用

命名规律:X as a Service(X 即服务),X 就是云厂商替你管理的那一层——IaaS 管基础设施、PaaS 管平台、SaaS 直接交付成品软件。从 IaaS 到 SaaS,客户自己要管的东西越来越少。

部署模式:公有云(Public Cloud)、私有云(Private Cloud)、混合云(Hybrid Cloud)、多云(Multi-Cloud)。

2. 虚拟化与容器

  • 虚拟机(VM,Virtual Machine)通过 Hypervisor(虚拟机监视器,又称 VMM,Virtual Machine Monitor)虚拟化硬件。
  • 容器(Container)共享宿主机操作系统内核,启动速度通常更快。
  • 容器不等于虚拟机,隔离级别和资源抽象方式不同。
  • Kubernetes(简称 K8s)主要用于容器编排。

3. 大数据

5V:

  • Volume:规模大
  • Velocity:速度快
  • Variety:类型多
  • Veracity:真实性
  • Value:价值

分布式文件系统重点:数据分片、多副本、容错、横向扩展、数据本地性。

批处理分布式计算(MapReduce、Spark)

定位:大数据技术体系的核心——单机存不下、算不动,就拆给多台机器并行处理,思想是分而治之。

Hadoop 生态三件套:

组件 英文全称 角色
HDFS Hadoop Distributed File System 分布式文件系统(存储层)
MapReduce — 分布式批处理计算框架(计算层)
YARN Yet Another Resource Negotiator 集群资源调度(调度层)

MapReduce 两个阶段(高频考点):

  1. Map(映射):把大任务拆成小任务,分给多个节点并行处理。
  2. Reduce(归约):汇总各节点的中间结果,得到最终答案。

速记:Map 分、Reduce 合。

Spark:基于内存的分布式计算引擎。

  • 中间结果放内存不落磁盘;MapReduce 每步中间结果写磁盘,所以 Spark 快得多。
  • 核心数据抽象:RDD(Resilient Distributed Dataset,弹性分布式数据集)。
  • 适合迭代计算(机器学习训练一遍遍跑)和交互式查询。
  • 常见组件:Spark SQL、Spark Streaming、MLlib(机器学习库)、GraphX。
MapReduce Spark
中间结果 写磁盘 放内存
速度 慢 快(内存计算)
适合场景 简单离线批处理 迭代计算、机器学习

批处理 vs 流处理(场景判断题最爱):

批处理(Batch) 流处理(Stream)
数据方式 攒一批一起算 到一条算一条
延迟 高(分钟~小时) 低(毫秒~秒)
典型技术 MapReduce、Spark Spark Streaming、Flink
银行场景 日终跑批:利息计提、信用卡账单、对账、监管报表 实时风控、实时反欺诈

银行场景:银行每天营业结束后夜间"跑批"——计息、对账、出报表,就是典型的批处理分布式计算;而转账发生瞬间的反欺诈判断,等不了批处理,必须流处理。

数据挖掘(Data Mining)

定义:从海量数据中发现隐含的、有价值的模式和规律的过程,是实现大数据 5V 中 Value(价值) 的核心技术。完整过程又称 KDD(Knowledge Discovery in Databases,数据库知识发现)。

数据挖掘具体在做什么(白话版):把散落在各系统里的原始事实(谁、何时、做了什么交易),加工成可用的知识(哪类客户容易违约、给谁推荐什么产品),再用知识驱动业务决策(是否放贷、如何营销)。类比淘金:原始数据是沙子,预处理是筛沙,挖掘算法是淘洗,评估是验金,最终把金子做成首饰卖出去(应用到业务产生价值)。

一般过程(KDD 流程图):

1
2
3
4
5
6
7
flowchart TD
    A[① 定义业务问题<br/>预测违约?客户分群?] --> B[② 数据收集<br/>核心系统/渠道/征信取数]
    B --> C[③ 数据预处理<br/>清洗-集成-变换-归约]
    C --> D[④ 建模挖掘<br/>分类/聚类/关联规则算法]
    D --> E[⑤ 模式评估<br/>准确性 + 业务价值]
    E -->|不通过| C
    E -->|通过| F[⑥ 呈现部署<br/>评分卡/报表/嵌入生产系统]

文字版:定义问题 → 数据收集 → 数据预处理 → 建模挖掘 → 模式评估 → 呈现部署(评估不过关就回到前面迭代)。

分步解释(以"预测客户违约"为例):

步骤 在做什么 银行例子
1. 定义业务问题 明确挖什么、答案长什么样 "预测客户未来一年是否违约"
2. 数据收集 从多个系统取原始数据 核心系统交易流水 + 征信数据
3. 数据预处理 清洗缺失/重复/噪声,多源整合,标准化 手机号缺失补齐;不同系统客户号对齐;工资分高/中/低档
4. 建模挖掘 选算法训练模型 用逻辑回归训练违约预测模型
5. 模式评估 验证准确性 + 判断业务价值 测试集验证准确率,剔除"没有业务意义的规律"
6. 呈现部署 转成可用形式,嵌入业务流程 输出评分卡嵌入信贷审批系统

两个考试细节:

  • 数据预处理最耗时,实践中约占 60%~80% 的工作量(行话:"数据挖掘就是 80% 的时间在洗数据")。
  • 数据挖掘不是一步到位,而是"建模—评估"反复迭代的过程。

五大任务(先判断任务类型,再选算法):

五大任务就是上面流程图第 ④ 步"建模挖掘"阶段里做的事:KDD 流程回答"按什么顺序做",五大任务回答"这一步具体挖出什么样的规律"。第 1 步定义业务问题时先选定任务类型,第 4 步再选具体算法实现它。

三层结构:业务问题 → 任务类型 → 具体算法。

业务问题 任务类型 具体算法
预测客户违约 分类 逻辑回归、决策树、随机森林
预测授信额度 回归 线性回归
客户分群营销 聚类 K-Means
搭配销售推荐 关联规则 Apriori
反欺诈、反洗钱 异常检测 离群点检测

一句话:任务决定挖什么规律,算法决定用什么工具挖。前两步(收集、预处理)为这一步备好干净原料,后两步(评估、部署)检验并使用挖出来的规律。

易错点:逻辑回归名字带"回归",干的是分类的活——它输出 0~1 的概率,再按阈值贴"违约 / 不违约"标签,所以属于分类算法。

任务 监督? 输出 银行场景
分类 Classification 有监督 离散类别 信用评分:违约 / 不违约
回归 Regression 有监督 连续数值 预测收益、授信额度
聚类 Clustering 无监督 自动分组 客户分群营销
关联规则 Association — "有 A 则有 B" 规律 交叉销售
异常检测 Anomaly Detection 无监督为主 异常记录 反欺诈、反洗钱

分类经典算法:

  1. 决策树(Decision Tree):一问一答层层分支。代表:ID3(信息增益)、C4.5(信息增益率)、CART(基尼系数)。优点:可解释性强。
  2. KNN(K 近邻,K-Nearest Neighbors):新样本看最近的 K 个邻居属于哪类就判哪类。懒惰学习、无需训练,但预测时要算大量距离。
  3. 朴素贝叶斯(Naive Bayes):假设特征条件独立,用先验概率做推断。垃圾邮件分类的经典方法。
  4. 逻辑回归(Logistic Regression):输出 0~1 之间的概率,银行评分卡的标配——输出违约概率。
  5. SVM(支持向量机,Support Vector Machine):寻找最大间隔的分类边界,核技巧处理非线性问题。
  6. 神经网络(Neural Network):深度学习的基础,拟合复杂非线性能力强,但属于黑箱。

聚类经典算法:

  • K-Means:随机选 K 个中心 → 每个点归入最近中心 → 重算中心 → 迭代至稳定。特点:需预设 K,对初值敏感。

关联规则经典算法:

  • Apriori:先挖频繁项集,再生成规则。两个核心度量:
  • 支持度(Support):项集同时出现的频率——衡量规律多常见。
  • 置信度(Confidence):有 A 的人里多少也有 B——衡量规律多可靠。
  • 例子:发现"办工资卡的客户 60% 会开手机银行" → 联合营销话术。

高频辨析(选择题套路):

  • 分类 vs 聚类:有标签 vs 无标签(有监督 vs 无监督)——最常考。
  • 分类 vs 回归:预测离散类别 vs 预测连续数值。
  • Bagging vs Boosting:随机森林(Bagging)多树并行投票,各自独立;Boosting(如 XGBoost)串行训练,后一棵树专攻前面树的错题。

银行应用速记:分类=信用评分,回归=收益/额度预测,聚类=客户分群,关联规则=交叉销售,异常检测=反欺诈、反洗钱。

4. 机器学习

  • 监督学习:有标签数据,如分类、回归。
  • 无监督学习:无标签数据,如聚类、降维。
  • 强化学习:通过奖励和惩罚学习策略。
  • 过拟合:训练集表现好,测试集表现差。
  • 欠拟合:训练集和测试集表现都差。
  • 常见解决方法:正则化、交叉验证、增加数据、降低模型复杂度、早停。

随机森林(Random Forest)

定位:集成学习(Ensemble Learning)中 Bagging 流派的代表方法,基学习器是决策树,属于监督学习。

核心思想:训练多棵决策树组成"森林",各自预测后汇总——分类问题投票(少数服从多数),回归问题取平均。

两个"随机"(高频考点):

  1. 样本随机:每棵树用 Bootstrap 有放回抽样的样本训练。
  2. 特征随机:每次节点分裂时,只从随机抽取的特征子集中选最优分裂特征。

正是这两层随机性让每棵树"各有侧重",汇总后互相抵消误差、降低方差。

对比单棵决策树:

单棵决策树 随机森林
过拟合风险 高(可切分到很细) 低(多树平均降低方差)
可解释性 好(一棵树可画出) 差(森林是黑箱)
训练方式 单棵 每棵树可并行训练
特征重要性 无 可输出

银行应用:信用评分/违约预测(输出违约概率)、交易反欺诈(正常/异常分类)。风控场景尤其看重"特征重要性"——能回答"哪些因素对违约影响最大"。

速记:随机森林 = Bagging + 决策树;两个随机(样本随机、特征随机);分类投票、回归平均。


🟡 本分册解释为通用计算机知识补充,可能与你老师讲的不完全一致;专业范围以《考试大纲》"金融监管计算机类"部分为准。

09_考前必背清单.md

考前必背清单

数据库

  1. 事务四特性:原子性、一致性、隔离性、持久性。
  2. 四种隔离级别对应脏读、不可重复读、幻读。
  3. 死锁四条件:互斥、请求保持、不可剥夺、循环等待。
  4. 候选码 = 能唯一标识记录的最小字段集;主键 = 选定的候选码;外键引用别的表的主码,值为空或存在于被参照表(主码管唯一,外码管引用)。
  5. 数据管理三阶段:人工管理 → 文件系统 → 数据库系统。
  6. WHERE 筛行,HAVING 筛组;聚合条件放 HAVING。
  7. 三级模式(外模式/模式/内模式)+ 两级映像:外模式/模式映像保逻辑独立性,模式/内模式映像保物理独立性。
  8. E-R 转关系模式:1:n 并入 n 端;m:n 必须独立建表,组合主键。
  9. 完整性约束 = 保证数据正确、有效、一致的规则;三类是实体(主键非空且唯一)、参照(外键引用有效)、用户定义(业务规则)。主键是码,主键约束实施实体完整性;常见具体约束还有 UNIQUE、NOT NULL、CHECK、DEFAULT。
  10. 视图是虚表只存定义;含聚合/JOIN 的视图不可直接更新。
  11. 事务日志先写日志后写数据(WAL):redo 保持久性,undo 保原子性。
  12. 查询不写入事务日志;查询行为由审计日志/慢查询日志记录,用于合规与调优,不用于故障恢复。
  13. 范式口诀:1NF 装一个值,2NF 别只靠半个码(消部分依赖),3NF 别绕道(消传递依赖)。
  14. 等值连接:指定列相等、不要求同名、连接列出现两次;自然连接:所有同名列自动连接并去重,连接列只出现一次。

网络与操作系统

  1. TCP 三次握手、四次挥手。
  2. TCP 可靠,UDP 快但不保证可靠。
  3. HTTPS = HTTP + TLS,默认端口 443。
  4. RIP 距离向量:跳数为度量,15 跳可达、16 跳不可达(无穷大,防计数到无穷),适合小型网络;OSPF 链路状态:开销为度量,无跳数限制、收敛快,适合大中型网络。速记:"15 可达,16 完蛋"。
  5. 子网计算四步:主机位 = 32 − 前缀;块大小 = 2^主机位;网络地址 = 主机位全 0(区间起点);广播地址 = 网络地址 + 块大小 − 1(主机位全 1)。
  6. DNS 记录:A = 域名→IPv4,AAAA = 域名→IPv6,CNAME = 别名,MX = 邮件,PTR = IP 反查域名;递归 = 代替客户端查到底,迭代 = 只返回下一级服务器地址。
  7. ICMP = 差错报告 + 诊断(ping);ARP = IP↔MAC;NAT = 公私网地址转换;DHCP = 动态分配 IP。
  8. CSMA/CD = 有线以太网:先听后说、边听边说、冲突停发、随机延迟后重发;无线局域网用 CSMA/CA(冲突避免)。
  9. 进程是资源分配单位,线程是调度单位。
  10. 分页:虚拟地址 = 虚拟页号 + 页内偏移;页表完成虚拟页号到物理页框号的映射,偏移不变;快表缓存近期映射,快表未命中不等于缺页,页表也找不到且页面不在内存才发生缺页。
  11. 页面置换:FIFO 可能 Belady 异常,LRU 淘汰最近最少使用,OPT 理论最优,Clock 是 LRU 近似。
  12. 流水线冒险三类:结构冒险(争硬件资源→Cache 分开)、数据冒险(结果未写回→转发为主,load-use 仍可能停顿,RAW 最常见)、控制冒险(分支转向未定→分支预测,猜错清空重来);k 段流水线 n 条指令耗时约 (k+n−1)t,性能提升主要体现在吞吐率。

数据结构与算法

  1. 二分查找 O(log n),哈希平均 O(1),快排平均 O(n log n)。
  2. B+ 树适合数据库索引,哈希不适合范围查询。
  3. 广义表 = 线性表推广(元素可为原子或子表);长度 = 最外层元素数,深度 = 括号最大嵌套层数;表头 = 第一个元素(原子或子表),表尾 = 剩余元素组成的表(永远是表,多套一层括号);取第 k 个元素 = 取 k−1 次表尾再取 1 次表头。

架构与分布式

  1. CAP:一致性、可用性、分区容错性。
  2. MapReduce = Map 分 + Reduce 合;Spark 基于内存计算,适合迭代/机器学习;批处理(日终跑批)vs 流处理(实时风控)。

信息安全

  1. AES 是对称加密,RSA/ECC 是非对称加密。
  2. 哈希不可逆,主要用于完整性校验等。
  3. SQL 注入用参数化查询防御。
  4. 防火墙管"门禁"(网络层访问控制):能挡外部未授权访问、缓解部分 DoS;不能查杀病毒(防病毒软件的活)、难防内部攻击、防不了内容层攻击(需 WAF/IPS 配合)。

银行科技

  1. RTO 是恢复时间,RPO 是数据丢失容忍点。
  2. IaaS/PaaS/SaaS = Infrastructure/Platform/Software as a Service,客户自管的部分从 IaaS 到 SaaS 递减。
  3. 数据挖掘五大任务:分类(有监督,离散)、回归(有监督,连续)、聚类(无监督,K-Means)、关联规则(Apriori,支持度+置信度)、异常检测(反欺诈);逻辑回归是评分卡标配(名字带回归,干分类的活);随机森林 = Bagging + 决策树,分类投票、回归平均。
  4. 三道防线:业务部门、风险合规部门、内部审计。
  5. 银行科技题经常从"安全、稳定、合规、连续性、最小权限、审计留痕"角度选择答案。