覆盖10大模块 · 含原理讲解 · 生活类比 · 典型例题 · 易错点提示
建设银行信息技术岗(科技类)招聘通常分为以下阶段:
| 题型 | 特点 | 答题技巧 |
|---|---|---|
| 单选题 | 4个选项选1个,最常见 | 排除法,答完检查,切勿空题 |
| 多选题 ⚠️ | 4-5个选项选多个,错选/少选/多选均0分 | 只选100%确定的,宁少勿错 |
| 判断题 | 对或错,有时错误不扣分 | 留意绝对化词语,含"一定/全部/绝对"大概率为错 |
| 模块 | 大约占比 | 重要度 | 建议备考时间 |
|---|---|---|---|
| 数据结构与算法 | 约20% | ⭐⭐⭐⭐⭐ | 第一优先 |
| 数据库系统 | 约20% | ⭐⭐⭐⭐⭐ | 第一优先 |
| 操作系统 | 约18% | ⭐⭐⭐⭐⭐ | 第二优先 |
| 计算机网络 | 约17% | ⭐⭐⭐⭐⭐ | 第二优先 |
| 编程语言(Java/Python) | 约8% | ⭐⭐⭐⭐ | 第三优先 |
| 软件工程 | 约6% | ⭐⭐⭐⭐ | 第三优先 |
| 信息安全 | 约6% | ⭐⭐⭐⭐ | 第三优先 |
| 金融科技/新技术 | 约5% | ⭐⭐⭐ | 第四优先 |
这是建行笔试占比最高的模块,必须重点掌握。本章用大量例子和类比帮助你从零理解每种数据结构。
核心操作时间复杂度:
O(1)(直接用下标计算地址)O(n)(需要把i之后的元素全部后移)O(n)(需要把i之后的元素全部前移)| 类型 | 特点 | 示意 |
|---|---|---|
| 单链表 | 每个节点有数据域+next指针,只能向后遍历 | A→B→C→D→NULL |
| 双链表 | 每个节点有prev和next两个指针,可双向遍历 | NULL←A⇌B⇌C⇌D→NULL |
| 循环链表 | 尾节点的next指向头节点,形成环 | A→B→C→D→(回A) |
头插法:每次把新节点插到链表头部 → 最终链表顺序与插入顺序相反(逆序)
例:依次插入1,2,3,4 → 链表:4→3→2→1
尾插法:每次把新节点插到链表尾部 → 最终链表顺序与插入顺序相同(顺序)
例:依次插入1,2,3,4 → 链表:1→2→3→4
为了避免"假溢出"(数组没满但不能再插入),使用循环队列:
front == rear(rear + 1) % MaxSize == front(牺牲一个空间来区分队空和队满)(rear - front + MaxSize) % MaxSize先记住关键术语:节点的度=它有几个子节点;叶节点=度为0(没有子节点)的节点;树的深度=树的层数。
| 性质 | 公式 | 例子验证 |
|---|---|---|
| 第i层最多节点数 | 2i-1(i从1开始) | 第3层最多 2²=4 个节点 |
| 深度为k的二叉树最多节点数 | 2k-1 | 深度3最多 2³-1=7 个节点 |
| 叶节点数 = 度为2节点数+1 | n₀ = n₂ + 1 | 见下方推导 |
| 完全二叉树深度 | ⌊log₂n⌋ + 1 | n=7时深度=⌊log₂7⌋+1=3 |
设叶节点数=n₀,度为1的节点数=n₁,度为2的节点数=n₂,总节点数=n
n = n₀ + n₁ + n₂n - 1 = n₁ + 2n₂ → n₀ + n₁ + n₂ - 1 = n₁ + 2n₂ → n₀ = n₂ + 1以下面这棵树为例说明三种遍历:
A
/ \
B C
/ \ \
D E F
| 遍历方式 | 顺序 | 结果 | 记忆口诀 |
|---|---|---|---|
| 前序遍历 | 根 → 左 → 右 | A, B, D, E, C, F | "根"在最前 |
| 中序遍历 | 左 → 根 → 右 | D, B, E, A, C, F | "根"在中间 |
| 后序遍历 | 左 → 右 → 根 | D, E, B, F, C, A | "根"在最后 |
完全二叉树可以用数组存储,节点i(从1开始编号)的:
2i2i+1⌊i/2⌋构造过程:给定权值,每次选两个最小权值的节点合并,重复直到只剩一个节点。
示例:权值为 {2, 3, 6, 8, 9},构造哈夫曼树:
哈夫曼编码是一种前缀编码,用于数据压缩(出现频率高的字符用短编码)。
| 存储方式 | 适用场景 | 特点 |
|---|---|---|
| 邻接矩阵 | 稠密图(边多) | 判断两点是否相邻O(1),空间O(V²) |
| 邻接表 | 稀疏图(边少) | 遍历邻居高效,空间O(V+E) |
| 算法 | 适用 | 复杂度 | 特点 |
|---|---|---|---|
| Dijkstra | 单源,非负权图 | O(V²) 或 O(ElogV) | 贪心策略,每次选最短的未访问节点 |
| Floyd | 全源,允许负权(无负环) | O(V³) | 动态规划,三重循环 |
| Bellman-Ford | 单源,允许负权 | O(VE) | 可检测负权环 |
以数组 [5, 3, 8, 1, 9, 2] 为例,演示各排序算法:
第1趟:3,5,8,1,9,2 → 3,5,1,8,9,2 → 3,5,1,8,2,9(9到末尾)
第2趟:...最终 8 到倒数第二位
第1轮:找最小值1,与第1位5交换 → [1,3,8,5,9,2]
第2轮:从[3,8,5,9,2]找最小2,与3交换 → [1,2,8,5,9,3]
初始已排序部分[5],取3→插入得[3,5],取8→[3,5,8],取1→[1,3,5,8],以此类推
过程(以5为基准):
[5,3,8,1,9,2] → 左边[3,1,2],基准5,右边[8,9] → 递归处理两边
| 算法 | 平均时间 | 最坏时间 | 空间 | 稳定性 |
|---|---|---|---|---|
| 冒泡排序 | 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) | ✅稳定 |
前提:必须是有序数组
示例:在 [1,3,5,7,9,11,13] 中查找 7
查找 11 的过程:
时间复杂度描述算法运行时间随数据规模增大的增长趋势,用大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)| 约束类型 | 含义 | 示例 |
|---|---|---|
| 实体完整性 | 主键不能为NULL,不能重复 | 银行账号不能为空,不同账户不能有相同账号 |
| 参照完整性 | 外键值必须在被参照表中存在(或为NULL) | 转账记录里的账户ID必须在账户表中存在 |
| 用户定义完整性 | 业务规则约束 | 账户余额不能为负数,年龄必须在0-150之间 |
-- 查询所有列 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过滤分组后的结果
假设有两张表:
学生表(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) |
COUNT(*):统计所有行数(包含NULL行)COUNT(列名):统计该列非NULL的行数(不包含NULL!)NULL + 任何值 = NULL:NULL参与计算结果全为NULLIS NULL / IS NOT NULL:判断是否为NULL(不能用 = NULL)| 特性 | 英文 | 含义 | 转账示例 |
|---|---|---|---|
| 原子性 | Atomicity | 事务要么全部执行,要么全部回滚,不可分割 | -100和+100要么都成功,要么都不做 |
| 一致性 | Consistency | 事务前后数据库保持一致状态(满足所有约束) | 转账前后A+B的总金额不变 |
| 隔离性 | Isolation | 并发事务互不干扰,中间状态对其他事务不可见 | 转账过程中,其他事务看不到A已-100但B未+100的中间状态 |
| 持久性 | Durability | 提交的事务结果永久保存,不受系统崩溃影响 | 转账成功提交后,即使服务器断电,数据也不会丢失 |
| 问题 | 定义 | 示例 |
|---|---|---|
| 脏读 | 读到其他事务未提交的数据 | 事务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) | ✅ | ✅ | ✅ | 最低 |
范式是为了减少数据冗余、避免更新异常而制定的设计规则。
[学号, 姓名, 系别, 系主任, 课程号, 课程名, 成绩]| 范式 | 要求 | 消除什么问题 |
|---|---|---|
| 1NF | 每个属性值不可再分(原子性) | 确保每格只有一个值(不能把"张三,李四"放在同一格) |
| 2NF | 在1NF基础上,消除非主属性对主键的部分依赖 | 每个非主键列必须完全依赖于整个主键(适用于联合主键) |
| 3NF | 在2NF基础上,消除非主属性对主键的传递依赖 | 非主键列A不能通过另一个非主键列B依赖主键(如:学号→系别→系主任,"系主任"传递依赖"学号") |
| BCNF | 每个决定因素都是候选键 | 比3NF更严格,消除主属性对主键的部分/传递依赖 |
| 类型 | 特点 | 数量限制 |
|---|---|---|
| 聚簇索引 | 数据行按索引顺序物理存储,叶节点直接存数据行 | 每表只能有一个(通常是主键) |
| 非聚簇索引 | 叶节点存储的是指向数据行的指针(主键值),需要"回表"查询完整数据 | 可以有多个 |
建立联合索引 (a, b, c):
WHERE a=1 —— 可以使用索引WHERE a=1 AND b=2 —— 可以使用索引WHERE a=1 AND b=2 AND c=3 —— 可以使用索引WHERE b=2 —— 不能使用索引(跳过了a)WHERE b=2 AND c=3 —— 不能使用索引(跳过了a)Redis是基于内存的键值数据库,速度极快(读10万QPS+),支持五种数据类型:
| 数据类型 | 特点 | 银行业务应用场景 |
|---|---|---|
| String(字符串) | 最基本类型,可存数字 | 缓存用户Session、验证码(设过期时间)、计数器(原子+1) |
| Hash(哈希) | field-value映射,类似Map | 缓存用户信息对象(name、age、balance等字段) |
| List(列表) | 有序可重复,双端队列 | 消息队列(LPUSH存/RPOP取)、最近登录记录 |
| Set(集合) | 无序不重复,支持集合运算 | 用户标签、共同好友(交集)、去重 |
| ZSet(有序集合) | 每个元素有score分值,自动排序 | 积分排行榜、延时队列(score存执行时间戳) |
| 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信号传输 |
| 对比项 | TCP | UDP |
|---|---|---|
| 连接方式 | 面向连接(需三次握手) | 无连接(直接发送) |
| 可靠性 | 可靠(确认+重传) | 不可靠(尽力而为) |
| 速度 | 慢(开销大) | 快(开销小) |
| 头部大小 | 最小20字节 | 固定8字节 |
| 适用场景 | 文件传输、网页、邮件(需要完整性) | 视频直播、游戏、DNS(需要速度) |
| 流量/拥塞控制 | 有(滑动窗口) | 无 |
客户端 服务器 |--- 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表示"我也不发了"。
客户端发完最后的ACK后,要等待2MSL(2倍最大报文段生存时间,约2~4分钟)才真正关闭,原因:
| 状态码 | 含义 | 常见场景 |
|---|---|---|
| 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 | POST |
|---|---|---|
| 参数位置 | URL中(?key=value) | 请求体中(不可见) |
| 数据长度 | URL有长度限制(约2KB) | 无限制(理论上) |
| 安全性 | 低(参数暴露在URL中,有历史记录) | 相对高(参数在Body中) |
| 幂等性 | 幂等(多次请求结果相同) | 非幂等(多次提交可能创建多条记录) |
| 用途 | 查询(不改变服务器数据) | 提交数据(登录、上传、支付) |
HTTPS = HTTP + TLS加密,使用混合加密:非对称加密交换密钥,对称加密传输数据。
| 协议 | 端口 | 传输层 | 功能 |
|---|---|---|---|
| FTP | 21(控制)/20(数据) | TCP | 文件传输 |
| SSH | 22 | TCP | 安全远程登录(替代Telnet) |
| Telnet | 23 | TCP | 远程登录(明文,不安全) |
| SMTP | 25 | TCP | 邮件发送 |
| DNS | 53 | UDP(普通查询)/TCP | 域名解析 |
| HTTP | 80 | TCP | 网页传输 |
| HTTPS | 443 | TCP | 安全网页传输 |
| MySQL | 3306 | TCP | MySQL数据库 |
| Redis | 6379 | TCP | Redis缓存 |
| RDP | 3389 | TCP | Windows远程桌面 |
以浏览器访问 www.ccb.com 为例:
| 对比项 | 进程 | 线程 |
|---|---|---|
| 定义 | 资源分配的基本单位 | 调度执行的基本单位 |
| 地址空间 | 独立的虚拟地址空间 | 共享所在进程的地址空间 |
| 包含的资源 | 代码段、数据段、堆、栈、文件描述符、PCB | 独立的栈和程序计数器,其余共享 |
| 通信方式 | IPC(管道、消息队列、共享内存、Socket…) | 直接读写共享内存(但需加锁) |
| 切换开销 | 大(需切换地址空间) | 小(同一地址空间内切换) |
| 安全性 | 进程间隔离,一个崩溃不影响其他 | 线程共享进程,一个线程崩溃可能影响整个进程 |
新建(New) ──────→ 就绪(Ready) ←────── 阻塞(Blocked)
↓ ↑ ↑
调度↓ ↑时间片到 I/O等待
↓ ↑
运行(Running) ──等待I/O──→ 阻塞(Blocked)
↓
终止(Terminated)
| 方式 | 特点 | 适用场景 |
|---|---|---|
| 管道(Pipe) | 半双工,只能在有亲缘关系的进程间使用,数据先进先出 | 父子进程通信 |
| 命名管道(FIFO) | 可在无亲缘关系进程间使用,以文件形式存在 | 独立进程间通信 |
| 消息队列 | 内核维护的消息链表,有格式,支持按类型读取 | 进程间异步通信 |
| 共享内存 | 最快的IPC方式,直接读写同一块内存,但需自行同步 | 大量数据快速共享 |
| 信号量(Semaphore) | 用于同步和互斥,PV操作 | 控制对共享资源的访问 |
| Socket | 可跨网络通信,最灵活 | 分布式系统、网络通信 |
多个进程竞争CPU,操作系统需要用调度算法决定谁先用CPU。
| 算法 | 是否抢占 | 特点 | 缺点 |
|---|---|---|---|
| FCFS(先来先服务) | ❌非抢占 | 简单公平,按到达顺序执行 | 短作业等长作业,平均等待时间长 |
| SJF(最短作业优先) | ❌/✅均可 | 平均等待时间最短 | 长作业可能永远等待(饥饿) |
| 时间片轮转(RR) | ✅抢占 | 公平,每个进程轮流执行一个时间片 | 时间片太小→上下文切换开销大;太大→退化为FCFS |
| 优先级调度 | ✅/❌均可 | 高优先级先执行 | 低优先级进程可能饥饿 |
| 多级反馈队列 | ✅抢占 | 综合多种算法,动态调整优先级 | 复杂,实现难度大 |
进程: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最先完成),平均等待时间更均衡
每次分配资源前,检查分配后系统是否还处于"安全状态"(存在安全序列),若安全则分配,否则等待。
示例:系统有3类资源(A=10,B=5,C=7),3个进程:
| 进程 | 已分配(A,B,C) | 最大需求(A,B,C) | 还需要(A,B,C) |
|---|---|---|---|
| P0 | 0,1,0 | 7,5,3 | 7,4,3 |
| P1 | 2,0,0 | 3,2,2 | 1,2,2 |
| P2 | 3,0,2 | 9,0,2 | 6,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)✅,以此类推找到安全序列→系统安全
当物理内存满了,要把哪个页换出去腾位置,就是页面置换。
以访问序列 1,2,3,4,1,2,5,1,2,3,4,5,物理帧数=3为例:
| 算法 | 缺页次数 | 置换策略 |
|---|---|---|
| OPT(最优) | 6次 | 置换将来最久不被使用的页(理论最优,无法实现) |
| LRU(最近最少使用) | 8次 | 置换最近最长时间未被访问的页(效果好但实现复杂) |
| FIFO(先进先出) | 9次 | 置换最先进入内存的页(实现简单,效果差) |
| 命令 | 用途 | 示例 |
|---|---|---|
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 | 实时查看日志文件末尾 | 排查线上问题必用 |
| 算法 | 密钥长度 | 状态 | 特点 |
|---|---|---|---|
| DES | 56位有效密钥(64位含校验位) | 已不安全(可被破解) | 最早的标准对称加密算法 |
| 3DES | 112位或168位 | 逐渐淘汰 | 对数据做三次DES加密,过渡方案 |
| AES | 128/192/256位 | ✅当前主流标准 | 安全高效,HTTPS、Wi-Fi、磁盘加密都用它 |
| 算法 | 基于的数学难题 | 特点 |
|---|---|---|
| RSA | 大整数分解(两个大质数相乘容易,分解极难) | 最广泛使用,密钥通常2048位 |
| ECC | 椭圆曲线离散对数 | 相同安全性下密钥更短,适合移动端 |
| 算法 | 摘要长度 | 状态 | 用途 |
|---|---|---|---|
| MD5 | 128位(32个十六进制字符) | 已不安全(可碰撞) | 文件完整性校验(非安全场景) |
| SHA-1 | 160位 | 已不安全 | 逐渐淘汰 |
| SHA-256 | 256位 | ✅安全 | HTTPS证书签名、区块链、密码存储 |
密码存储正确方式:不要直接存明文密码,也不要只用哈希,应该:hash(密码 + 随机盐值),防止彩虹表攻击。
发送方(张三): 1. 对消息M计算哈希值 H = SHA256(M) 2. 用张三的【私钥】加密H,得到签名S 3. 发送 M + S 接收方(李四): 4. 用张三的【公钥】解密S,得到H1 5. 对收到的M重新计算哈希值 H2 = SHA256(M) 6. 若 H1 == H2,则签名有效(消息未被篡改,且确实是张三发的)
数字签名提供:① 身份认证(确认是张三发的)②不可否认性(张三不能否认)③完整性(消息未被篡改)
问题:我怎么知道"张三的公钥"是真的张三的,而不是被中间人替换了?
解决:由权威的证书颁发机构(CA)用自己的私钥对"张三的身份信息+公钥"进行数字签名,颁发数字证书。任何人用CA的公钥验签,就能确认证书是真实的。
| 攻击类型 | 原理 | 示例 | 防御方法 |
|---|---|---|---|
| SQL注入 | 在用户输入中插入SQL代码,被服务器执行 | 用户名输入 admin'--,绕过密码验证 | 参数化查询(PreparedStatement)、ORM框架、输入校验 |
| XSS跨站脚本 | 在网页中注入恶意JS脚本,窃取用户Cookie/数据 | 评论区输入 <script>document.cookie</script> | 对输出HTML编码(< → <)、CSP内容安全策略 |
| CSRF跨站请求伪造 | 利用用户已登录状态,在第三方页面发起恶意请求 | 钓鱼网站嵌入银行转账图片,用户点击自动转账 | CSRF Token、SameSite Cookie、Referer验证 |
| DDoS | 大量请求耗尽服务器资源,使其无法正常服务 | 僵尸网络同时向银行APP发送百万请求 | CDN+防火墙、流量清洗、限流熔断 |
| 中间人攻击(MITM) | 攻击者插入通信链路中,窃听或篡改数据 | 公共Wi-Fi下截取HTTP流量 | HTTPS(TLS加密)+证书验证 |
全称:网络安全等级保护制度2.0,是我国网络安全的基本制度。
| 等级 | 适用范围 | 监管部门 |
|---|---|---|
| 第一级(自主保护) | 一般信息系统,破坏后影响个人 | 无强制要求 |
| 第二级(指导保护) | 影响公民、法人权益,一般企业内部系统 | 公安机关指导 |
| 第三级(监督保护) | 影响社会秩序和公共利益,银行核心系统通常在此级别 | 公安机关监督检查 |
| 第四级(强制保护) | 关键基础设施,影响国家安全 | 国家专门部门强制检查 |
| 第五级(专控保护) | 极端重要,国防等顶级系统 | 国家专门部门专控 |
"三同步"原则:安全设施与信息系统同步规划、同步建设、同步运行(即安全不能是事后补救,必须从设计阶段就考虑)
| 模型 | 特点 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 瀑布模型 | 线性顺序,各阶段严格依次进行,不可回头 | 文档完善,阶段清晰,便于管理 | 需求变更代价大,测试在最后才发现问题 | 需求明确稳定的项目(如银行监管系统) |
| 螺旋模型 | 风险驱动,迭代进行,每轮都有风险评估 | 适合高风险大型项目 | 复杂,管理难度大 | 大型、创新型、高风险项目 |
| 敏捷开发 | 迭代增量,小步快跑,拥抱变化 | 响应变化快,持续交付可用软件 | 文档不足,需要团队高度协作 | 需求多变、互联网产品 |
| 原型模型 | 先做粗糙原型让用户确认,再正式开发 | 尽早获取用户反馈,减少误解 | 可能导致用户期望过高 | 需求不明确、UI/UX密集型项目 |
| 工件 | 含义 | 谁维护 |
|---|---|---|
| Product Backlog(产品待办列表) | 所有待完成需求的有序列表,按业务价值排序,持续更新 | 产品负责人(PO) |
| Sprint Backlog(迭代待办列表) | 本次Sprint要完成的任务子集,由团队在Sprint计划会上选定 | 开发团队 |
| Increment(产品增量) | Sprint结束时交付的、可用的软件版本,必须满足"完成的定义(DoD)" | 开发团队 |
| 类型 | 视角 | 测试方法 | 优点 | 缺点 |
|---|---|---|---|---|
| 黑盒测试 | 用户视角,不看代码,只看功能 | 等价类划分、边界值分析、因果图 | 发现功能缺陷,贴近用户 | 无法保证代码覆盖率 |
| 白盒测试 | 开发视角,基于代码结构 | 语句覆盖、分支覆盖、路径覆盖 | 覆盖率高,发现逻辑错误 | 成本高,不能发现需求缺陷 |
银行存款金额限制:1元 ~ 99999元(整数)
| 阶段 | 测试对象 | 由谁测试 | 目的 |
|---|---|---|---|
| 单元测试 | 最小代码单元(函数/方法/类) | 开发人员自测 | 验证每个函数逻辑正确 |
| 集成测试 | 模块间的接口和交互 | 开发/测试人员 | 验证模块协作正常 |
| 系统测试 | 完整的软件系统 | 专职测试人员 | 验证系统功能、性能、安全 |
| 验收测试(UAT) | 完整系统,从用户角度 | 用户/业务人员 | 确认满足业务需求 |
| 回归测试 | 修改后的系统 | 测试人员 | 确认修改未引入新Bug |
设计模式是针对软件设计中反复出现问题的标准化解决方案,共23种,分三大类:
| 分类 | 关注点 | 包含模式 |
|---|---|---|
| 创建型(5种) | 如何创建对象 | 单例、工厂方法、抽象工厂、建造者、原型 |
| 结构型(7种) | 如何组合类和对象 | 适配器、桥接、组合、装饰器、外观、享元、代理 |
| 行为型(11种) | 对象间的通信和职责 | 观察者、策略、模板方法、迭代器、责任链等 |
保证一个类只有一个实例,提供全局访问点。
// 饿汉式(类加载时就创建,线程安全) public class Singleton { private static final Singleton INSTANCE = new Singleton(); private Singleton() {} // 私有构造器,禁止外部new public static Singleton getInstance() { return INSTANCE; } }
一对多依赖,被观察者状态变化时自动通知所有观察者。
为目标对象提供代理,控制对目标的访问,可在访问前后增加逻辑。
将一组算法封装成独立的类,使它们可以相互替换,客户端不依赖具体实现。
public class BankAccount { private double balance; // 私有属性,外部不可直接访问 public double getBalance() { return balance; } // 公开getter public void deposit(double amount) { if (amount > 0) balance += amount; // 加入业务逻辑校验 } }
class BankAccount { // 父类 protected String accountId; protected double balance; public void printStatement() { /* 打印流水 */ } } class SavingsAccount extends BankAccount { // 子类,继承父类 private double interestRate; // 子类特有属性 public void calculateInterest() { /* 计算利息 */ } }
方法重写(Override)vs 方法重载(Overload)——超高频考点!
| 对比项 | 方法重写(Override) | 方法重载(Overload) |
|---|---|---|
| 发生位置 | 子类重写父类方法 | 同一个类中多个同名方法 |
| 方法名 | 必须相同 | 必须相同 |
| 参数列表 | 必须相同 | 必须不同(类型/数量/顺序) |
| 返回类型 | 必须相同(或子类型) | 可以不同 |
| 访问权限 | 子类不能比父类更严格 | 无限制 |
| 决定时机 | 运行时(动态绑定) | 编译时(静态绑定) |
| 类 | 可变性 | 线程安全 | 性能 | 使用场景 |
|---|---|---|---|---|
| String | 不可变(final) | 安全(不可变天然线程安全) | 频繁修改时差(每次创建新对象) | 字符串不变的场景 |
| StringBuilder | 可变 | 不安全 | 最快 | 单线程频繁字符串拼接 |
| StringBuffer | 可变 | 安全(方法synchronized) | 较慢 | 多线程字符串操作 |
Throwable
├── Error(JVM级错误,通常不处理)
│ ├── OutOfMemoryError(内存不足)
│ └── StackOverflowError(递归太深)
└── Exception(程序可处理的异常)
├── RuntimeException(运行时异常/非受检异常,可以不捕获)
│ ├── NullPointerException(空指针)
│ ├── ArrayIndexOutOfBoundsException(数组越界)
│ └── ClassCastException(类型转换错误)
└── 受检异常(必须捕获或声明throws)
├── IOException
└── SQLException
try-catch-finally:finally块中的代码一定会执行(即使try中有return)throw:在方法体内抛出异常实例;throws:在方法签名上声明可能抛出的异常类型| 对比项 | 接口(interface) | 抽象类(abstract class) |
|---|---|---|
| 实例化 | 不能实例化 | 不能实例化 |
| 方法 | 默认全为抽象方法(Java8可有default/static方法) | 可以有抽象方法和具体方法 |
| 属性 | 只能有public static final常量 | 可以有各种成员变量 |
| 构造器 | ❌没有构造器 | ✅有构造器 |
| 继承/实现 | 类可以implements多个接口 | 类只能extends一个抽象类 |
| 使用场景 | 定义能力/行为规范(如:Comparable、Runnable) | 有公共代码复用需求的父类(如:AbstractList) |
| 方式 | 代码示例 | 特点 |
|---|---|---|
| 继承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 | volatile |
|---|---|---|
| 保证原子性 | ✅ | ❌(i++这样的复合操作不原子) |
| 保证可见性 | ✅ | ✅ |
| 保证有序性 | ✅ | ✅(禁止指令重排序) |
| 性能 | 较低(加锁/解锁开销) | 较高(无锁) |
| 使用场景 | 需要原子性的复合操作 | 只需可见性的简单读写(如状态标志位) |
| 区域 | 线程共享 | 存储内容 | 常见异常 |
|---|---|---|---|
| 堆(Heap) | ✅共享 | 所有对象实例和数组,GC主要区域 | OutOfMemoryError |
| 方法区/元空间 | ✅共享 | 类信息、常量池、静态变量、JIT编译代码 | OutOfMemoryError |
| 虚拟机栈 | ❌线程私有 | 方法调用栈帧(局部变量、操作数栈、返回地址) | StackOverflowError |
| 本地方法栈 | ❌线程私有 | Native方法(C/C++实现的方法) | StackOverflowError |
| 程序计数器 | ❌线程私有 | 当前线程执行的字节码行号 | 唯一不会OOM的区域 |
| 数据类型 | 特点 | 示例 |
|---|---|---|
| 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}元")
| 模式 | 全称 | 用户负责 | 典型产品 |
|---|---|---|---|
| IaaS | 基础设施即服务 | OS、中间件、应用、数据 | 阿里云ECS、AWS EC2、Azure VM |
| PaaS | 平台即服务 | 应用和数据 | Google App Engine、Heroku、阿里云容器服务 |
| SaaS | 软件即服务 | 只管用 | Office 365、Salesforce、钉钉、企业微信 |
| 部署模型 | 特点 | 适用场景 |
|---|---|---|
| 公有云 | 第三方运营,多用户共享资源,按需付费 | 创业公司、互联网业务 |
| 私有云 | 企业独立部署在自己的服务器上,数据存储在私有服务器,完全控制 | 银行、政府等对数据安全要求极高的机构 |
| 混合云 | 结合公有云和私有云,敏感数据在私有云,其他业务用公有云 | 大型银行(建行)常用模式 |
| 社区云 | 特定群体(如金融机构)共同使用的云 | 金融云、政务云 |
| 对比项 | 虚拟机(VM) | 容器(Docker) |
|---|---|---|
| 隔离级别 | 完整OS级别隔离 | 进程级隔离(共享宿主OS内核) |
| 启动速度 | 分钟级 | 秒级 |
| 体积 | GB级(含完整OS) | MB级 |
| 性能开销 | 较大(需模拟硬件) | 接近原生(共享内核) |
| 适用场景 | 需要强隔离、不同OS环境 | 微服务部署、快速扩缩容 |
Kubernetes(K8s):容器编排平台,自动管理大量Docker容器的部署、扩缩容、负载均衡、自愈(容器挂了自动重启)。
| 组件 | 功能 | 关键特点 |
|---|---|---|
| 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,支持海量数据随机读写,适合稀疏数据 |
| 对比项 | 单体架构 | 微服务架构 |
|---|---|---|
| 部署 | 整体打包部署 | 每个服务独立部署 |
| 扩展 | 整体扩展(浪费) | 按需扩展热点服务 |
| 故障隔离 | 一处出错可能影响整体 | 故障隔离(一个服务挂了不影响其他) |
| 技术栈 | 统一技术栈 | 每个服务可用不同技术 |
| 复杂度 | 低 | 高(服务治理、分布式事务等) |
| 组件 | 功能 | 类比 |
|---|---|---|
| Nacos / Eureka | 服务注册与发现 | 电话本:记录所有服务的地址 |
| OpenFeign | 声明式HTTP客户端 | 让服务间调用像调用本地方法一样简单 |
| Sentinel / Hystrix | 熔断降级限流 | 保险丝:服务异常时自动断开,防止雪崩 |
| Gateway | API网关 | 门卫:统一入口,鉴权、路由、限流 |
| Nacos Config | 配置中心 | 配置文件统一管理,修改后热更新无需重启 |
| Zipkin / SkyWalking | 链路追踪 | 快递物流:追踪一次请求经过哪些服务 |
| 应用场景 | 技术 | 建行实践 |
|---|---|---|
| 智能风控 | 机器学习(异常检测、信用评分) | 反欺诈系统,实时识别异常交易 |
| 智能客服 | NLP(自然语言处理)、知识图谱 | 建行"小微"智能客服,处理高频问题 |
| 智能投顾 | 量化模型、推荐算法 | 个性化理财产品推荐 |
| OCR识别 | 计算机视觉 | 身份证、票据自动识别录入,RPA流程自动化 |
| 大语言模型 | Transformer、LLM | 内部知识问答、代码辅助、合规审查 |
| 概念 | 解释 | 建行相关 |
|---|---|---|
| 核心银行系统(CBS) | 处理存款、贷款、支付等核心业务的系统,是银行的"心脏" | 建行新一代核心系统已完成分布式改造 |
| CNAPS | 中国现代化支付系统:大额实时(HVPS)+小额批量(BEPS) | 建行接入央行清算系统 |
| 反洗钱(AML) | 5万元以上大额现金交易需上报,可疑交易需报告 | 系统自动识别可疑交易模式 |
| 个人金融信息保护 | 金融数据分级(C1/C2/C3),不同级别采用不同保护措施 | 等保三级要求,数据本地化存储 |
| DevOps | 开发(Dev)+运维(Ops)一体化,持续集成/持续部署(CI/CD) | 建行推进敏捷研发,缩短需求到上线周期 |
| 考点 | 答案 | 关键解析 |
|---|---|---|
| 顺序表删第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(写前日志)实现,崩溃后可恢复 |
| 事务隔离性英文 | Isolation | ACID中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默认端口 | 6379 | MySQL:3306, Redis:6379, MongoDB:27017 |
| 考点 | 答案 | 关键解析 |
|---|---|---|
| HTTP协议基于什么传输层协议 | TCP | HTTP/HTTPS/FTP/SMTP/SSH都基于TCP |
| ping命令使用什么协议 | ICMP(网络层) | 不是TCP/UDP!ICMP直接封装在IP报文中 |
| HTTPS端口号 | 443 | HTTP: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异常的是 | FIFO | LRU和OPT不会出现Belady异常 |
| 分页产生什么碎片 | 内部碎片(最后一页装不满) | 分段产生外部碎片;段页式两种都有 |
| 速度最快的进程通信方式 | 共享内存 | 直接读写同一块内存,无需复制,但需配合信号量同步 |
| 用户态切换到内核态的时机 | 系统调用、中断、异常 | 普通程序运行在用户态,调用OS服务时切换到内核态 |
| 考点 | 答案 | 关键解析 |
|---|---|---|
| AES支持的密钥长度 | 128/192/256位(没有512位!) | 超高频易错点,512位不是AES的密钥长度 |
| HTTPS使用的加密协议 | SSL/TLS | TLS是SSL的升级版,现代HTTPS用TLS 1.2/1.3 |
| 数字签名用私钥还是公钥签名 | 私钥签名,公钥验签 | 与加密相反:加密是公钥加密私钥解密 |
| 防SQL注入最有效的方法 | 参数化查询(预编译语句) | 用户输入作为参数而非SQL代码拼接,根本上解决注入 |
| MD5是什么类型的算法 | 哈希/摘要算法(单向不可逆) | 不是加密算法!不可逆,128位输出,已不安全 |
| 银行核心系统通常是等保几级 | 第三级(少数达第四级) | 等保三级需定期接受公安机关监督检查 |
| 考点 | 答案 | 关键解析 |
|---|---|---|
| 私有云的核心特征 | 数据存储在企业自己的服务器上 | 私有云是部署位置/所有权的概念,不是不用云技术 |
| 微服务核心优势 | 故障隔离(单服务故障不影响整体) | 配合熔断降级实现,防止故障级联扩散 |
| Scrum三个工件 | Product Backlog、Sprint Backlog、Increment | 三个工件必须背,PO维护Product Backlog |
| Docker相比虚拟机的优势 | 启动快(秒级)、体积小(MB)、资源占用少 | 共享宿主OS内核,无需模拟完整OS |
| 数字人民币发行主体 | 中国人民银行(央行) | 双层运营:央行→商业银行→公众 |
| 干扰方式 | 示例 | 应对策略 |
|---|---|---|
| 数字替换 | 把AES密钥128→512,把HTTPS端口443→80 | 记住关键数字:AES(128/192/256)、HTTPS(443)、SSH(22) |
| 层次混淆 | 说TCP在网络层,说ARP在传输层 | 牢记七层模型各层对应协议 |
| 概念互换 | 把"进程是调度单位"说成"线程是资源分配单位" | 记住:进程=资源分配,线程=调度执行 |
| 绝对化表述 | "索引一定能提高查询效率"、"堆排序一定比冒泡快" | 含"一定/全部/绝对/永远"的选项大概率错误 |
| 相似词混淆 | Override(重写)和Overload(重载),throw和throws | 关注英文原词含义,结合代码场景理解 |
| 周次 | 每天 | 学习内容 | 完成标准 |
|---|---|---|---|
| 第一周 数据结构+算法 | 第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%以上 |