🏦 中国建设银行
信息技术岗笔试
八股文知识大全

2025–2026 校招/社招备考专用 · 零基础新手详细版

覆盖10大模块 · 含原理讲解 · 生活类比 · 典型例题 · 易错点提示

整理:Copilot  |  版本:2026年8月  |  建议配合真题练习使用

📋 目录

  1. 考情总览 —— 笔试结构、题型与备考误区
    1. 1.1 建行信息技术岗招聘流程
    2. 1.2 笔试题型与结构
    3. 1.3 各模块权重与备考优先级
    4. 1.4 新手备考常见误区
  2. 数据结构与算法 —— 从零开始理解每种结构
    1. 2.1 线性表
    2. 2.2 树与二叉树
    3. 2.3 图
    4. 2.4 排序算法(⭐⭐⭐⭐⭐)
    5. 2.5 查找算法
    6. 2.6 时间复杂度分析
  3. 数据库系统 —— SQL、事务、索引、NoSQL
    1. 3.1 关系型数据库基础
    2. 3.2 SQL语言(⭐⭐⭐⭐⭐)
    3. 3.3 事务 ACID 特性(⭐⭐⭐⭐⭐)
    4. 3.4 并发问题与隔离级别(⭐⭐⭐⭐)
    5. 3.5 数据库规范化(范式)
    6. 3.6 索引(⭐⭐⭐⭐)
    7. 3.7 NoSQL数据库
  4. 计算机网络 —— 七层模型、TCP/IP、HTTP/HTTPS
    1. 4.1 OSI七层模型 vs TCP/IP四层模型(⭐⭐⭐⭐⭐)
    2. 4.2 TCP vs UDP(⭐⭐⭐⭐⭐)
    3. 4.3 TCP三次握手与四次挥手(⭐⭐⭐⭐⭐)
    4. 4.4 HTTP / HTTPS(⭐⭐⭐⭐)
    5. 4.5 常见端口号速查(⭐⭐⭐)
    6. 4.6 DNS解析完整过程
  5. 操作系统 —— 进程、死锁、内存、调度
    1. 5.1 进程与线程(⭐⭐⭐⭐⭐)
    2. 5.2 进程调度算法(⭐⭐⭐⭐)
    3. 5.3 死锁(⭐⭐⭐⭐⭐)
    4. 5.4 内存管理(⭐⭐⭐⭐)
    5. 5.5 Linux常用命令(⭐⭐⭐)
    6. 5.6 同步与互斥(PV操作)
  6. 信息安全 —— 加密算法、攻击防御、等保2.0
    1. 6.1 加密算法(⭐⭐⭐⭐⭐)
    2. 6.2 数字签名与数字证书(⭐⭐⭐)
    3. 6.3 常见网络攻击与防御(⭐⭐⭐⭐)
    4. 6.4 等保2.0(金融行业必知⭐⭐⭐)
  7. 软件工程 —— Scrum、测试、设计模式
    1. 7.1 软件开发模型对比
    2. 7.2 Scrum敏捷框架(⭐⭐⭐⭐)
    3. 7.3 软件测试(⭐⭐⭐⭐)
    4. 7.4 设计模式(⭐⭐⭐)
  8. 编程语言 —— Java深度讲解 + Python核心
    1. 8.1 Java面向对象三大特征(⭐⭐⭐⭐)
    2. 8.2 Java核心考点
    3. 8.3 Java集合框架(⭐⭐⭐⭐)
    4. 8.4 Java多线程(⭐⭐⭐)
    5. 8.5 JVM内存模型(⭐⭐⭐)
    6. 8.6 Python核心要点(⭐⭐⭐)
  9. 分布式与金融新技术 —— 云计算、大数据、微服务、区块链
    1. 9.1 云计算(⭐⭐⭐⭐)
    2. 9.2 大数据技术栈(⭐⭐⭐)
    3. 9.3 微服务架构(⭐⭐⭐)
    4. 9.4 区块链与数字人民币(⭐金融科技)
    5. 9.5 AI在金融领域的应用(⭐)
  10. 建行专项与备考策略 —— 高频考点速记 + 四周冲刺计划
    1. 10.1 建设银行IT核心战略
    2. 10.2 银行IT岗必知金融科技概念
    3. 10.3 高频真题考点速记大全(⭐⭐⭐⭐⭐)
    4. 10.4 应试技巧(升级版)
    5. 10.5 四周冲刺计划(详细版)
    6. 10.6 考前一天速览清单(最高频30条)

第一章 · 考情总览

1.1 建行信息技术岗招聘流程

建设银行信息技术岗(科技类)招聘通常分为以下阶段:

  1. 网申:在建行官方招聘网站填写简历,选择"信息技术"或"科技"类岗位
  2. 笔试:包含行测(职业能力测试)+ 专业知识(计算机专业题)+ 英语,线上或线下进行
  3. 面试:分为初面(HR面)和技术面(专业知识+项目经验),部分岗位有群面
  4. 体检 + 背调:录用前进行标准体检和背景调查
  5. 录用:发放录用通知,签约入职
💡 重点提示:笔试是最大的筛人环节,专业知识分数直接决定能否进面试,务必认真备考。

1.2 笔试题型与结构

题型特点答题技巧
单选题4个选项选1个,最常见排除法,答完检查,切勿空题
多选题 ⚠️4-5个选项选多个,错选/少选/多选均0分只选100%确定的,宁少勿错
判断题对或错,有时错误不扣分留意绝对化词语,含"一定/全部/绝对"大概率为错
⚠️ 多选题陷阱:假设某题正确答案是ACD,你选了AB——0分!你选了AC——0分!只有完全选对才得分。策略:宁可只选一个确定的,也不要猜第二个。

1.3 各模块权重与备考优先级

模块大约占比重要度建议备考时间
数据结构与算法约20%⭐⭐⭐⭐⭐第一优先
数据库系统约20%⭐⭐⭐⭐⭐第一优先
操作系统约18%⭐⭐⭐⭐⭐第二优先
计算机网络约17%⭐⭐⭐⭐⭐第二优先
编程语言(Java/Python)约8%⭐⭐⭐⭐第三优先
软件工程约6%⭐⭐⭐⭐第三优先
信息安全约6%⭐⭐⭐⭐第三优先
金融科技/新技术约5%⭐⭐⭐第四优先

1.4 新手备考常见误区

第二章 · 数据结构与算法

这是建行笔试占比最高的模块,必须重点掌握。本章用大量例子和类比帮助你从零理解每种数据结构。

2.1 线性表

2.1.1 顺序表(数组)

🎭 生活类比:顺序表就像"电影院座位"——座位编号连续,你知道第5排3号在哪,直接去就行(随机访问O(1))。但如果要在第3排中间插一个新座位,后面所有座位都得往后挪(插入O(n))。

核心操作时间复杂度:

📝 【考题示例】一个顺序表有n个元素,删除第i个元素(1≤i≤n),需要移动多少个元素?
答案:n - i 个
解析:删除第i个元素后,第i+1、i+2、...、n个元素都要向前移动一位,共 n-i 个元素。
例:数组[A,B,C,D,E](n=5),删除第2个元素B(i=2),需把C、D、E前移,共 5-2=3 个元素移动。

2.1.2 链表

🎭 生活类比:链表就像"火车车厢"——每节车厢(节点)里装着货物(数据)和一个指向下一节车厢的"挂钩"(指针)。要找第5节车厢,只能从车头开始一节一节数过去(顺序访问O(n))。但要在两节车厢中间加一节新车厢,只需改动两个挂钩,非常方便(插入O(1))。
类型特点示意
单链表每个节点有数据域+next指针,只能向后遍历A→B→C→D→NULL
双链表每个节点有prev和next两个指针,可双向遍历NULL←A⇌B⇌C⇌D→NULL
循环链表尾节点的next指向头节点,形成环A→B→C→D→(回A)

头插法 vs 尾插法(⭐高频考点)

头插法:每次把新节点插到链表头部 → 最终链表顺序与插入顺序相反(逆序)

例:依次插入1,2,3,4 → 链表:4→3→2→1

尾插法:每次把新节点插到链表尾部 → 最终链表顺序与插入顺序相同(顺序)

例:依次插入1,2,3,4 → 链表:1→2→3→4

2.1.3 栈(Stack)

🎭 生活类比:栈就像"一叠盘子"——只能从顶部放盘子(入栈push)、从顶部取盘子(出栈pop)。最后放进去的盘子最先被取走,这就是后进先出(LIFO)原则。

栈的经典应用

📝 【考题示例】入栈序列为1,2,3,以下哪个不是合法的出栈序列?
A. 1,2,3   B. 3,2,1   C. 3,1,2   D. 2,1,3
答案:C(3,1,2不合法)
解析:若3先出栈,说明1,2,3已全部入栈。此时栈内从上到下是2,1。下一个只能出2,不能出1,所以3,1,2不合法。

