本文件是专业课速记原文迁移的审计基准,按源文件顺序完整保留十份原文;新增的一级标题仅用于分隔源文件,原文不压缩、不删减、不改写。
00_复习总览.md¶
中国银行信息科技岗位笔试 · 复习总览¶
适用:临考冲刺复习,按模块分册。
一、复习优先级¶
- 数据库与 SQL
- 计算机网络
- 操作系统与并发
- 数据结构与算法
- 软件工程、系统架构与项目管理
- 信息安全及信息科技风险管理
- 云计算、大数据、人工智能基础
优先掌握"概念辨析 + 高频计算 + 场景判断"。
二、分册目录¶
| 分册 | 文件 |
|---|---|
| 数据库与 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 元:
- 从账户 A 扣除 1,000 元。
- 给账户 B 增加 1,000 元。
- 两步都成功后提交;任何一步失败就全部撤销。
这说明数据库概念不是孤立定义,而是用来保证银行交易不出错。
- 原子性:扣款和入账必须一起成功或一起失败,不能只扣款不入账。
- 一致性:转账前后金额关系正确,A 少 1,000,B 多 1,000,总金额不凭空增加或减少。
- 隔离性:多笔转账同时进行时,彼此不能读取不完整的中间状态。
- 持久性:系统显示转账成功后,即使服务重启,交易结果也不能消失。
典型处理逻辑:
中途失败时执行 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。双方互相等待对方释放锁,就卡住了。死锁成立的四个必要条件:
- 互斥
- 请求并保持
- 不可剥夺
- 循环等待
银行场景:转账必须放在同一个事务中,否则可能出现扣款成功但入账失败。
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. 码:候选码与外码(外键)¶
候选码:在一张表里,能唯一确定一条记录,而且已经"精简到不能再删字段"的字段组合。
判断分两步:
- 这个字段或字段组合能否唯一确定一行?
- 是否最小?去掉其中任意一个字段后,都不能再唯一确定一行?
同时满足才是候选码。
示例(账户表):
| 客户号 | 账号 | 客户姓名 | 手机号 |
|---|---|---|---|
| C101 | A001 | 林晓 | 138… |
| C101 | A002 | 林晓 | 138… |
- 假设每个账号全局唯一,则
{账号}是候选码。 {客户号, 账号}也能唯一标识记录,但客户号是多余的(去掉后账号仍唯一),因此不是候选码。
相关概念辨析:
- 超码:能唯一标识一行即可,不要求最小。例:
{账号, 客户姓名}是超码但不是候选码。 - 候选码:最小超码,一个表可能有多个。
- 主码(主键):从候选码中选定的主要标识。
- 主属性:至少属于一个候选码的属性。
- 非主属性:不属于任何候选码的属性。
例:客户表中"客户号"和"身份证号"都能独立唯一标识客户,则二者都是候选码;设计时可选客户号作主键,身份证号作唯一键。
速记:候选码 = 能唯一标识记录的最小字段集;主键 = 选定的候选码。
外码(外键,Foreign Key)¶
定义:外码是本表中引用另一张表主码(或候选码)的字段或字段组合。设 F 是关系 R 中的属性(组),若 F 与关系 S 的主码相对应,则 F 是 R 的外码;R 称为参照关系,S 称为被参照关系。
判断要点:
- 外码是"站在本表角度"对别的表主码的引用,方向是"我引用你"。
- 外码的取值:要么为空(若允许 NULL),要么必须等于被参照表中已存在的主码值——这正是参照完整性。
- 外码在自身表中不要求是候选码;一张表可以有多个外码。
银行例子:
| 表 | 字段 | 角色 |
|---|---|---|
| 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:1 联系:可与任意一端实体合并(在合并端加入另一端的主键作外键);也可独立成表。
- 1:n 联系:合并到 n 端(n 端加入 1 端的主键作外键);也可独立成表(主键取 n 端的主键)。
- m:n 联系:必须独立成关系模式,其主键 = 两端实体主键的组合,联系自身的属性(如份额、数量)也放入该表。
银行例子:
- 客户(1:n)账户:一个客户多个账户 → 账户表加
customer_id外键,不必单独建表。 - 账户(m:n)理财产品:一个账户可买多只产品,一只产品被多个账户持有 → 必须单独建持有表:
考试易错点:
- 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(网点编号, 网点名称, 网点电话)。
判断流程速记¶
- 每个字段不可再分?→ 满足 1NF(原子性)。
- 非主属性完全依赖候选码(没有只依赖复合码一半的)?→ 满足 2NF(消部分依赖)。
- 非主属性直接依赖候选码(没有绕道其他非主属性的)?→ 满足 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)是数据库实施实体完整性的一种约束,要求主键唯一且非空。
- 因此,若题目问“主键属于哪类完整性约束”,答案是:实体完整性;若问“主键是不是一种码”,答案是:主键是从候选码中选定的码。
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 易混点¶
- 主键不是完整性约束类别,但主键约束属于实体完整性。
- 唯一性不等于主键:
UNIQUE列通常允许 NULL(具体行为依数据库而异),主键不允许 NULL 且每张表通常只能定义一个主键。 - 外键不一定唯一:多个交易可以引用同一个客户;外键主要保证“引用对象存在”。
- 外键为 NULL 不等于引用错误:若业务允许空值,NULL 表示暂未建立引用关系;若列声明
NOT NULL,才禁止为空。 - CHECK 约束通常只能直接检查当前行条件;跨行、跨表的复杂规则常需断言、触发器或业务代码。
- 完整性约束与安全控制不同:约束保证数据合法,权限控制保证用户有权操作,二者不能混为一谈。
11.6 参照完整性动作¶
违反参照完整性时的处理(删除/更新被参照记录时):
RESTRICT/NO ACTION:拒绝执行(常见默认行为)。CASCADE:级联删除或更新关联记录。SET NULL:把引用端外键置空(外键列需允许NULL)。
场景例:客户注销时,若仍有账户或交易记录,默认 RESTRICT 会拒绝删除,避免交易记录失去关联。
速记:实体管主键,参照管外键,用户定义管业务;主键是码,主键约束才是约束。
12. 视图(VIEW)¶
定义:视图是基于基表的查询定义的虚表。数据库只存视图的定义(SQL 语句),不存实际数据;查询视图时实时从基表取数。
优点:
- 简化查询:把复杂 JOIN、聚合封装成一个简单的视图名,业务方直接
SELECT * FROM v_customer_balance。 - 安全控制:只暴露部分行、列。柜员视图只含账号、户名、余额,隐藏身份证号、风险评级等敏感字段;不同岗位绑定不同视图,实现"按角色看数据"。
- 逻辑独立性:基表结构变化时修改视图定义,应用程序仍照常查询视图,无需改动。
限制与易考点:
- 视图是虚表,本身不存储数据。
- 含聚合函数、GROUP BY、DISTINCT 或多表 JOIN 的视图不能直接 INSERT/UPDATE/DELETE;只有映射单个基表、直接对应行列子集的简单视图才可更新。
DROP VIEW只删除视图定义,不影响基表数据。
13. 索引(场景:像账户目录,帮助快速定位记录)¶
索引既是逻辑对象,也是物理存储结构¶
逻辑上,索引是数据库中的一种辅助访问对象:用户通过 CREATE INDEX 指定在哪些列上建立索引,查询优化器可以选择利用它加快检索。
物理上,索引会真实存储在磁盘或 SSD 中,通常组织为 B+ 树节点、哈希桶、索引页,以及指向数据记录的键值或指针。因此索引会占用存储空间。
这体现了物理数据独立性:底层改变索引结构或存储方式时,应用通常仍使用相同的 SQL。
场景:没有索引时,查一个账号可能要逐行扫描整张表;有索引时,先通过索引定位,再读取对应记录。
- B+ 树索引像按顺序整理的目录,适合查单个值,也适合范围查询,例如"查询本月交易"。
- 哈希索引像按键直接找位置,适合精确匹配账号,但不适合按日期范围查找。
- 联合索引最左匹配:建了
(customer_id, create_time)索引,按customer_id或customer_id + create_time查询通常能利用它;只按create_time查询则不一定。 - 索引不是越多越好:交易表每新增一个索引,插入和更新时也要维护它,写入会变慢。
- 对索引字段做函数处理,可能让数据库难以直接使用索引。
14. SQL 高频点(场景:统计客户月交易总额)¶
场景:统计每个客户本月交易总额,只看总额超过 10,000 元的客户。
执行顺序理解:
WHERE:先筛出本月交易(分组前过滤行)。GROUP BY:按客户分组。SUM:计算每位客户的交易总额。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)
易错点:
- 自然连接自动匹配同名列——若两表有多个同名列会全部参与比较,易出事故,生产环境慎用
NATURAL JOIN,写显式ON更安全。 - 自然连接属于内连接:无匹配的行被丢弃;要保留无匹配行需用外连接(LEFT/RIGHT JOIN)。
- 笛卡尔积(
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 七层¶
- 物理层
- 数据链路层
- 网络层
- 传输层
- 会话层
- 表示层
- 应用层
| 协议 | 所属层次 | 作用 |
|---|---|---|
| HTTP/HTTPS | 应用层 | Web 通信 |
| DNS | 应用层 | 域名解析 |
| FTP | 应用层 | 文件传输 |
| TCP/UDP | 传输层 | 端到端传输 |
| IP | 网络层 | 寻址与路由 |
| ARP | 网络层附近 | IP 找 MAC |
| ICMP | 网络层 | 差错报告与连通性诊断(ping) |
| Ethernet | 数据链路层 | 局域网帧传输 |
2. TCP 与 UDP¶
TCP:
- 面向连接。
- 可靠、有序、无重复。
- 有流量控制和拥塞控制。
- 适合银行交易、文件传输、网页请求。
UDP:
- 无连接。
- 不保证可靠性和顺序。
- 开销小、速度快。
- 适合直播、实时音视频、DNS 等场景。
3. TCP 三次握手¶
- 客户端发送
SYN。 - 服务端回复
SYN + ACK。 - 客户端回复
ACK。
作用:确认双方发送和接收能力正常,避免历史连接请求造成误建立。
4. TCP 四次挥手¶
- 主动关闭方发送
FIN。 - 对方回复
ACK。 - 对方处理完数据后发送
FIN。 - 主动关闭方回复
ACK。
TIME_WAIT 的作用:
- 保证最后 ACK 能够到达。
- 等待旧连接中的报文在网络中过期。
5. IP 与子网¶
IPv4 地址长度为 32 位。
/24:255.255.255.0,可用主机地址通常为 254 个。/26:255.255.255.192,每个子网 64 个地址,通常可用主机地址 62 个。/30:常用于点到点链路,通常可用主机地址 2 个。
子网划分与广播地址计算(高频计算题)¶
三种特殊地址(看主机位的二进制):
- 网络地址:主机位全 0 → 标识网段本身,不能分给主机。
- 广播地址:主机位全 1 → 发给它 = 向本网段所有主机广播,不能分给主机。
- 可用主机地址:两者之间的地址。
四步解题法:
- 定主机位:主机位 = 32 − 前缀长度。
- 算块大小:块大小 = 2^主机位,即每个子网包含的地址总数。
- 找网段起点:从 0 开始按块大小跳(0, 16, 32, …),看 IP 落入哪个区间,区间起点就是网络地址。
- 算广播地址:广播地址 = 网络地址 + 块大小 − 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 为例):
- 客户端问本地 DNS:"www.bank.cn 的 IP 是?"——对客户端是递归(本地 DNS 代劳到底)。
- 本地 DNS 问根服务器 → 根答"去问 .cn 顶级服务器"(迭代:只指路)。
- 问顶级服务器 → 指向 bank.cn 的权威服务器。
- 问权威服务器 → 拿到最终 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)的介质访问控制方法。
核心工作原理(十六字口诀):
先听后说,边听边说,冲突停发,随机延迟后重发。
- 先听后说:发送前先侦听信道,信道空闲才立即发送(不是发完才听)。
- 边听边说:边发送边侦听,检测是否发生冲突。
- 冲突停发:一旦检测到冲突,立即停止发送。
- 随机延迟后重发:冲突后不是立即重传,而是按二进制指数退避算法等随机时间再发(立即重传只会再撞一次)。
高频易错点:
- 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)。程序的页可以装入物理内存中不连续的页框,由操作系统维护页表记录映射关系。
- 页:虚拟内存中的固定大小区块。
- 页框/页帧:物理内存中的固定大小区块,大小与页相同。
- 页表:记录“虚拟页号 → 物理页框号”的映射,以及存在位、权限、修改位等状态。
- 分页可消除外部碎片,但最后一页未用满时可能有少量内部碎片。
虚拟地址如何转换¶
虚拟地址通常拆成两部分:虚拟页号 + 页内偏移量。页内偏移在转换前后保持不变,页表或快表将虚拟页号转换为物理页框号,再与页内偏移组合成物理地址。
例:页大小为 4 KB,则页内偏移需要 12 位(4 KB = 2^12);虚拟地址低 12 位是页内偏移,其余高位用于虚拟页号。页大小为 2 的幂,页号与偏移可通过位划分得到。
快表(TLB)¶
快表是处理器中用于缓存近期页表映射的高速小型硬件缓存。它缓存的是虚拟页号到物理页框号的映射,不是整个进程,也不是磁盘数据。
地址转换过程:
- CPU 产生虚拟地址,硬件先用 VPN 查 TLB。
- TLB 命中:直接取得 PFN,与页内偏移组合成物理地址,速度快。
- TLB 未命中:到内存中的页表查映射;若该页在内存中,把映射装入 TLB 后继续访问。
- 页表显示该页不在内存时,发生缺页异常/缺页中断;操作系统从磁盘调入页面,更新页表,必要时置换其他页面,再重新执行引发缺页的指令。
| 事件 | 含义 | 后果 |
|---|---|---|
| TLB 命中 | 快表中找到 VPN→PFN | 快速完成地址转换 |
| TLB 未命中 | 快表没找到映射 | 查内存中的页表;页面可能仍在内存 |
| 缺页 | 页表表明页面不在物理内存 | 需要操作系统从后备存储调页,代价远高于 TLB 未命中 |
关键辨析:TLB 未命中不等于缺页。未命中只表示“快表没有缓存映射”;只有页表也表明页面不在内存,才需要缺页处理。
TLB 与页表的配合¶
- 页表通常保存在主存中,容量可以较大,但访问它会增加地址转换开销。
- TLB 是速度更快但容量较小的缓存,利用程序访问的时间局部性和空间局部性提高地址转换速度。
- TLB 命中率越高,平均地址转换开销通常越低。
- 进程切换时,若不同进程的地址空间映射不同,需要通过地址空间标识(ASID)区分 TLB 项,或刷新部分/全部 TLB;具体由处理器机制决定。
分页的优缺点与相关概念¶
- 优点:物理内存可不连续分配;消除外部碎片;便于实现虚拟内存和内存保护。
- 代价:页表占用内存;地址转换增加开销;页未用满会产生内部碎片;缺页时磁盘 I/O 代价很高。
- 请求分页:页面只有在被访问且不在内存时才调入,属于虚拟内存常见机制。
- 页面置换:内存没有空闲页框时,选择页面换出,为新页腾出空间;置换算法不等同于 TLB 替换策略。
4. 页面置换算法¶
缺页且没有空闲页框时,操作系统需要选一个内存页面换出:
- FIFO:先进先出,可能出现 Belady 异常。
- LRU:淘汰最近最少使用页面。
- OPT:淘汰未来最长时间不会使用的页面,理论最优,但实际无法准确知道未来。
- Clock:LRU 的近似实现。
4. 死锁¶
死锁四个必要条件:
- 互斥
- 请求并保持
- 不可剥夺
- 循环等待
处理方法:
- 预防死锁:破坏必要条件。
- 避免死锁:银行家算法。
- 检测与恢复:允许发生,定期检测并处理。
- 忽略:某些通用操作系统的实际策略。
5. 进程通信¶
常见方式:管道、消息队列、共享内存、信号量、Socket。
共享内存速度快,但需要配合锁或信号量解决并发问题。
6. 指令流水线与流水线冒险¶
指令流水线:把一条指令的执行拆成多个阶段(经典五段:取指 IF → 译码 ID → 执行 EX → 访存 MEM → 写回 WB),不同指令的不同阶段重叠执行——像工厂装配线,每个工位只干一道工序,多条指令同时在流动,整体吞吐量大幅提高。
流水线冒险(Hazard):因为某种冲突,下一条指令无法在预定的时钟周期继续执行,流水线"卡壳"。共三类(必背):
| 冒险类型 | 原因 | 例子 | 主要对策 |
|---|---|---|---|
| 结构冒险 | 多条指令争用同一硬件资源 | 取指和访存指令同时要用同一个存储器 | 资源重复设置:指令 Cache 与数据 Cache 分开 |
| 数据冒险 | 后一条指令要用前一条的结果,结果还没写回 | ADD 算出 R1,紧跟的 SUB 立刻要用 R1 |
转发/旁路(结果直接送下游,不等写回)、插入停顿(气泡)、编译器调整指令顺序 |
| 控制冒险 | 分支/跳转改变执行流,转向目标确定前已取错指令 | if 判断还没出结果,下一条取顺序指令还是跳转目标? | 分支预测(猜方向,猜错作废重来)、尽早算出分支结果 |
银行柜面类比(帮助记忆):
- 流水线 = 柜面流水作业:填单 → 审核 → 录入 → 出钞,四个柜员同时各服务一位客户的不同环节。
- 结构冒险:两位客户同时要用同一台验钞机——对策是多配一台设备(资源重复)。
- 数据冒险:录入岗等审核岗的结论,审核没完只能干等——对策是结论直接口头递过去(转发),不用等归档完再查(写回)。
- 控制冒险:客户中途改主意"不取了,改存款",已经准备好的出钞动作作废重来(预测失败清空流水线)。
高频考点:
- 数据冒险里 RAW(写后读)最常见:后一条指令读了前一条尚未写入的寄存器;WAR(读后写)、WAW(写后写)在按序流水线中较少出现。
- 转发(Forwarding / 旁路)是数据冒险的主要解法,停顿(Stall / 气泡)是补充手段——纯靠停顿性能损失太大。
- 分支预测猜对零代价,猜错清空流水线重来(控制冒险的代价来源)。
流水线性能计算¶
设流水线有 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 的结果通常要到 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 浮点数通常表示为:
| 类型 | 总位数 | 符号位 | 阶码 | 尾数字段 | 阶码偏置 |
|---|---|---|---|---|---|
| 单精度 | 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,把虚拟地址转换为物理地址,并检查访问权限。
一次分页地址转换可概括为:
- CPU 生成虚拟地址,MMU 将其拆成虚拟页号和页内偏移。
- MMU 先查 TLB;命中时直接取得物理页框号。
- TLB 未命中时查页表。页表显示页面在内存中,就取得物理页框号并更新 TLB。
- 页表显示页面不在内存中时,触发缺页异常,由操作系统调入页面、更新页表后重新执行访问。
- 物理页框号与不变的页内偏移组合成物理地址,再完成访问。
例子:虚拟地址由虚拟页号 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。
三个易错点¶
- 表尾永远套一层括号:GetTail((a, (b, c))) = ((b, c)),不是 (b, c)。
- 空表不能取表头表尾:() 没有第一个元素,运算无意义。
- 表头可以是原子或子表,表尾一定是表——两者类型不对称,这是与"第一个元素/其余元素"直觉的最大区别。
存储结构:广义表常用链式存储(头尾指针存储法),原子节点与表节点分开表示。
银行场景类比:客户资产清单 = (活期存款, (股票组合A, (债券, 国债逆回购)), 黄金)——清单里既有单笔资产(原子),也有整包的投资组合(子表),组合里还能再嵌套组合。
3. 排序特点¶
- 稳定排序:相同关键字元素的相对顺序不变。
- 归并排序、插入排序、冒泡排序稳定。
- 快速排序、堆排序通常不稳定。
3. 树¶
- 二叉搜索树:左子树所有节点小于根,右子树所有节点大于根。
- 二叉搜索树中序遍历结果是递增序列。
- 大顶堆:根节点最大;小顶堆:根节点最小。
- AVL 树通过旋转保持平衡。
- B+ 树常用于数据库索引和文件系统。
4. 图算法¶
- BFS:广度优先,适合求无权图最短路径。
- DFS:深度优先,适合遍历、连通性、拓扑相关问题。
- Dijkstra:非负权图单源最短路。
- Floyd:多源最短路,复杂度通常为 O(n³)。
- Kruskal、Prim:最小生成树。
- 拓扑排序:有向无环图。
🟡 本分册解释为通用计算机知识补充,可能与你老师讲的不完全一致;专业范围以《考试大纲》"金融监管计算机类"部分为准。
05_软件工程与系统架构.md¶
软件工程与系统架构¶
1. 软件开发模型¶
- 瀑布模型:阶段清晰,需求变更成本高。
- 增量模型:分批交付功能。
- 螺旋模型:强调风险分析,适合大型复杂项目。
- 敏捷开发:快速迭代、持续交付、拥抱变化。
- Scrum 常见角色:Product Owner、Scrum Master、开发团队。
2. 软件测试¶
测试层次:
- 单元测试
- 集成测试
- 系统测试
- 验收测试
测试类型:
- 黑盒测试:关注输入输出,不关注内部实现。
- 白盒测试:关注代码逻辑和路径。
- 回归测试:修改后重新测试,确认原有功能未被破坏。
- 压力测试:高负载下观察系统表现。
- 性能测试:关注响应时间、吞吐量、并发数等。
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. 三道防线¶
- 第一道防线:业务和技术部门,直接承担风险管理责任。
- 第二道防线:风险管理、合规等部门,进行监督和指导。
- 第三道防线:内部审计,独立评价前两道防线。
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 两个阶段(高频考点):
- Map(映射):把大任务拆成小任务,分给多个节点并行处理。
- 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. 呈现部署 | 转成可用形式,嵌入业务流程 | 输出评分卡嵌入信贷审批系统 |
两个考试细节:
- 数据预处理最耗时,实践中约占 60%~80% 的工作量(行话:"数据挖掘就是 80% 的时间在洗数据")。
- 数据挖掘不是一步到位,而是"建模—评估"反复迭代的过程。
五大任务(先判断任务类型,再选算法):
五大任务就是上面流程图第 ④ 步"建模挖掘"阶段里做的事:KDD 流程回答"按什么顺序做",五大任务回答"这一步具体挖出什么样的规律"。第 1 步定义业务问题时先选定任务类型,第 4 步再选具体算法实现它。
三层结构:业务问题 → 任务类型 → 具体算法。
业务问题 任务类型 具体算法 预测客户违约 分类 逻辑回归、决策树、随机森林 预测授信额度 回归 线性回归 客户分群营销 聚类 K-Means 搭配销售推荐 关联规则 Apriori 反欺诈、反洗钱 异常检测 离群点检测 一句话:任务决定挖什么规律,算法决定用什么工具挖。前两步(收集、预处理)为这一步备好干净原料,后两步(评估、部署)检验并使用挖出来的规律。
易错点:逻辑回归名字带"回归",干的是分类的活——它输出 0~1 的概率,再按阈值贴"违约 / 不违约"标签,所以属于分类算法。
| 任务 | 监督? | 输出 | 银行场景 |
|---|---|---|---|
| 分类 Classification | 有监督 | 离散类别 | 信用评分:违约 / 不违约 |
| 回归 Regression | 有监督 | 连续数值 | 预测收益、授信额度 |
| 聚类 Clustering | 无监督 | 自动分组 | 客户分群营销 |
| 关联规则 Association | — | "有 A 则有 B" 规律 | 交叉销售 |
| 异常检测 Anomaly Detection | 无监督为主 | 异常记录 | 反欺诈、反洗钱 |
分类经典算法:
- 决策树(Decision Tree):一问一答层层分支。代表:ID3(信息增益)、C4.5(信息增益率)、CART(基尼系数)。优点:可解释性强。
- KNN(K 近邻,K-Nearest Neighbors):新样本看最近的 K 个邻居属于哪类就判哪类。懒惰学习、无需训练,但预测时要算大量距离。
- 朴素贝叶斯(Naive Bayes):假设特征条件独立,用先验概率做推断。垃圾邮件分类的经典方法。
- 逻辑回归(Logistic Regression):输出 0~1 之间的概率,银行评分卡的标配——输出违约概率。
- SVM(支持向量机,Support Vector Machine):寻找最大间隔的分类边界,核技巧处理非线性问题。
- 神经网络(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 流派的代表方法,基学习器是决策树,属于监督学习。
核心思想:训练多棵决策树组成"森林",各自预测后汇总——分类问题投票(少数服从多数),回归问题取平均。
两个"随机"(高频考点):
- 样本随机:每棵树用 Bootstrap 有放回抽样的样本训练。
- 特征随机:每次节点分裂时,只从随机抽取的特征子集中选最优分裂特征。
正是这两层随机性让每棵树"各有侧重",汇总后互相抵消误差、降低方差。
对比单棵决策树:
| 单棵决策树 | 随机森林 | |
|---|---|---|
| 过拟合风险 | 高(可切分到很细) | 低(多树平均降低方差) |
| 可解释性 | 好(一棵树可画出) | 差(森林是黑箱) |
| 训练方式 | 单棵 | 每棵树可并行训练 |
| 特征重要性 | 无 | 可输出 |
银行应用:信用评分/违约预测(输出违约概率)、交易反欺诈(正常/异常分类)。风控场景尤其看重"特征重要性"——能回答"哪些因素对违约影响最大"。
速记:随机森林 = Bagging + 决策树;两个随机(样本随机、特征随机);分类投票、回归平均。
🟡 本分册解释为通用计算机知识补充,可能与你老师讲的不完全一致;专业范围以《考试大纲》"金融监管计算机类"部分为准。
09_考前必背清单.md¶
考前必背清单¶
数据库¶
- 事务四特性:原子性、一致性、隔离性、持久性。
- 四种隔离级别对应脏读、不可重复读、幻读。
- 死锁四条件:互斥、请求保持、不可剥夺、循环等待。
- 候选码 = 能唯一标识记录的最小字段集;主键 = 选定的候选码;外键引用别的表的主码,值为空或存在于被参照表(主码管唯一,外码管引用)。
- 数据管理三阶段:人工管理 → 文件系统 → 数据库系统。
- WHERE 筛行,HAVING 筛组;聚合条件放 HAVING。
- 三级模式(外模式/模式/内模式)+ 两级映像:外模式/模式映像保逻辑独立性,模式/内模式映像保物理独立性。
- E-R 转关系模式:1:n 并入 n 端;m:n 必须独立建表,组合主键。
- 完整性约束 = 保证数据正确、有效、一致的规则;三类是实体(主键非空且唯一)、参照(外键引用有效)、用户定义(业务规则)。主键是码,主键约束实施实体完整性;常见具体约束还有 UNIQUE、NOT NULL、CHECK、DEFAULT。
- 视图是虚表只存定义;含聚合/JOIN 的视图不可直接更新。
- 事务日志先写日志后写数据(WAL):redo 保持久性,undo 保原子性。
- 查询不写入事务日志;查询行为由审计日志/慢查询日志记录,用于合规与调优,不用于故障恢复。
- 范式口诀:1NF 装一个值,2NF 别只靠半个码(消部分依赖),3NF 别绕道(消传递依赖)。
- 等值连接:指定列相等、不要求同名、连接列出现两次;自然连接:所有同名列自动连接并去重,连接列只出现一次。
网络与操作系统¶
- TCP 三次握手、四次挥手。
- TCP 可靠,UDP 快但不保证可靠。
- HTTPS = HTTP + TLS,默认端口 443。
- RIP 距离向量:跳数为度量,15 跳可达、16 跳不可达(无穷大,防计数到无穷),适合小型网络;OSPF 链路状态:开销为度量,无跳数限制、收敛快,适合大中型网络。速记:"15 可达,16 完蛋"。
- 子网计算四步:主机位 = 32 − 前缀;块大小 = 2^主机位;网络地址 = 主机位全 0(区间起点);广播地址 = 网络地址 + 块大小 − 1(主机位全 1)。
- DNS 记录:A = 域名→IPv4,AAAA = 域名→IPv6,CNAME = 别名,MX = 邮件,PTR = IP 反查域名;递归 = 代替客户端查到底,迭代 = 只返回下一级服务器地址。
- ICMP = 差错报告 + 诊断(ping);ARP = IP↔MAC;NAT = 公私网地址转换;DHCP = 动态分配 IP。
- CSMA/CD = 有线以太网:先听后说、边听边说、冲突停发、随机延迟后重发;无线局域网用 CSMA/CA(冲突避免)。
- 进程是资源分配单位,线程是调度单位。
- 分页:虚拟地址 = 虚拟页号 + 页内偏移;页表完成虚拟页号到物理页框号的映射,偏移不变;快表缓存近期映射,快表未命中不等于缺页,页表也找不到且页面不在内存才发生缺页。
- 页面置换:FIFO 可能 Belady 异常,LRU 淘汰最近最少使用,OPT 理论最优,Clock 是 LRU 近似。
- 流水线冒险三类:结构冒险(争硬件资源→Cache 分开)、数据冒险(结果未写回→转发为主,load-use 仍可能停顿,RAW 最常见)、控制冒险(分支转向未定→分支预测,猜错清空重来);k 段流水线 n 条指令耗时约
(k+n−1)t,性能提升主要体现在吞吐率。
数据结构与算法¶
- 二分查找 O(log n),哈希平均 O(1),快排平均 O(n log n)。
- B+ 树适合数据库索引,哈希不适合范围查询。
- 广义表 = 线性表推广(元素可为原子或子表);长度 = 最外层元素数,深度 = 括号最大嵌套层数;表头 = 第一个元素(原子或子表),表尾 = 剩余元素组成的表(永远是表,多套一层括号);取第 k 个元素 = 取 k−1 次表尾再取 1 次表头。
架构与分布式¶
- CAP:一致性、可用性、分区容错性。
- MapReduce = Map 分 + Reduce 合;Spark 基于内存计算,适合迭代/机器学习;批处理(日终跑批)vs 流处理(实时风控)。
信息安全¶
- AES 是对称加密,RSA/ECC 是非对称加密。
- 哈希不可逆,主要用于完整性校验等。
- SQL 注入用参数化查询防御。
- 防火墙管"门禁"(网络层访问控制):能挡外部未授权访问、缓解部分 DoS;不能查杀病毒(防病毒软件的活)、难防内部攻击、防不了内容层攻击(需 WAF/IPS 配合)。
银行科技¶
- RTO 是恢复时间,RPO 是数据丢失容忍点。
- IaaS/PaaS/SaaS = Infrastructure/Platform/Software as a Service,客户自管的部分从 IaaS 到 SaaS 递减。
- 数据挖掘五大任务:分类(有监督,离散)、回归(有监督,连续)、聚类(无监督,K-Means)、关联规则(Apriori,支持度+置信度)、异常检测(反欺诈);逻辑回归是评分卡标配(名字带回归,干分类的活);随机森林 = Bagging + 决策树,分类投票、回归平均。
- 三道防线:业务部门、风险合规部门、内部审计。
- 银行科技题经常从"安全、稳定、合规、连续性、最小权限、审计留痕"角度选择答案。