计算机考研复试真题解析:六大科目考点与答题技巧 简介这份资料是武汉理工大学计算机专业考研复试的真题汇编面向备考该校计算机研究生的考生尤其适合需要系统梳理复试考点、把握命题风格的复习者。压缩包内共1个doc文档约21KB内容按年份整理了2004至2007年的复试题目覆盖计算机原理、数据结构、编译原理、操作系统、计算机网络、数据库等核心课程。题目涉及中断机制、分组交换与电路交换、TDM/FDM/CDMA、IP地址与子网掩码、数据完整性、数据库设计步骤、进程状态转换、软件重用、同步与异步通信、查找算法评估、面向对象设计局限、8086寄存器、流水线调度、栈与队列溢出、死锁必要条件、Cache原理、TCP/IP三次握手等高频考点并附有英语命题与翻译题型。已有1680人学习下载可帮助考生熟悉复试题型分布、检验知识盲区并针对薄弱环节进行专项突破。1. 从一道“三维数组地址计算”说起这场复试到底考什么很多人第一次翻计算机考研复试真题会被一道题直接打懵三维数组A[10][10][10]按行优先存储每个元素占三个存储单位首地址 1000求A[5][4][2]的地址。看起来是数据结构其实是计算机原理里“地址计算”的底层逻辑。这场复试不跟你玩虚的它把计算机原理、数据结构、编译原理、操作系统、计算机网络、数据库六门课揉在一张卷子上考的是你能不能把知识串起来用。复试规模大约七八百人分数普遍不低意味着笔试拉不开差距时面试和专业课深度就是分水岭。适合谁适合那些初试过了、但不知道复试从哪下手的人。拿分逻辑很简单基础题不丢分综合题能写步骤英文题能读懂专业材料。下面按考点模块拆开讲每一块都配真题和答题思路。2. 六大科目考点分布从真题反推复习优先级2.1 计算机原理中断、DMA、流水线、Cache 是四大金刚计算机原理在复试里从不缺席而且喜欢考“对比型”和“过程型”题目。2004 年考了“什么是中断、中断源、中断处理程序”2005 年考了“中断的过程是如何进行的”以及“中断方式和 DMA 方式的区别”2006 年考了“ADD 指令执行的原地址和目标地址问题”2004 年还考了“8086 的寄存器按功能分几组”和“流水线结构和非流水线结构有什么区别”。这类题的答题套路是先给定义再讲过程最后说区别或优点。比如中断处理程序你不能只写“处理中断的程序”要写出“CPU 暂停当前程序保存现场转去执行中断服务程序执行完后恢复现场并返回”这个完整链条。DMA 和中断的区别核心就一句话DMA 不经过 CPU 直接在主存和外设之间传数据中断需要 CPU 执行服务程序。答题时把“谁控制数据传输”“是否占用 CPU 周期”“适用场景”三个维度列出来基本满分。流水线那道题面试官最想听的是“流水线提高吞吐量但不缩短单条指令执行时间”以及“非流水线最优调度要处理数据依赖”。如果你能补一句“结构冒险、数据冒险、控制冒险”说明你复习到位了。提示计算机原理的题画图比纯文字得分高。中断流程画箭头流水线画时空图DMA 画总线连接阅卷老师一眼就能看到你的思路。2.2 数据结构数组地址、堆排序、最小生成树、查找算法数据结构是复试里分值最稳的一块。2005 年考了三维数组地址计算和大根堆排序过程2006 年考了“画最优三路归并树”和“编程实现在无序数组 1-n 中找第 m 大的数”2007 年考了“求叶子节点的个数”和“用 prim 算法求最小生成树”。2004 年还考了“如何衡量一个查找算法的好坏顺序查找、二分查找的优缺点及使用场合”。三维数组地址计算公式是地址 首地址 (i * 第二维长度 * 第三维长度 j * 第三维长度 k) * 每个元素占用单位数。代入A[5][4][2]首地址 1000每个元素 3 个单位结果是1000 (5*10*10 4*10 2)*3 1000 542*3 2626。这类题必须写公式再代入只写答案没有过程分。大根堆排序先建堆再逐个交换堆顶和末尾元素。以28、35、13、98、5、87、21为例建堆后堆顶是 98和 21 交换再调整重复直到有序。答题时画出每一步的完全二叉树比只写数字序列更清楚。找第 m 大的数朴素做法是排序后取时间复杂度 O(n log n)。如果面试官追问优化可以提快速选择算法平均 O(n)。代码可以这样写def find_mth_largest(arr, m): # 先对数组排序再取第 m 大的元素 arr_sorted sorted(arr, reverseTrue) return arr_sorted[m - 1] # 示例 nums [3, 1, 4, 1, 5, 9, 2, 6] print(find_mth_largest(nums, 3)) # 输出 5这段代码先降序排序再取索引m-1。参数arr是输入数组m是目标排名。如果要求不能改变原数组用sorted返回新列表。面试时如果被问“能不能不排序”就答快速选择选一个基准把比它大的放左边小的放右边看基准位置和 m 的关系递归处理一边。2.3 操作系统进程状态、线程、死锁、段页式、文件系统操作系统在复试里考得又细又活。2004 年考了“进程的状态及如何转换”和“死锁产生的必要条件是什么他们同时也是充分条件吗”2005 年考了“简述进程的转化过程。进程调度的时机有哪些”和“什么是线程线程和进程有什么区别引进线程的好处是什么”2005 年还考了“段式和页式管理的主要区别”和“为了保证文件系统的安全性有哪些保护措施”。进程状态转换标准答案是三态模型就绪、运行、阻塞。转换关系是就绪→运行被调度、运行→就绪时间片到、运行→阻塞等待资源、阻塞→就绪资源到位。答题时画状态图标注转换条件比文字描述更直观。死锁四个必要条件互斥、占有并等待、不可剥夺、循环等待。它们只是必要条件不是充分条件。也就是说四个条件同时满足不一定死锁但死锁一定四个都满足。防止死锁就是破坏其中一个条件比如资源一次性分配破坏“占有并等待”按序分配破坏“循环等待”。线程和进程的区别面试官想听的是进程是资源分配单位线程是调度单位同一进程的线程共享地址空间切换开销小引进线程为了提高并发度和系统吞吐量。段式和页式的区别核心是页是物理单位段是逻辑单位页大小固定段长度可变页式对用户透明段式对用户可见。2.4 计算机网络分组交换、TCP 三次握手、CSMA/CD、IP 地址网络部分考得广但不深。2004 年考了“为什么网络使用分组交换而不是用电路交换”“TDM、FDM、CDMA 的含义及使用”“TCP/IP 为什么采用三次握手进行通讯”2005 年考了“OSI 的体系结构与 TCP/IP 体系结构进行对比”“CSMA/CD 的工作原理”“IP 地址及其表示方法”“连续 ARQ 协议的工作原理”2006 年考了“HUB 的意义及其应用。说说共享 HUB 与交换 HUB 之间的区别”。分组交换 vs 电路交换答题要点分组交换按需共享带宽电路交换独占通道分组交换适合突发性数据电路交换适合实时语音分组交换有存储转发延迟电路交换没有。三次握手核心是防止已失效的连接请求突然到达服务器造成资源浪费。答题时把“客户端发 SYN、服务器回 SYNACK、客户端再发 ACK”三步写清楚再补一句“两次握手无法确认客户端接收能力”。CSMA/CD 的工作原理先听后发、边发边听、冲突停发、随机重发。连续 ARQ 协议发送方连续发送多个帧接收方累积确认出错时回退重传。IP 地址表示方法点分十进制A/B/C/D/E 五类子网掩码用来划分网络号和主机号。2.5 数据库ACID、设计步骤、完整性约束、SQL 与关系代数数据库的题偏概念和设计。2004 年考了“数据库设计的步骤”和“数据完整的含义”2005 年考了“事务的 ACID 代表什么意思它与数据库完整性数据库恢复有何关系”“数据库设计的步骤是什么数据模型的三要素是”“什么是数据完整性约束其主要包括哪几个方面”2007 年考了“用 SQL 表示 R 并上 X”和“已知道一个 SQL 语句求用关系式表示”。ACID 是原子性、一致性、隔离性、持久性。和完整性的关系一致性保证事务执行前后数据库满足完整性约束和恢复的关系持久性靠日志恢复原子性靠回滚。数据库设计步骤需求分析、概念设计、逻辑设计、物理设计、实施、运行维护。数据模型三要素数据结构、数据操作、完整性约束。SQL 并操作SELECT * FROM R UNION SELECT * FROM X。关系代数并操作R ∪ X。答题时注意 UNION 去重UNION ALL 不去重。如果题目要求“用关系式表示”就写π_{所有属性}(R) ∪ π_{所有属性}(X)。2.6 编译原理文法转换、语法树、短语与句柄、逆波兰式编译原理的题有固定套路。2006 年考了“将文法 S-aB|bA;A-aS;B-bS 转化为正规文法”2005 年考了“试述编译的各个阶段”“给出一些文法然后要你找出短语、直接短语、句柄等”“写出一个语法树”2005 年还考了“求表达式------的逆波兰式”。文法转正规文法关键是消除左递归、提取公因子然后写成 A-aB 的形式。编译阶段词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。短语、直接短语、句柄画语法树找子树叶子节点组成的符号串。逆波兰式就是后缀表达式用栈转换。注意编译原理的题画语法树是得分关键。只写答案不画树阅卷老师很难给满分。3. 高频真题逐题拆解从 2004 到 2007 的答题模板3.1 中断与 DMA过程型题目的三段式答法2004 年真题“什么是中断、中断源、中断处理程序”2005 年真题“中断的过程是如何进行的在计算机系统是有哪些外设可以设置为虚拟的请举例说说。”2005 年还有一道“中断方式和 DMA 方式的区别是什么”这类题的答题模板是定义 过程 对比。定义部分中断是 CPU 暂停当前程序转去处理突发事件中断源是触发中断的信号来源比如键盘、定时器、I/O 完成中断处理程序是处理特定中断的服务程序。过程部分写“保存现场→转中断服务程序→执行→恢复现场→返回”。对比部分DMA 不经过 CPU直接在主存和外设间传数据适合大批量数据中断需要 CPU 介入适合处理突发事件。面试官最想听的是“中断向量”和“中断优先级”。如果你能补一句“中断向量表存放中断服务程序入口地址”说明你不仅背了概念还理解了机制。3.2 三次握手与 CSMA/CD协议型题目的分层答法2004 年真题“TCP/IP 为什么采用三次握手进行通讯”2005 年真题“CSMA/CD 的工作原理。”三次握手答题分三层第一层客户端发 SYN服务器回 SYNACK客户端再发 ACK第二层为什么不是两次因为两次握手无法确认客户端的接收能力旧连接请求可能突然到达第三层为什么不是四次因为三次已经能确认双方收发能力四次浪费。CSMA/CD答题分四步先听后发、边发边听、冲突停发、随机重发。补一句“以太网使用 CSMA/CD但全双工交换式以太网不需要”。3.3 进程同步与互斥编程型题目的伪代码答法2006 年真题“A、B、C 三个进程A 是输入进程B 是计算进程C 是打印进程问题 1ABC 是否存在同步问题。2有几种方法可以实现同步。3同步和互斥的区别。”这道题是典型的进程同步题。答题思路先判断存在同步问题因为 A 的输出是 B 的输入B 的输出是 C 的输入。然后写伪代码用信号量实现semaphore empty1 1, full1 0; // A 和 B 之间的缓冲区 semaphore empty2 1, full2 0; // B 和 C 之间的缓冲区 // 进程 A while (1) { P(empty1); // 输入数据到缓冲区1 V(full1); } // 进程 B while (1) { P(full1); // 从缓冲区1取数据计算 V(empty1); P(empty2); // 计算结果放入缓冲区2 V(full2); } // 进程 C while (1) { P(full2); // 从缓冲区2取数据打印 V(empty2); }这段代码用两个信号量对实现同步。P操作等待资源V操作释放资源。参数empty表示缓冲区空位full表示缓冲区数据。同步和互斥的区别同步是协作关系互斥是竞争关系同步信号量初值通常为 0互斥信号量初值为 1。3.4 数据库设计与 SQL设计型题目的步骤答法2005 年真题“数据库设计的步骤是什么数据模型的三要素是”2007 年真题“用 SQL 表示 R 并上 X。”数据库设计步骤按顺序写需求分析、概念设计、逻辑设计、物理设计、数据库实施、数据库运行和维护。数据模型三要素数据结构、数据操作、完整性约束。SQL 并操作SELECT * FROM R UNION SELECT * FROM X。如果要求关系代数写R ∪ X。面试官最想听的是“概念设计用 E-R 图逻辑设计转关系模式”。如果你能补一句“E-R 图转关系模式时1:n 联系把 1 方主键放到 n 方”说明你做过实际设计。3.5 编译原理与算法计算型题目的步骤答法2006 年真题“将文法 S-aB|bA;A-aS;B-bS 转化为正规文法。”2007 年真题“用已经学过的知识求 PI 并且给出推导过程要求用 C 或者 C实现其算法并给出误差分析。”文法转正规文法先看产生式S 产生 aB 或 bAA 产生 aSB 产生 bS。这是右线性文法已经是正规文法的一种。如果要求写成正规式可以写成(a b)* a或类似形式。求 PI 的题是开放题。用泰勒公式展开1/(1x^2)积分从 0 到 1 得到π/4所以π 4 * (1 - 1/3 1/5 - 1/7 ...)。代码#include stdio.h int main() { double pi 0.0; int sign 1; for (int i 1; i 1000000; i 2) { pi sign * 1.0 / i; // 累加每一项 sign -sign; // 符号交替 } pi * 4; // 乘以 4 得到 π printf(π ≈ %.10f\n, pi); return 0; }这段代码用莱布尼茨级数逼近 π。sign控制正负号循环次数越多精度越高。误差分析截断误差与项数成反比项数 100 万时精度约 10^-6。面试时如果被问“有没有更快的方法”可以答蒙特卡洛法或 Machin 公式。4. 易错点与失分点这些坑每年都有人踩4.1 数组地址计算维度顺序搞反错在哪三维数组A[10][10][10]按行优先存储有人把A[5][4][2]算成5*10*10 2*10 4。为什么错行优先是先排第一维再排第二维最后排第三维所以第二维乘的是第三维长度第三维不乘。怎么答对公式写死i * 第二维长度 * 第三维长度 j * 第三维长度 k代入前先确认存储顺序。4.2 死锁四个条件误以为是充分条件错在哪题目问“他们同时也是充分条件吗”有人答“是”。为什么错四个条件是必要条件不是充分条件。同时满足不一定死锁因为可能没有形成循环等待的实际资源分配。怎么答对明确写“必要条件不是充分条件”再补一句“破坏任一条件可预防死锁”。4.3 三次握手答成“两次就够了”错在哪有人觉得两次握手就能建立连接。为什么错两次握手无法确认客户端的接收能力旧连接请求可能突然到达服务器服务器回复确认后客户端不响应服务器资源浪费。怎么答对写“三次握手确认双方收发能力防止失效连接请求”。4.4 数据库设计步骤顺序写反错在哪把“逻辑设计”写在“概念设计”前面。为什么错概念设计是 E-R 图逻辑设计是关系模式必须先有概念模型才能转逻辑模型。怎么答对背死顺序“需求分析→概念设计→逻辑设计→物理设计→实施→运行维护”。4.5 编译原理短语与句柄不画语法树直接写错在哪只写短语和句柄不画语法树。为什么错短语和句柄的定义依赖语法树不画树无法验证。怎么答对先画语法树再找每个子树的叶子节点最左直接短语是句柄。5. 复试答题技巧从时间分配到英文题应对笔试时间通常两小时25 道题满分 100 分。平均每题 4.8 分钟但有的题 9 分有的题 15 分。时间分配原则基础题 3 分钟综合题 8 分钟英文题 10 分钟。先扫一遍卷子把送分题标出来比如 2007 年的“磁盘访问时间计算”和“程序阅读转非递归”这些题先做稳住心态。英文题是很多人的翻车点。2004 年最后一道是英语题先选择再翻译材料是计算机方面的。2005 年第 24、25 题用英语命题要求用英语回答“What is HTTP and FTP?”和“List six items that should be addressed by security policies。”2006 年第 8 题要求先翻译再写代码。应对策略平时背计算机专业英语词汇HTTP 是超文本传输协议FTP 是文件传输协议安全策略要写访问控制、身份认证、审计、加密、备份、物理安全。答题时先写中文翻译再用英文回答英文句子简单点没关系关键词写对就行。面试环节面试官最想听的是你的思路不是标准答案。遇到不会的题先说“这个问题我从以下几个方面理解”然后往你熟悉的知识点上靠。比如问“面向对象设计是万能的吗”你可以答“不是面向对象适合业务逻辑复杂的场景但高性能计算场景可能用面向过程更合适”。从那以后我每次拿到复试真题都强制走一遍“先分类、再写步骤、最后补对比”的流程。希望帮到你。本文还有配套的精品资源点击获取