2.1.4 队列(Queue)

🎭 生活类比:队列就像"银行排队窗口"——先来的先办理(先进先出FIFO),从队尾加入,从队头离开。

循环队列(⭐必考)

为了避免"假溢出"(数组没满但不能再插入),使用循环队列:

⚠️ 易错点:循环队列必须空出一个位置来判断队满,否则队满和队空条件相同(都是front==rear),无法区分!

2.2 树与二叉树

2.2.1 二叉树基本性质(⭐⭐⭐必考)

先记住关键术语:节点的度=它有几个子节点;叶节点=度为0(没有子节点)的节点;树的深度=树的层数。

性质公式例子验证
第i层最多节点数2i-1(i从1开始)第3层最多 2²=4 个节点
深度为k的二叉树最多节点数2k-1深度3最多 2³-1=7 个节点
叶节点数 = 度为2节点数+1n₀ = n₂ + 1见下方推导
完全二叉树深度⌊log₂n⌋ + 1n=7时深度=⌊log₂7⌋+1=3

n₀ = n₂ + 1 的推导(必须理解!)

设叶节点数=n₀,度为1的节点数=n₁,度为2的节点数=n₂,总节点数=n

2.2.2 二叉树遍历(⭐⭐⭐必考)

以下面这棵树为例说明三种遍历:

        A
       / \
      B   C
     / \   \
    D   E   F
  
遍历方式顺序结果记忆口诀
前序遍历根 → 左 → 右A, B, D, E, C, F"根"在最前
中序遍历左 → 根 → 右D, B, E, A, C, F"根"在中间
后序遍历左 → 右 → 根D, E, B, F, C, A"根"在最后
💡 重要结论:已知前序+中序可唯一确定一棵二叉树;已知后序+中序也可唯一确定。但已知前序+后序不能唯一确定(除非每个节点都有两个子节点)。
BST(二叉搜索树)的中序遍历结果是有序序列——这是判断BST的重要依据。

2.2.3 完全二叉树的数组存储(⭐)

完全二叉树可以用数组存储,节点i(从1开始编号)的:

2.2.4 堆(Heap)

🎭 生活类比:大根堆像"公司管理层"——每个管理者(父节点)的能力值都大于等于其下属(子节点)。老板(根节点)永远是能力最强的。

2.2.5 哈夫曼树(最优二叉树)

构造过程:给定权值,每次选两个最小权值的节点合并,重复直到只剩一个节点。

示例:权值为 {2, 3, 6, 8, 9},构造哈夫曼树:

  1. 选2和3合并 → 新节点权值5,当前集合:{5, 6, 8, 9}
  2. 选5和6合并 → 新节点权值11,当前集合:{8, 9, 11}
  3. 选8和9合并 → 新节点权值17,当前集合:{11, 17}
  4. 选11和17合并 → 新节点权值28(根节点)

哈夫曼编码是一种前缀编码,用于数据压缩(出现频率高的字符用短编码)。

2.3 图

2.3.1 图的基本概念

存储方式适用场景特点
邻接矩阵稠密图(边多)判断两点是否相邻O(1),空间O(V²)
邻接表稀疏图(边少)遍历邻居高效,空间O(V+E)

2.3.2 图的遍历

2.3.3 最短路径算法

算法适用复杂度特点
Dijkstra单源,非负权图O(V²) 或 O(ElogV)贪心策略,每次选最短的未访问节点
Floyd全源,允许负权(无负环)O(V³)动态规划,三重循环
Bellman-Ford单源,允许负权O(VE)可检测负权环

2.3.4 最小生成树

2.4 排序算法(⭐⭐⭐⭐⭐)

以数组 [5, 3, 8, 1, 9, 2] 为例,演示各排序算法:

2.4.1 冒泡排序

🎭 类比:每轮比较相邻元素,大的往后"冒泡",小的慢慢"沉底"。

第1趟:3,5,8,1,9,2 → 3,5,1,8,9,2 → 3,5,1,8,2,9(9到末尾)

第2趟:...最终 8 到倒数第二位

2.4.2 选择排序

🎭 类比:每轮从未排序部分选出最小值,放到已排序部分末尾。

第1轮:找最小值1,与第1位5交换 → [1,3,8,5,9,2]

第2轮:从[3,8,5,9,2]找最小2,与3交换 → [1,2,8,5,9,3]

2.4.3 插入排序

🎭 类比:打牌时把新摸的牌插入手牌中合适的位置,保持手牌有序。

初始已排序部分[5],取3→插入得[3,5],取8→[3,5,8],取1→[1,3,5,8],以此类推

2.4.4 快速排序(⭐必考)

🎭 类比:选一个"基准"元素,把比它小的都放左边,比它大的放右边,再对两边分别递归。

过程(以5为基准):

[5,3,8,1,9,2] → 左边[3,1,2],基准5,右边[8,9] → 递归处理两边

⚠️ 易错点:快速排序最坏情况O(n²),不是O(nlogn)!当输入已有序时退化。面试常考"什么时候快排最慢"。

2.4.5 归并排序

🎭 类比:把数组对半分,分到每组只有1个元素,然后两两有序合并,步步向上。

2.4.6 排序算法总结表(⭐⭐⭐⭐⭐必须背)

算法平均时间最坏时间空间稳定性
冒泡排序O(n²)O(n²)O(1)✅稳定
选择排序O(n²)O(n²)O(1)❌不稳定
插入排序O(n²)O(n²)O(1)✅稳定
希尔排序O(n^1.3)O(n²)O(1)❌不稳定
快速排序O(nlogn)O(n²)O(logn)❌不稳定
归并排序O(nlogn)O(nlogn)O(n)✅稳定
堆排序O(nlogn)O(nlogn)O(1)❌不稳定
计数排序O(n+k)O(n+k)O(k)✅稳定
💡 速记口诀:不稳定排序记"快选堆希"(快速、选择、堆、希尔)。最坏情况仍为O(nlogn)的只有归并和堆排序

2.5 查找算法

2.5.1 折半查找(二分查找)

🎭 类比:在字典里查"排"字,不是从第一页翻,而是翻到中间→发现中间是"名"→"排"在后半段→再翻后半段中间…每次缩小一半范围。

前提:必须是有序数组

示例:在 [1,3,5,7,9,11,13] 中查找 7

  1. mid = (0+6)/2 = 3,arr[3]=7,找到!返回下标3

查找 11 的过程:

  1. mid=3,arr[3]=7 < 11,搜索右半 [9,11,13]
  2. mid=5,arr[5]=11,找到!

2.6 时间复杂度分析

时间复杂度描述算法运行时间随数据规模增大的增长趋势,用大O表示法。

常见复杂度从小到大:

O(1) < O(logn) < O(n) < O(nlogn) < O(n²) < O(n³) < O(2ⁿ)

复杂度n=100时约运行次数典型算法
O(1)1次数组随机访问、哈希表查找
O(logn)7次二分查找
O(n)100次顺序查找、单层循环
O(nlogn)664次快速排序(平均)、归并排序
O(n²)10,000次冒泡、选择、插入排序
O(2ⁿ)约1千亿亿次穷举所有子集
📝 【计算示例】以下代码段时间复杂度是多少?
for i in range(n): for j in range(n): print(i,j)
答案:O(n²)——外层循环n次,内层循环n次,共n×n次操作。

第三章 · 数据库系统

3.1 关系型数据库基础

🎭 类比:关系型数据库就像一个大型Excel工作簿——每张工作表是一张"表",每行是一条"记录",每列是一个"字段",表与表之间通过"外键"关联。

核心概念

三大完整性约束

约束类型含义示例
实体完整性主键不能为NULL,不能重复银行账号不能为空,不同账户不能有相同账号
参照完整性外键值必须在被参照表中存在(或为NULL)转账记录里的账户ID必须在账户表中存在
用户定义完整性业务规则约束账户余额不能为负数,年龄必须在0-150之间

3.2 SQL语言(⭐⭐⭐⭐⭐)

3.2.1 基础查询

-- 查询所有列
SELECT * FROM employees;

-- 查询指定列,过滤条件
SELECT name, salary FROM employees WHERE salary > 10000;

-- 去重
SELECT DISTINCT department FROM employees;

-- 排序(DESC降序,ASC升序)
SELECT name, salary FROM employees ORDER BY salary DESC;

-- 分组聚合
SELECT department, AVG(salary) AS avg_sal
FROM employees
GROUP BY department
HAVING AVG(salary) > 8000;  -- HAVING过滤分组后的结果
⚠️ WHERE vs HAVING 易错点:
WHERE:在分组之前过滤行(不能使用聚合函数)
HAVING:在分组之后过滤组(可以使用聚合函数)
口诀:WHERE过滤行,HAVING过滤组

3.2.2 多表连接 JOIN(⭐⭐⭐⭐)

假设有两张表:

学生表(Student):  id | name
                  1  | 张三
                  2  | 李四
                  3  | 王五

成绩表(Score):    id | score
                  1  | 90
                  2  | 85
                  4  | 78    <-- 注意:id=4在学生表不存在
                              -- 学生表id=3在成绩表不存在
连接类型返回结果本例结果
INNER JOIN(内连接)两表都有匹配的行id=1(张三,90), id=2(李四,85)
LEFT JOIN(左连接)左表全部+右表匹配(不匹配填NULL)id=1,2的完整数据 + id=3的王五(score=NULL)
RIGHT JOIN(右连接)右表全部+左表匹配(不匹配填NULL)id=1,2的完整数据 + id=4(name=NULL, score=78)
📝 【考题示例】要查询所有学生(包括没有成绩的学生)的信息,应使用哪种JOIN?
答案:LEFT JOIN,以学生表为左表,成绩表为右表。没有成绩的学生score列显示NULL。

3.2.3 常用函数与易错点

3.3 事务 ACID 特性(⭐⭐⭐⭐⭐)

🎭 最经典例子——银行转账:A向B转账100元
步骤1:A账户余额 -100元
步骤2:B账户余额 +100元
如果步骤1成功但步骤2失败(系统崩溃),A少了100元但B没收到,这是灾难性的!事务就是保证这两步要么都成功,要么都回滚。
特性英文含义转账示例
原子性Atomicity事务要么全部执行,要么全部回滚,不可分割-100和+100要么都成功,要么都不做
一致性Consistency事务前后数据库保持一致状态(满足所有约束)转账前后A+B的总金额不变
隔离性Isolation并发事务互不干扰,中间状态对其他事务不可见转账过程中,其他事务看不到A已-100但B未+100的中间状态
持久性Durability提交的事务结果永久保存,不受系统崩溃影响转账成功提交后,即使服务器断电,数据也不会丢失
⚠️ 易错点:隔离性的英文是 Isolation(首字母I),不是 Independence;持久性是 Durability,提交后永久生效是持久性的关键词。

3.4 并发问题与隔离级别(⭐⭐⭐⭐)

三种并发问题

问题定义示例
脏读读到其他事务未提交的数据事务B读到事务A修改但尚未提交的余额,事务A随后回滚,B读到的是无效数据
不可重复读同一事务中两次读取同一行,结果不同(因另一事务UPDATE了该行)B第一次读余额1000,A更新为2000并提交,B第二次读变成2000
幻读同一事务两次查询,行数不同(因另一事务INSERT/DELETE了数据)B查询余额>1000的账户有5个,A新插入一条,B再查变成6个

四个隔离级别(⭐必考)

隔离级别能解决脏读能解决不可重复读能解决幻读性能
读未提交(Read Uncommitted)最高
读已提交(Read Committed)
可重复读(Repeatable Read)❌(MySQL InnoDB用MVCC解决)
串行化(Serializable)最低
💡 MySQL InnoDB默认隔离级别:可重复读(Repeatable Read)

3.5 数据库规范化(范式)

范式是为了减少数据冗余、避免更新异常而制定的设计规则。

🎭 类比:把"学生选课信息"存在一张大表里:
[学号, 姓名, 系别, 系主任, 课程号, 课程名, 成绩]
问题1:同一学生选10门课,姓名和系别重复10次(数据冗余)
问题2:该学生退学,删掉所有记录,系主任信息也丢了(删除异常)
范式就是把这张大表拆分,消除这些问题。
范式要求消除什么问题
1NF每个属性值不可再分(原子性)确保每格只有一个值(不能把"张三,李四"放在同一格)
2NF在1NF基础上,消除非主属性对主键的部分依赖每个非主键列必须完全依赖于整个主键(适用于联合主键)
3NF在2NF基础上,消除非主属性对主键的传递依赖非主键列A不能通过另一个非主键列B依赖主键(如:学号→系别→系主任,"系主任"传递依赖"学号")
BCNF每个决定因素都是候选键比3NF更严格,消除主属性对主键的部分/传递依赖

3.6 索引(⭐⭐⭐⭐)

🎭 类比:索引就像书的"目录"——没有目录,查某个知识点要从第1页翻到最后(全表扫描);有了目录,直接翻到对应页(索引查找)。

B+树索引(最常用)

聚簇索引 vs 非聚簇索引

类型特点数量限制
聚簇索引数据行按索引顺序物理存储,叶节点直接存数据行每表只能有一个(通常是主键)
非聚簇索引叶节点存储的是指向数据行的指针(主键值),需要"回表"查询完整数据可以有多个

最左前缀原则(联合索引)

建立联合索引 (a, b, c)

⚠️ 索引的副作用:索引提高查询效率,但降低INSERT/UPDATE/DELETE效率(因为每次写操作都需要维护索引结构)。这是建行高频考点!

3.7 NoSQL数据库

Redis(⭐⭐⭐)

Redis是基于内存的键值数据库,速度极快(读10万QPS+),支持五种数据类型:

数据类型特点银行业务应用场景
String(字符串)最基本类型,可存数字缓存用户Session、验证码(设过期时间)、计数器(原子+1)
Hash(哈希)field-value映射,类似Map缓存用户信息对象(name、age、balance等字段)
List(列表)有序可重复,双端队列消息队列(LPUSH存/RPOP取)、最近登录记录
Set(集合)无序不重复,支持集合运算用户标签、共同好友(交集)、去重
ZSet(有序集合)每个元素有score分值,自动排序积分排行榜、延时队列(score存执行时间戳)

缓存三大问题(⭐)

第四章 · 计算机网络

4.1 OSI七层模型 vs TCP/IP四层模型(⭐⭐⭐⭐⭐)

🎭 类比——寄快递:你(应用层)写好信(数据)→装进信封贴上地址(传输层加端口)→快递公司分拣(网络层加IP)→快递员上路(数据链路层)→走公路/飞机(物理层)。收件方逐层拆开还原。
OSI七层TCP/IP四层核心协议数据单位功能
7. 应用层应用层HTTP/HTTPS/FTP/SMTP/DNS/SSH报文(Message)直接为用户提供服务
6. 表示层加密/解密/压缩数据格式转换
5. 会话层建立/维护/终止会话
4. 传输层传输层TCP / UDP段/数据报(Segment/Datagram)端到端通信,端口号
3. 网络层网络层IP / ICMP / ARP / OSPF数据包(Packet)路由寻址,IP地址
2. 数据链路层网络接口层Ethernet / MAC / PPP帧(Frame)相邻节点传输,MAC地址
1. 物理层双绞线/光纤/无线电比特(Bit)0/1信号传输
📝 【考题示例】HTTP协议工作在哪一层?ping命令使用的ICMP协议工作在哪一层?
答案:HTTP→应用层;ICMP→网络层(不是传输层!ICMP不用TCP/UDP,直接封装在IP数据包里)

4.2 TCP vs UDP(⭐⭐⭐⭐⭐)

对比项TCPUDP
连接方式面向连接(需三次握手)无连接(直接发送)
可靠性可靠(确认+重传)不可靠(尽力而为)
速度慢(开销大)快(开销小)
头部大小最小20字节固定8字节
适用场景文件传输、网页、邮件(需要完整性)视频直播、游戏、DNS(需要速度)
流量/拥塞控制有(滑动窗口)
💡 基于TCP的协议(端口):HTTP(80)、HTTPS(443)、FTP(21/20)、SMTP(25)、SSH(22)、Telnet(23)、MySQL(3306)
基于UDP的协议(端口):DNS(53)、DHCP(67/68)、TFTP(69)、SNMP(161)
⚠️ 易错点:DNS同时支持TCP和UDP——普通查询用UDP(响应快),响应超过512字节或区域传输用TCP。考题如果问"DNS基于什么协议",答案通常是UDP(普通查询场景)。

4.3 TCP三次握手与四次挥手(⭐⭐⭐⭐⭐)

三次握手过程

🎭 类比——打电话:甲:你能听到我说话吗?(SYN)→ 乙:我能听到你,你能听到我说话吗?(SYN+ACK)→ 甲:我也能听到你。(ACK)→ 开始通话
客户端                          服务器
  |--- SYN=1, seq=x --------→   |   第1次握手:客户端请求连接
  |← SYN=1,ACK=1,seq=y,ack=x+1-|   第2次握手:服务器确认+请求连接
  |--- ACK=1, seq=x+1, ack=y+1→|   第3次握手:客户端确认
  |========= 连接建立 ===========|
  

为什么是三次而不是两次?

两次握手:服务器无法知道客户端是否能收到服务器的消息(无法验证客户端的接收能力)。三次握手后,双方都确认了对方的收发能力正常。另外,三次握手可以防止历史过期连接请求(网络延迟导致的旧SYN包)被误建立。

四次挥手过程

客户端                          服务器
  |--- FIN=1 ---------------→   |   第1次挥手:客户端请求关闭(不再发数据)
  |←---------- ACK=1 -----------|   第2次挥手:服务器确认(但可能还有数据要发)
  |←---------- FIN=1 -----------|   第3次挥手:服务器数据发完,请求关闭
  |--- ACK=1 ---------------→   |   第4次挥手:客户端确认
  | 等待2MSL后彻底关闭            |   服务器收到ACK后立即关闭
  

为什么四次而不是三次?

因为TCP是全双工的,客户端说"我不发了"(FIN)后,服务器可能还有数据要发给客户端,所以不能立即合并第2次和第3次挥手。只有服务器数据发完后,才能发FIN表示"我也不发了"。

TIME_WAIT 状态(⭐)

客户端发完最后的ACK后,要等待2MSL(2倍最大报文段生存时间,约2~4分钟)才真正关闭,原因:

4.4 HTTP / HTTPS(⭐⭐⭐⭐)

HTTP响应状态码

状态码含义常见场景
200 OK请求成功正常返回网页内容
301 Moved Permanently永久重定向网站更换域名,旧地址永久跳转
302 Found临时重定向登录后跳转到首页
304 Not Modified协商缓存命中资源未变化,使用浏览器缓存
400 Bad Request请求格式错误参数错误、JSON格式错误
401 Unauthorized未认证未登录或token过期
403 Forbidden无权限已登录但无访问权限
404 Not Found资源不存在URL错误、页面已删除
500 Internal Server Error服务器内部错误代码异常、数据库连接失败
502 Bad Gateway网关错误Nginx反向代理后端服务挂了
503 Service Unavailable服务不可用服务器过载或维护中

GET vs POST

对比项GETPOST
参数位置URL中(?key=value)请求体中(不可见)
数据长度URL有长度限制(约2KB)无限制(理论上)
安全性低(参数暴露在URL中,有历史记录)相对高(参数在Body中)
幂等性幂等(多次请求结果相同)非幂等(多次提交可能创建多条记录)
用途查询(不改变服务器数据)提交数据(登录、上传、支付)

HTTPS工作原理

HTTPS = HTTP + TLS加密,使用混合加密:非对称加密交换密钥,对称加密传输数据。

  1. 客户端发送支持的TLS版本和加密算法列表(ClientHello)
  2. 服务器返回选定的算法+数字证书(含服务器公钥)
  3. 客户端验证证书合法性(检查CA签名、有效期、域名)
  4. 客户端生成会话密钥,用服务器公钥加密后发给服务器
  5. 服务器用私钥解密得到会话密钥
  6. 双方用对称会话密钥加密后续所有通信
⚠️ 易错点:HTTP是明文传输,HTTPS是加密传输;HTTP端口80,HTTPS端口443;HTTPS使用SSL/TLS协议加密,工作在传输层与应用层之间。

4.5 常见端口号速查(⭐⭐⭐)

协议端口传输层功能
FTP21(控制)/20(数据)TCP文件传输
SSH22TCP安全远程登录(替代Telnet)
Telnet23TCP远程登录(明文,不安全)
SMTP25TCP邮件发送
DNS53UDP(普通查询)/TCP域名解析
HTTP80TCP网页传输
HTTPS443TCP安全网页传输
MySQL3306TCPMySQL数据库
Redis6379TCPRedis缓存
RDP3389TCPWindows远程桌面

4.6 DNS解析完整过程

以浏览器访问 www.ccb.com 为例:

  1. 查询浏览器DNS缓存(最近访问过?直接用)
  2. 查询操作系统DNS缓存
  3. 查询hosts文件(/etc/hosts 或 C:\Windows\System32\drivers\etc\hosts)
  4. 本地DNS服务器(ISP提供)发起查询
  5. 本地DNS服务器向根域名服务器查询(返回.com顶级域服务器地址)
  6. .com顶级域名服务器查询(返回ccb.com权威DNS地址)
  7. ccb.com权威DNS服务器查询,得到IP地址
  8. 本地DNS服务器缓存结果并返回给浏览器

第五章 · 操作系统

5.1 进程与线程(⭐⭐⭐⭐⭐)

🎭 类比:进程就像一家"工厂"——有独立的厂房(内存空间)、设备(资源);线程就像工厂里的"工人"——共享工厂的资源,但各自执行不同任务。一个工厂可以有多个工人,工人之间沟通很快(共享内存),但工人出事故可能影响整个工厂(线程崩溃可能导致整个进程崩溃)。
对比项进程线程
定义资源分配的基本单位调度执行的基本单位
地址空间独立的虚拟地址空间共享所在进程的地址空间
包含的资源代码段、数据段、堆、栈、文件描述符、PCB独立的栈和程序计数器,其余共享
通信方式IPC(管道、消息队列、共享内存、Socket…)直接读写共享内存(但需加锁)
切换开销大(需切换地址空间)小(同一地址空间内切换)
安全性进程间隔离,一个崩溃不影响其他线程共享进程,一个线程崩溃可能影响整个进程
⚠️ 高频考点:"进程是资源分配的基本单位,线程是调度执行(CPU调度)的基本单位"——这句话必须背下来,建行多次考过。

进程的五种状态转换

  新建(New) ──────→ 就绪(Ready) ←────── 阻塞(Blocked)
                        ↓  ↑                  ↑
                    调度↓  ↑时间片到        I/O等待
                        ↓  ↑
                    运行(Running) ──等待I/O──→ 阻塞(Blocked)
                        ↓
                    终止(Terminated)
  

进程间通信(IPC)六种方式

方式特点适用场景
管道(Pipe)半双工,只能在有亲缘关系的进程间使用,数据先进先出父子进程通信
命名管道(FIFO)可在无亲缘关系进程间使用,以文件形式存在独立进程间通信
消息队列内核维护的消息链表,有格式,支持按类型读取进程间异步通信
共享内存最快的IPC方式,直接读写同一块内存,但需自行同步大量数据快速共享
信号量(Semaphore)用于同步和互斥,PV操作控制对共享资源的访问
Socket可跨网络通信,最灵活分布式系统、网络通信
📝 【考题示例】进程间通信方式中,速度最快的是?
答案:共享内存。原因:其他方式都需要在内核和用户空间之间复制数据,而共享内存直接在用户空间读写,零复制,速度最快。

5.2 进程调度算法(⭐⭐⭐⭐)

多个进程竞争CPU,操作系统需要用调度算法决定谁先用CPU。

算法是否抢占特点缺点
FCFS(先来先服务)❌非抢占简单公平,按到达顺序执行短作业等长作业,平均等待时间长
SJF(最短作业优先)❌/✅均可平均等待时间最短长作业可能永远等待(饥饿)
时间片轮转(RR)✅抢占公平,每个进程轮流执行一个时间片时间片太小→上下文切换开销大;太大→退化为FCFS
优先级调度✅/❌均可高优先级先执行低优先级进程可能饥饿
多级反馈队列✅抢占综合多种算法,动态调整优先级复杂,实现难度大
⚠️ 易错点:FCFS是非抢占式调度,一旦某进程获得CPU,就会一直运行到完成或主动放弃,不会被强制中断。

调度示例(FCFS vs RR)

进程:P1(执行7ms)、P2(执行4ms)、P3(执行1ms),均在t=0到达

FCFS:[P1:0-7][P2:7-11][P3:11-12],平均等待时间=(0+7+11)/3=6ms

RR(时间片=2ms):[P1:0-2][P2:2-4][P3:4-5][P1:5-7][P2:7-9][P1:9-11][P1:11-12](P3最先完成),平均等待时间更均衡

5.3 死锁(⭐⭐⭐⭐⭐)

🎭 类比:两人过独木桥,A从左边走到中间,B从右边走到中间,各自不让,都走不过去,就发生了"死锁"。

死锁的四个必要条件(全部满足才会死锁)

  1. 互斥条件:资源同一时刻只能被一个进程使用(打印机不能同时被两个进程使用)
  2. 请求与保持(占有并等待):进程持有至少一个资源,同时等待获取其他被占用的资源(A拿着刀等叉,B拿着叉等刀)
  3. 不可剥夺:进程所拥有的资源在未使用完毕前,不能被强制剥夺(不能强行从A手里抢刀)
  4. 循环等待:存在一个进程-资源等待的环形链(A等B,B等C,C等A)
💡 预防死锁:破坏四个条件之一即可。最常用方法:
·破坏"请求与保持":进程开始时一次性申请所有需要的资源
·破坏"循环等待":对资源编号,进程必须按编号从小到大申请资源

银行家算法(死锁避免)

每次分配资源前,检查分配后系统是否还处于"安全状态"(存在安全序列),若安全则分配,否则等待。

示例:系统有3类资源(A=10,B=5,C=7),3个进程:

进程已分配(A,B,C)最大需求(A,B,C)还需要(A,B,C)
P00,1,07,5,37,4,3
P12,0,03,2,21,2,2
P23,0,29,0,26,0,0

当前可用资源:A=10-(0+2+3)=5, B=5-1=4, C=7-2=5,即(5,4,5)
P1需要(1,2,2)≤(5,4,5)✅,先满足P1,P1完成后释放(2,0,0),可用变(7,4,5)
再满足P2,P2需要(6,0,0)≤(7,4,5)✅,以此类推找到安全序列→系统安全

5.4 内存管理(⭐⭐⭐⭐)

分页存储

🎭 类比:把程序切成等大小的"页",把内存切成等大小的"页框"(frame),把页装入页框。就像把一本书撕成等大小的散页,随机放进书架上的格子里,用"目录(页表)"记录每页放在哪个格子。
⚠️ 易错点:页面越大→内部碎片越大(因为最后一页浪费的空间更大)。分页产生内部碎片,分段产生外部碎片

页面置换算法(⭐⭐⭐)

当物理内存满了,要把哪个页换出去腾位置,就是页面置换。

以访问序列 1,2,3,4,1,2,5,1,2,3,4,5,物理帧数=3为例:

算法缺页次数置换策略
OPT(最优)6次置换将来最久不被使用的页(理论最优,无法实现)
LRU(最近最少使用)8次置换最近最长时间未被访问的页(效果好但实现复杂)
FIFO(先进先出)9次置换最先进入内存的页(实现简单,效果差)
⚠️ Belady异常(只有FIFO会出现):增加物理帧数,缺页次数反而增加!这是FIFO算法的反直觉缺陷。LRU和OPT不会出现Belady异常。

5.5 Linux常用命令(⭐⭐⭐)

命令用途示例
ls -l列出文件详细信息(权限、大小、时间)ls -la 显示隐藏文件
chmod 755 file修改文件权限(7=rwx,5=r-x,5=r-x)r=4,w=2,x=1,所有者/组/其他
ps aux查看所有进程状态ps aux | grep nginx
top实时显示系统资源使用(CPU/内存)按q退出,按1查看各核CPU
grep -r "关键词" .递归搜索文件内容grep -r "ERROR" /var/log/
find / -name "*.log"按名称查找文件find /tmp -mtime +7 找7天前的文件
df -h查看磁盘使用情况-h以人类可读格式显示
kill -9 PID强制终止进程kill -15 PID 优雅终止
netstat -tulnp查看端口占用netstat -tulnp | grep 8080
tail -f log.txt实时查看日志文件末尾排查线上问题必用

5.6 同步与互斥(PV操作)

🎭 类比:信号量就像"停车场剩余车位数"——进去一辆车(P操作)车位数减1,出来一辆(V操作)车位数加1。车位数为0时,后来的车只能等待。

第六章 · 信息安全

6.1 加密算法(⭐⭐⭐⭐⭐)

对称加密

🎭 类比:对称加密就像"同一把钥匙锁门和开门"——加密和解密用同一个密钥。速度快,但问题是:怎么安全地把钥匙给对方?(密钥分发问题)
算法密钥长度状态特点
DES56位有效密钥(64位含校验位)已不安全(可被破解)最早的标准对称加密算法
3DES112位或168位逐渐淘汰对数据做三次DES加密,过渡方案
AES128/192/256位✅当前主流标准安全高效,HTTPS、Wi-Fi、磁盘加密都用它
⚠️ 超高频易错点:AES密钥长度只有128/192/256位,没有512位!建行真题曾直接考"AES支持哪些密钥长度",选项中混入512位来干扰。务必记牢:AES没有512位!

非对称加密

🎭 类比:非对称加密就像"信箱"——任何人都可以往信箱里投信(用公钥加密),但只有信箱主人有钥匙能打开取信(用私钥解密)。这样就解决了密钥分发问题。
算法基于的数学难题特点
RSA大整数分解(两个大质数相乘容易,分解极难)最广泛使用,密钥通常2048位
ECC椭圆曲线离散对数相同安全性下密钥更短,适合移动端

哈希算法(单向摘要)

🎭 类比:哈希就像"指纹"——从人到指纹容易(正向计算快),从指纹还原人几乎不可能(不可逆)。同一个人的指纹总是相同(相同输入→相同输出),不同人的指纹极难相同(抗碰撞)。
算法摘要长度状态用途
MD5128位(32个十六进制字符)已不安全(可碰撞)文件完整性校验(非安全场景)
SHA-1160位已不安全逐渐淘汰
SHA-256256位✅安全HTTPS证书签名、区块链、密码存储

密码存储正确方式:不要直接存明文密码,也不要只用哈希,应该:hash(密码 + 随机盐值),防止彩虹表攻击。

混合加密体系(HTTPS核心)

6.2 数字签名与数字证书(⭐⭐⭐)

数字签名完整流程

发送方(张三):
  1. 对消息M计算哈希值 H = SHA256(M)
  2. 用张三的【私钥】加密H,得到签名S
  3. 发送 M + S

接收方(李四):
  4. 用张三的【公钥】解密S,得到H1
  5. 对收到的M重新计算哈希值 H2 = SHA256(M)
  6. 若 H1 == H2,则签名有效(消息未被篡改,且确实是张三发的)
  

数字签名提供:① 身份认证(确认是张三发的)②不可否认性(张三不能否认)③完整性(消息未被篡改)

数字证书

问题:我怎么知道"张三的公钥"是真的张三的,而不是被中间人替换了?
解决:由权威的证书颁发机构(CA)用自己的私钥对"张三的身份信息+公钥"进行数字签名,颁发数字证书。任何人用CA的公钥验签,就能确认证书是真实的。

6.3 常见网络攻击与防御(⭐⭐⭐⭐)

攻击类型原理示例防御方法
SQL注入在用户输入中插入SQL代码,被服务器执行用户名输入 admin'--,绕过密码验证参数化查询(PreparedStatement)、ORM框架、输入校验
XSS跨站脚本在网页中注入恶意JS脚本,窃取用户Cookie/数据评论区输入 <script>document.cookie</script>对输出HTML编码(< → &lt;)、CSP内容安全策略
CSRF跨站请求伪造利用用户已登录状态,在第三方页面发起恶意请求钓鱼网站嵌入银行转账图片,用户点击自动转账CSRF Token、SameSite Cookie、Referer验证
DDoS大量请求耗尽服务器资源,使其无法正常服务僵尸网络同时向银行APP发送百万请求CDN+防火墙、流量清洗、限流熔断
中间人攻击(MITM)攻击者插入通信链路中,窃听或篡改数据公共Wi-Fi下截取HTTP流量HTTPS(TLS加密)+证书验证
📝 【考题示例】以下哪项是防御SQL注入攻击最有效的方法?
A. 对用户输入进行HTML编码   B. 使用参数化查询/预编译语句   C. 限制用户输入长度   D. 使用HTTPS
答案:B。参数化查询使用占位符,用户输入被当作纯数据而非SQL代码,根本上防止注入。A是防XSS,C/D不能根本解决SQL注入。

6.4 等保2.0(金融行业必知⭐⭐⭐)

全称:网络安全等级保护制度2.0,是我国网络安全的基本制度。

等级适用范围监管部门
第一级(自主保护)一般信息系统,破坏后影响个人无强制要求
第二级(指导保护)影响公民、法人权益,一般企业内部系统公安机关指导
第三级(监督保护)影响社会秩序和公共利益,银行核心系统通常在此级别公安机关监督检查
第四级(强制保护)关键基础设施,影响国家安全国家专门部门强制检查
第五级(专控保护)极端重要,国防等顶级系统国家专门部门专控

"三同步"原则:安全设施与信息系统同步规划、同步建设、同步运行(即安全不能是事后补救,必须从设计阶段就考虑)

第七章 · 软件工程

7.1 软件开发模型对比

模型特点优点缺点适用场景
瀑布模型线性顺序,各阶段严格依次进行,不可回头文档完善,阶段清晰,便于管理需求变更代价大,测试在最后才发现问题需求明确稳定的项目(如银行监管系统)
螺旋模型风险驱动,迭代进行,每轮都有风险评估适合高风险大型项目复杂,管理难度大大型、创新型、高风险项目
敏捷开发迭代增量,小步快跑,拥抱变化响应变化快,持续交付可用软件文档不足,需要团队高度协作需求多变、互联网产品
原型模型先做粗糙原型让用户确认,再正式开发尽早获取用户反馈,减少误解可能导致用户期望过高需求不明确、UI/UX密集型项目

7.2 Scrum敏捷框架(⭐⭐⭐⭐)

🎭 类比:Scrum就像踢足球——产品负责人(PO)是教练,制定战术(决定踢哪些球);Scrum Master是队长,协调队员消除障碍;开发团队是球员,负责具体执行。每场比赛(Sprint)结束必须有成果(进球=可交付软件)。

三个角色

三个工件(⭐⭐⭐必考)

工件含义谁维护
Product Backlog(产品待办列表)所有待完成需求的有序列表,按业务价值排序,持续更新产品负责人(PO)
Sprint Backlog(迭代待办列表)本次Sprint要完成的任务子集,由团队在Sprint计划会上选定开发团队
Increment(产品增量)Sprint结束时交付的、可用的软件版本,必须满足"完成的定义(DoD)"开发团队

四个会议

📝 【考题示例】Scrum中,谁负责维护Product Backlog的优先级顺序?
A. Scrum Master   B. 开发团队   C. 产品负责人(PO)   D. 项目经理
答案:C。PO对产品价值负责,决定哪些需求先做。Scrum Master不是PM,开发团队负责How(怎么做),PO负责What(做什么)和Why(为什么做)。

7.3 软件测试(⭐⭐⭐⭐)

🎭 类比:软件测试就像"产品出厂质检"。黑盒测试=不打开盒子,只检查外观和功能是否符合说明书;白盒测试=打开盒子,检查内部线路是否正确连接。

黑盒测试 vs 白盒测试

类型视角测试方法优点缺点
黑盒测试用户视角,不看代码,只看功能等价类划分、边界值分析、因果图发现功能缺陷,贴近用户无法保证代码覆盖率
白盒测试开发视角,基于代码结构语句覆盖、分支覆盖、路径覆盖覆盖率高,发现逻辑错误成本高,不能发现需求缺陷

边界值分析示例

银行存款金额限制:1元 ~ 99999元(整数)

测试阶段(从小到大)

阶段测试对象由谁测试目的
单元测试最小代码单元(函数/方法/类)开发人员自测验证每个函数逻辑正确
集成测试模块间的接口和交互开发/测试人员验证模块协作正常
系统测试完整的软件系统专职测试人员验证系统功能、性能、安全
验收测试(UAT)完整系统,从用户角度用户/业务人员确认满足业务需求
回归测试修改后的系统测试人员确认修改未引入新Bug

7.4 设计模式(⭐⭐⭐)

设计模式是针对软件设计中反复出现问题的标准化解决方案,共23种,分三大类:

分类关注点包含模式
创建型(5种)如何创建对象单例、工厂方法、抽象工厂、建造者、原型
结构型(7种)如何组合类和对象适配器、桥接、组合、装饰器、外观、享元、代理
行为型(11种)对象间的通信和职责观察者策略、模板方法、迭代器、责任链等

四大高频设计模式

① 单例模式(Singleton)

🎭 类比:全国只有一位"主席",大家都引用同一个人。

保证一个类只有一个实例,提供全局访问点。

// 饿汉式(类加载时就创建,线程安全)
public class Singleton {
    private static final Singleton INSTANCE = new Singleton();
    private Singleton() {}  // 私有构造器,禁止外部new
    public static Singleton getInstance() { return INSTANCE; }
}

② 观察者模式(Observer)

🎭 类比:微博关注。你关注了某明星(订阅),明星发微博(事件),所有粉丝自动收到通知(回调)。

一对多依赖,被观察者状态变化时自动通知所有观察者。

③ 代理模式(Proxy)

🎭 类比:明星经纪人(代理)——你联系经纪人,经纪人代替明星处理事务(可以增加额外逻辑如收费、过滤)。

为目标对象提供代理,控制对目标的访问,可在访问前后增加逻辑。

④ 策略模式(Strategy)

🎭 类比:导航软件的出行方式——驾车/公交/步行是不同策略,用户可以随时切换,算法相互独立可替换。

将一组算法封装成独立的类,使它们可以相互替换,客户端不依赖具体实现。

第八章 · 编程语言(Java / Python)

8.1 Java面向对象三大特征(⭐⭐⭐⭐)

① 封装(Encapsulation)

🎭 类比:ATM机——你只能插卡、输密码、取钱,看不到里面的机械和程序,内部实现完全隐藏。好处:用户操作简单,内部可以随时改进而不影响用户。
public class BankAccount {
    private double balance;  // 私有属性,外部不可直接访问

    public double getBalance() { return balance; }  // 公开getter

    public void deposit(double amount) {
        if (amount > 0) balance += amount;  // 加入业务逻辑校验
    }
}

② 继承(Inheritance)

🎭 类比:建行各类账户(储蓄账户、理财账户、信用卡账户)都是"银行账户"的子类,共享"账号、余额、开户日期"等公共属性和"查询余额、打印流水"等公共方法,各自再扩展专属功能。
class BankAccount {           // 父类
    protected String accountId;
    protected double balance;
    public void printStatement() { /* 打印流水 */ }
}

class SavingsAccount extends BankAccount {   // 子类,继承父类
    private double interestRate;  // 子类特有属性
    public void calculateInterest() { /* 计算利息 */ }
}
⚠️ 易错点:Java只支持单继承(一个类只能extends一个父类),但可以实现多个接口(implements)。这与C++的多继承不同。

③ 多态(Polymorphism)

🎭 类比:同样是"刷卡支付"这个动作,储蓄卡直接扣余额,信用卡先记账单月底还,这就是同一方法在不同对象上有不同行为。

方法重写(Override)vs 方法重载(Overload)——超高频考点!

对比项方法重写(Override)方法重载(Overload)
发生位置子类重写父类方法同一个类中多个同名方法
方法名必须相同必须相同
参数列表必须相同必须不同(类型/数量/顺序)
返回类型必须相同(或子类型)可以不同
访问权限子类不能比父类更严格无限制
决定时机运行时(动态绑定)编译时(静态绑定)

8.2 Java核心考点

String / StringBuilder / StringBuffer

可变性线程安全性能使用场景
String不可变(final)安全(不可变天然线程安全)频繁修改时差(每次创建新对象)字符串不变的场景
StringBuilder可变不安全最快单线程频繁字符串拼接
StringBuffer可变安全(方法synchronized)较慢多线程字符串操作

异常体系(⭐⭐⭐)

Throwable
├── Error(JVM级错误,通常不处理)
│   ├── OutOfMemoryError(内存不足)
│   └── StackOverflowError(递归太深)
└── Exception(程序可处理的异常)
    ├── RuntimeException(运行时异常/非受检异常,可以不捕获)
    │   ├── NullPointerException(空指针)
    │   ├── ArrayIndexOutOfBoundsException(数组越界)
    │   └── ClassCastException(类型转换错误)
    └── 受检异常(必须捕获或声明throws)
        ├── IOException
        └── SQLException
  

接口 vs 抽象类

对比项接口(interface)抽象类(abstract class)
实例化不能实例化不能实例化
方法默认全为抽象方法(Java8可有default/static方法)可以有抽象方法和具体方法
属性只能有public static final常量可以有各种成员变量
构造器❌没有构造器✅有构造器
继承/实现类可以implements多个接口类只能extends一个抽象类
使用场景定义能力/行为规范(如:Comparable、Runnable)有公共代码复用需求的父类(如:AbstractList)

8.3 Java集合框架(⭐⭐⭐⭐)

HashMap原理详解(⭐必考)

🎭 类比:HashMap就像一个大型停车场——先根据车牌号(key)用哈希函数算出停车区域(数组下标),停到对应区域。如果两辆车算出同一区域(哈希碰撞),就在该区域排队(链表)。队太长就搭新楼(红黑树)。
⚠️ 易错点:HashMap允许一个null键和多个null值;Hashtable不允许null键值(线程安全但已过时);ConcurrentHashMap不允许null键值。

8.4 Java多线程(⭐⭐⭐)

线程创建四种方式

方式代码示例特点
继承Thread类class MyThread extends Thread { public void run(){...} }简单,但占用了唯一继承名额
实现Runnable接口new Thread(new MyRunnable()).start();推荐,避免单继承限制
实现Callable接口FutureTask<T> task = new FutureTask<>(callable);可有返回值,可抛异常
线程池(最推荐)ExecutorService pool = Executors.newFixedThreadPool(5);复用线程,减少创建销毁开销

synchronized vs volatile

对比项synchronizedvolatile
保证原子性❌(i++这样的复合操作不原子)
保证可见性
保证有序性✅(禁止指令重排序)
性能较低(加锁/解锁开销)较高(无锁)
使用场景需要原子性的复合操作只需可见性的简单读写(如状态标志位)

8.5 JVM内存模型(⭐⭐⭐)

区域线程共享存储内容常见异常
堆(Heap)✅共享所有对象实例和数组,GC主要区域OutOfMemoryError
方法区/元空间✅共享类信息、常量池、静态变量、JIT编译代码OutOfMemoryError
虚拟机栈❌线程私有方法调用栈帧(局部变量、操作数栈、返回地址)StackOverflowError
本地方法栈❌线程私有Native方法(C/C++实现的方法)StackOverflowError
程序计数器❌线程私有当前线程执行的字节码行号唯一不会OOM的区域

8.6 Python核心要点(⭐⭐⭐)

数据类型特点示例
list(列表)有序、可变、允许重复[1, 2, 3, "hello"]
tuple(元组)有序、不可变、允许重复(1, 2, 3),可做dict的key
dict(字典)键值对,键唯一,无序(Python3.7+保持插入顺序){"name":"张三", "age":25}
set(集合)无序、不重复,支持集合运算{1, 2, 3},&交集,|并集,-差集
# 列表推导式(简洁高效)
squares = [x**2 for x in range(10) if x % 2 == 0]
# 结果:[0, 4, 16, 36, 64]

# 生成器(节省内存,惰性计算)
def fibonacci():
    a, b = 0, 1
    while True:
        yield a       # yield使函数变成生成器,每次调用next()暂停并返回a
        a, b = b, a+b

# 装饰器(在不修改函数的情况下增强功能)
def log_decorator(func):
    def wrapper(*args, **kwargs):
        print(f"调用函数: {func.__name__}")
        result = func(*args, **kwargs)
        print("调用完成")
        return result
    return wrapper

@log_decorator    # 等价于 transfer = log_decorator(transfer)
def transfer(amount):
    print(f"转账:{amount}元")
💡 GIL(全局解释器锁):CPython中,GIL使得同一时刻只有一个线程执行Python字节码。
→ CPU密集型任务(大量计算):用多进程(multiprocessing)绕过GIL
→ I/O密集型任务(网络请求、文件读写):用多线程asyncio协程即可

第九章 · 分布式与金融新技术

9.1 云计算(⭐⭐⭐⭐)

🎭 三种服务模式类比——以"做饭"来理解:
自建机房 = 自己买菜、买锅碗瓢盆、生火做饭(全部自己负责)
IaaS = 租用厨房(灶台锅碗别人备好),自己买菜做饭
PaaS = 点半成品(食材已准备好),自己调味烹饪
SaaS = 下馆子(饭菜全做好),直接吃
模式全称用户负责典型产品
IaaS基础设施即服务OS、中间件、应用、数据阿里云ECS、AWS EC2、Azure VM
PaaS平台即服务应用和数据Google App Engine、Heroku、阿里云容器服务
SaaS软件即服务只管用Office 365、Salesforce、钉钉、企业微信

云部署模型(⭐考点)

部署模型特点适用场景
公有云第三方运营,多用户共享资源,按需付费创业公司、互联网业务
私有云企业独立部署在自己的服务器上,数据存储在私有服务器,完全控制银行、政府等对数据安全要求极高的机构
混合云结合公有云和私有云,敏感数据在私有云,其他业务用公有云大型银行(建行)常用模式
社区云特定群体(如金融机构)共同使用的云金融云、政务云
⚠️ 易错点:私有云的关键特征是"数据存储在企业自己的服务器上",而不是"不用云技术"。私有云一样使用虚拟化、自动化等云技术,只是运行在自己的硬件上。

容器 vs 虚拟机

对比项虚拟机(VM)容器(Docker)
隔离级别完整OS级别隔离进程级隔离(共享宿主OS内核)
启动速度分钟级秒级
体积GB级(含完整OS)MB级
性能开销较大(需模拟硬件)接近原生(共享内核)
适用场景需要强隔离、不同OS环境微服务部署、快速扩缩容

Kubernetes(K8s):容器编排平台,自动管理大量Docker容器的部署、扩缩容、负载均衡、自愈(容器挂了自动重启)。

9.2 大数据技术栈(⭐⭐⭐)

🎭 类比:大数据系统就像一家超大型仓库——HDFS是仓库(存数据),MapReduce是仓库工人(处理数据),YARN是仓库调度员(分配资源),Hive是仓库管理软件(用SQL语言查询)。
组件功能关键特点
HDFS分布式文件系统(Hadoop的存储层)数据分块(默认128MB)存多个DataNode,NameNode管元数据,高容错
MapReduce分布式计算框架(Hadoop的计算层)Map(分发计算)→Shuffle(聚合)→Reduce(汇总),适合离线批处理
Spark内存计算框架基于RDD,数据在内存中处理,比MR快10~100倍,支持流处理
Hive基于Hadoop的数据仓库支持HQL(类SQL),底层转为MR/Spark执行,适合离线分析
Kafka分布式消息队列高吞吐(百万TPS),顺序写磁盘,消息持久化可重复消费
HBase列族型NoSQL数据库基于HDFS,支持海量数据随机读写,适合稀疏数据
📝 【考题示例】以下哪个技术最适合处理海量非结构化数据的分布式存储和批量计算?
A. MySQL   B. Redis   C. Hadoop(HDFS+MapReduce)   D. Elasticsearch
答案:C。Hadoop专为海量非结构化数据的分布式存储和批处理设计。MySQL是关系型数据库适合结构化数据;Redis是内存缓存;ES主要用于全文检索。

消息队列三大作用(⭐)

9.3 微服务架构(⭐⭐⭐)

🎭 类比:单体架构像"全能超市"——所有商品(功能)在一个大店里;微服务像"专业街"——肉铺、蔬菜店、药店各自独立,各司其职,哪家出问题不影响其他家。
对比项单体架构微服务架构
部署整体打包部署每个服务独立部署
扩展整体扩展(浪费)按需扩展热点服务
故障隔离一处出错可能影响整体故障隔离(一个服务挂了不影响其他)
技术栈统一技术栈每个服务可用不同技术
复杂度高(服务治理、分布式事务等)
⚠️ 高频考点:微服务架构最核心的优势是"故障隔离"——单个服务故障不会级联导致整个系统崩溃(配合熔断降级)。

Spring Cloud核心组件速记

组件功能类比
Nacos / Eureka服务注册与发现电话本:记录所有服务的地址
OpenFeign声明式HTTP客户端让服务间调用像调用本地方法一样简单
Sentinel / Hystrix熔断降级限流保险丝:服务异常时自动断开,防止雪崩
GatewayAPI网关门卫:统一入口,鉴权、路由、限流
Nacos Config配置中心配置文件统一管理,修改后热更新无需重启
Zipkin / SkyWalking链路追踪快递物流:追踪一次请求经过哪些服务

9.4 区块链与数字人民币(⭐金融科技)

🎭 类比:区块链就像"班级公开账本"——全班同学每人都有一本账本(分布式),记录所有转账,每一页(区块)都包含上一页的摘要(哈希),所以任何人修改一页,后面所有页都会对不上,立刻被发现。

数字人民币(e-CNY)

9.5 AI在金融领域的应用(⭐)

应用场景技术建行实践
智能风控机器学习(异常检测、信用评分)反欺诈系统,实时识别异常交易
智能客服NLP(自然语言处理)、知识图谱建行"小微"智能客服,处理高频问题
智能投顾量化模型、推荐算法个性化理财产品推荐
OCR识别计算机视觉身份证、票据自动识别录入,RPA流程自动化
大语言模型Transformer、LLM内部知识问答、代码辅助、合规审查

第十章 · 建行金融科技专项与备考策略

10.1 建设银行IT核心战略

10.2 银行IT岗必知金融科技概念

概念解释建行相关
核心银行系统(CBS)处理存款、贷款、支付等核心业务的系统,是银行的"心脏"建行新一代核心系统已完成分布式改造
CNAPS中国现代化支付系统:大额实时(HVPS)+小额批量(BEPS)建行接入央行清算系统
反洗钱(AML)5万元以上大额现金交易需上报,可疑交易需报告系统自动识别可疑交易模式
个人金融信息保护金融数据分级(C1/C2/C3),不同级别采用不同保护措施等保三级要求,数据本地化存储
DevOps开发(Dev)+运维(Ops)一体化,持续集成/持续部署(CI/CD)建行推进敏捷研发,缩短需求到上线周期

10.3 高频真题考点速记大全(⭐⭐⭐⭐⭐)

【数据结构与算法】

考点答案关键解析
顺序表删第i个元素,移动几个元素n-i 个第i+1到第n个元素前移,共n-i个
叶节点数与度为2节点数的关系n₀ = n₂ + 1由边数推导:n-1=n₁+2n₂,化简得n₀=n₂+1
不稳定排序有哪些快选堆希快速、选择、堆排序、希尔排序不稳定
快速排序最坏时间复杂度O(n²)输入已有序(或逆序)时退化,每次只能确定一个元素位置
最坏情况仍为O(nlogn)的排序归并排序、堆排序快速排序最坏O(n²),这两种不会退化
哈夫曼树节点数(n个叶节点)2n-1哈夫曼树只有度0和度2的节点,n₀=n₂+1→总数=n₀+n₂=2n-1
图的BFS使用什么辅助数据结构队列BFS逐层扩展,用队列存待访问节点;DFS用栈(递归)
完全二叉树节点i的左子节点2i右子节点=2i+1,父节点=⌊i/2⌋(从1开始编号)

【数据库系统】

考点答案关键解析
事务持久性的含义提交后永久生效,不受故障影响靠WAL(写前日志)实现,崩溃后可恢复
事务隔离性英文IsolationACID中I=Isolation,别记成Independence
能解决幻读的隔离级别串行化(Serializable)可重复读解决不可重复读,串行化解决幻读
LEFT JOIN返回什么左表所有行+右表匹配行(不匹配填NULL)右边没有匹配的,对应列为NULL
索引对写操作的影响降低INSERT/UPDATE/DELETE效率每次写都要同步更新索引结构
COUNT(*)与COUNT(列名)区别COUNT(*)含NULL行,COUNT(列名)不含COUNT(*)统计所有行,COUNT(col)跳过col为NULL的行
B树与B+树的主要区别B+树叶节点存所有数据且有链表,B树各层节点都存数据B+树更适合范围查询,数据库索引通常用B+树
Redis默认端口6379MySQL:3306, Redis:6379, MongoDB:27017

【计算机网络】

考点答案关键解析
HTTP协议基于什么传输层协议TCPHTTP/HTTPS/FTP/SMTP/SSH都基于TCP
ping命令使用什么协议ICMP(网络层)不是TCP/UDP!ICMP直接封装在IP报文中
HTTPS端口号443HTTP:80, HTTPS:443, SSH:22, FTP:21
HTTP与HTTPS最大区别HTTPS有加密(SSL/TLS),HTTP明文传输HTTPS在传输层和应用层之间加了TLS
TCP三次握手第几次后客户端进入ESTABLISHED第三次握手后(客户端发ACK后立即进入)服务器收到第三次ACK后也进入ESTABLISHED
四次挥手中TIME_WAIT状态在哪方主动关闭方(客户端)等待2MSL,防止最后ACK丢失和旧报文干扰
DNS普通查询基于什么协议UDP(端口53)响应超512字节或区域传输时用TCP
ARP协议的作用IP地址→MAC地址(地址解析)工作在数据链路层/网络层交界,广播查询,单播回复

【操作系统】

考点答案关键解析
进程是什么的基本单位资源分配的基本单位线程是CPU调度的基本单位,进程是资源分配的基本单位
线程之间共享什么共享进程的地址空间(代码段、数据段、堆、文件描述符)线程有独立的栈和程序计数器,其他共享
FCFS是否为抢占式非抢占式一旦获得CPU,运行到完成或主动放弃,不会被抢
死锁四个必要条件互斥、请求与保持、不可剥夺、循环等待四条缺一不可,破坏任意一条即可预防死锁
页面置换中会出现Belady异常的是FIFOLRU和OPT不会出现Belady异常
分页产生什么碎片内部碎片(最后一页装不满)分段产生外部碎片;段页式两种都有
速度最快的进程通信方式共享内存直接读写同一块内存,无需复制,但需配合信号量同步
用户态切换到内核态的时机系统调用、中断、异常普通程序运行在用户态,调用OS服务时切换到内核态

【信息安全】

考点答案关键解析
AES支持的密钥长度128/192/256位(没有512位!)超高频易错点,512位不是AES的密钥长度
HTTPS使用的加密协议SSL/TLSTLS是SSL的升级版,现代HTTPS用TLS 1.2/1.3
数字签名用私钥还是公钥签名私钥签名,公钥验签与加密相反:加密是公钥加密私钥解密
防SQL注入最有效的方法参数化查询(预编译语句)用户输入作为参数而非SQL代码拼接,根本上解决注入
MD5是什么类型的算法哈希/摘要算法(单向不可逆)不是加密算法!不可逆,128位输出,已不安全
银行核心系统通常是等保几级第三级(少数达第四级)等保三级需定期接受公安机关监督检查

【新技术】

考点答案关键解析
私有云的核心特征数据存储在企业自己的服务器私有云是部署位置/所有权的概念,不是不用云技术
微服务核心优势故障隔离(单服务故障不影响整体)配合熔断降级实现,防止故障级联扩散
Scrum三个工件Product Backlog、Sprint Backlog、Increment三个工件必须背,PO维护Product Backlog
Docker相比虚拟机的优势启动快(秒级)、体积小(MB)、资源占用少共享宿主OS内核,无需模拟完整OS
数字人民币发行主体中国人民银行(央行)双层运营:央行→商业银行→公众

10.4 应试技巧(升级版)

时间管理

识别干扰选项的规律

干扰方式示例应对策略
数字替换把AES密钥128→512,把HTTPS端口443→80记住关键数字:AES(128/192/256)、HTTPS(443)、SSH(22)
层次混淆说TCP在网络层,说ARP在传输层牢记七层模型各层对应协议
概念互换把"进程是调度单位"说成"线程是资源分配单位"记住:进程=资源分配,线程=调度执行
绝对化表述"索引一定能提高查询效率"、"堆排序一定比冒泡快"含"一定/全部/绝对/永远"的选项大概率错误
相似词混淆Override(重写)和Overload(重载),throw和throws关注英文原词含义,结合代码场景理解

10.5 四周冲刺计划(详细版)

周次每天学习内容完成标准
第一周
数据结构+算法
第1-2天线性表(数组/链表/栈/队列):每种做5道例题能手动演示插入删除过程,记住时间复杂度
第3-4天树与二叉树:性质推导、遍历手写、BST操作、哈夫曼树构造能手动画出给定序列的二叉树并遍历
第5-7天排序算法(7种):每种手动演示一遍,复杂度背诵;图:DFS/BFS/最短路径/最小生成树能默写复杂度表格,分清稳定/不稳定
第二周
数据库+网络
第1-3天SQL语法(SELECT/JOIN/聚合/子查询);ACID四特性;索引原理;事务隔离级别能手写完整SQL解决多表查询题
第4-7天OSI七层模型;TCP三握四挥(手绘时序图);HTTP状态码;常见端口;DNS流程能默写三次握手每步报文字段,背下20个常用端口
第三周
OS+安全+软工
第1-3天进程vs线程;调度算法(含甘特图);死锁四条件+银行家算法;内存分页+置换算法能独立计算银行家算法是否安全
第4-7天加密算法(AES/RSA/哈希);网络攻击与防御;Scrum三工件四会议;设计模式(4种);Java/Python核心语法能区分对称/非对称/哈希算法,会写单例模式代码
第四周
新技术+冲刺
第1-3天云计算IaaS/PaaS/SaaS;大数据(Hadoop/Spark/Kafka);微服务(Spring Cloud组件);区块链;数字人民币;建行IT战略能用自己的话解释每个技术是什么
第4-7天整套真题模拟(限时);整理错题;薄弱模块重点强化;第十章高频考点速记表反复过模拟考试正确率达到75%以上

10.6 考前一天速览清单(最高频30条)

  1. AES密钥:128/192/256位,无512位
  2. n₀ = n₂ + 1(叶节点=度2节点+1)
  3. 不稳定排序:快选堆希
  4. 快速排序最坏:O(n²);归并/堆排序最坏:O(nlogn)
  5. 事务持久性:提交后永久生效
  6. LEFT JOIN:返回左表所有行
  7. 索引:提高查询,降低写操作效率
  8. WHERE:分组前过滤;HAVING:分组后过滤
  9. COUNT(*)含NULL,COUNT(列名)不含NULL
  10. 进程=资源分配单位;线程=调度执行单位
  11. FCFS=非抢占式
  12. 死锁四条件:互斥/请求保持/不可剥夺/循环等待
  13. 分页→内部碎片;分段→外部碎片
  14. Belady异常:只有FIFO会出现
  15. 最快IPC方式:共享内存
  16. HTTP=明文;HTTPS=加密;HTTP:80;HTTPS:443
  17. ping使用ICMP(网络层,不是传输层)
  18. TCP三次握手,TCP四次挥手,TIME_WAIT等2MSL
  19. DNS普通查询用UDP,端口53
  20. 数字签名:私钥签名,公钥验签
  21. 私有云:数据在企业自己的服务器
  22. 微服务核心优势:故障隔离
  23. Scrum三工件:Product Backlog / Sprint Backlog / Increment
  24. HashMap默认容量16,负载因子0.75,扩容2倍
  25. String不可变;StringBuilder可变不安全;StringBuffer可变线程安全
  26. finally块一定执行(即使try中有return)
  27. 等保银行核心系统:第三级
  28. Hadoop=海量非结构化数据+分布式存储计算
  29. 数字人民币发行:中国人民银行(央行)
  30. 防SQL注入最有效:参数化查询
🎯 最后的话:建行科技岗竞争激烈,但胜负就在这些细节上。理解比死记更重要——当你真正理解了"为什么TCP需要三次握手","为什么n₀=n₂+1",任何变体题都难不倒你。加油,祝顺利上岸建行! 🏦