
简介这份PDF面向备考事业单位计算机岗位的考生系统梳理计算机基础知识中的高频考点帮助在有限时间内抓住复习重点。内容围绕CPU功能与可直接访问的内存、RAM与ROM及SRAM/DRAM的区别、存储器读写特性、I/O设备与串并行接口、微处理器字长分类、指令系统与总线技术、计算机网络基本概念等展开并配有选择题及解析便于边练边记。资源包共1个PDF文件约9.23MB结构紧凑适合打印或移动端随时翻阅。目前已有258人学习下载可作为考前冲刺的查漏补缺材料也可用于日常巩固计算机硬件工作原理与存储器分类等易混知识点。1. 事业单位计算机岗考什么从一份知识点总结说起事业单位计算机类岗位的笔试考纲常年不更新但命题方向每隔两三年就会微调。很多考生拿到一份《计算机基础知识事业单位计算机考试常考知识点总结.pdf》第一反应是“背就完了”结果上了考场发现进制转换算错一步全盘皆输IP 地址划分子网完全没思路数据库范式判断靠蒙。这份材料真正的价值不在于“背”而在于它把散落在计算机基础、操作系统、网络、数据库、数据结构里的高频考点压缩成了一条可复现的复习路径。它适合三类人非计算机专业但报考了计算机岗的跨考生、计算机专业但基础课忘得差不多的在职备考者、以及需要快速过一遍知识框架的二战考生。接下来的内容我按这份总结里最常出现的几个模块把每个知识点的考法、算法、参数和踩坑点拆开讲。2. 进制转换与数据表示考场上的送分题为什么总丢分2.1 二进制、八进制、十六进制互转的手算流程事业单位考试里进制转换几乎每年必考题型无非两种选择题给一个二进制数问十六进制是多少或者填空题要求写出十进制转二进制的步骤。很多人丢分不是因为不会而是因为手算时中间步骤跳步导致进位或借位出错。我一般建议按固定流程走不要心算。以十进制转二进制为例整数部分用“除 2 取余逆序排列”小数部分用“乘 2 取整顺序排列”。下面是一个可复现的 Python 脚本用来验证手算结果def dec_to_bin(n, precision8): 十进制转二进制整数部分除2取余小数部分乘2取整 int_part int(n) frac_part n - int_part # 整数部分 bin_int bin(int_part)[2:] if int_part 0 else 0 # 小数部分 bin_frac for _ in range(precision): frac_part * 2 bit int(frac_part) bin_frac str(bit) frac_part - bit if frac_part 0: break return bin_int (. bin_frac if bin_frac else ) # 测试十进制 13.625 转二进制 print(dec_to_bin(13.625)) # 输出 1101.101这段代码的逻辑是整数部分直接调用 Python 内置的bin()函数但考试时你需要手写除 2 取余的过程小数部分通过循环乘 2 取整precision参数控制保留多少位小数默认 8 位足够应对考试中的精度要求。注意考试中如果题目没有要求保留位数一般保留到小数部分为 0 或循环节出现为止。八进制和十六进制的转换更简单二进制转八进制从小数点向两侧每 3 位一组转十六进制每 4 位一组。分组时如果不够位整数部分左侧补 0小数部分右侧补 0。这个规则听起来简单但考场上因为补零位置搞反而丢分的人不在少数。2.2 原码、反码、补码的转换规则与考试陷阱数据表示这块补码是绝对的高频考点。考试通常给一个负数问它的补码是多少或者给两个补码问相加后是否溢出。规则本身不复杂正数的原码、反码、补码相同负数的反码是原码符号位不变、其余位取反补码是反码加 1。但考场上有三个经典陷阱。第一符号位参与运算。补码运算时符号位直接参与加法不需要单独处理。第二溢出判断。两个同号数相加如果结果的符号位与操作数符号位不同则溢出。第三-128 的补码。8 位补码能表示的范围是 -128 到 127-128 的补码是 10000000它没有对应的原码和反码表示。这个点经常出现在选择题的“下列说法正确的是”里。下面用代码验证补码运算和溢出判断def twos_complement(n, bits8): 求 n 的 bits 位补码表示 if n 0: return format(n, f0{bits}b) else: return format((1 bits) n, f0{bits}b) def add_overflow(a, b, bits8): 判断两个 bits 位补码相加是否溢出 mask (1 bits) - 1 result (a b) mask # 溢出条件同号相加结果异号 overflow (a 0 and b 0 and result 0) or \ (a 0 and b 0 and result 0) return result, overflow print(twos_complement(-13)) # 11110011 print(add_overflow(100, 50)) # (150, True) 溢出 print(add_overflow(-100, -50)) # (-150, True) 溢出twos_complement函数中负数补码的计算方式是(1 bits) n这等价于先取模再转二进制。add_overflow函数里mask用于截断到指定位数溢出判断依据是“同号相加结果异号”。考试中遇到补码加法先看两个操作数符号是否相同相同才可能溢出然后用结果符号位判断。提示补码运算的溢出判断是选择题高频点记住“同号相加才溢出结果异号即溢出”这一条就够用了。3. 操作系统与进程管理PV 操作和死锁判断怎么拿满分3.1 信号量 PV 操作的解题模板操作系统部分PV 操作几乎是必考大题。题目通常描述一个并发场景比如生产者-消费者、读者-写者、哲学家进餐要求写出信号量的初值和 PV 操作序列。很多人觉得 PV 操作玄学其实它有固定套路。第一步找出所有需要互斥访问的资源每个资源设一个互斥信号量mutex初值为 1。第二步找出需要同步的先后关系比如“缓冲区满时生产者必须等待”设一个同步信号量初值根据资源数量定。第三步按“先 P 后 V”的顺序写操作序列注意 P 操作顺序不能颠倒否则可能死锁。以生产者-消费者为例缓冲区大小为 Nsemaphore mutex 1; // 互斥访问缓冲区 semaphore empty N; // 空缓冲区数量 semaphore full 0; // 满缓冲区数量 // 生产者 while (1) { produce_item(); P(empty); // 等待空缓冲区 P(mutex); // 进入临界区 put_item(); V(mutex); // 退出临界区 V(full); // 满缓冲区加一 } // 消费者 while (1) { P(full); // 等待满缓冲区 P(mutex); // 进入临界区 get_item(); V(mutex); // 退出临界区 V(empty); // 空缓冲区加一 consume_item(); }这段代码的关键在于 P 操作的顺序生产者先 P(empty) 再 P(mutex)消费者先 P(full) 再 P(mutex)。如果颠倒比如生产者先 P(mutex) 再 P(empty)当缓冲区满时生产者持有 mutex 等待 empty消费者无法进入临界区释放 empty直接死锁。考试中写 PV 操作先检查 P 操作顺序这是最常见的扣分点。3.2 死锁判断的四种方法与银行家算法死锁判断在选择题里出现频率很高常见问法是“系统是否处于死锁状态”或“至少需要多少资源才不会死锁”。判断方法有四种资源分配图化简、死锁定理、银行家算法、经验公式。资源分配图化简的规则是找到一个只有分配边没有请求边的进程节点去掉它的所有边重复直到无法化简。如果图中还有边则死锁。这个方法适合画图题。银行家算法用于判断系统是否处于安全状态。核心是找安全序列每次找一个需求小于等于当前可用资源的进程假设它执行完释放资源更新可用资源重复。如果所有进程都能加入安全序列则系统安全。考试中还有一个经验公式如果系统有 m 个资源n 个进程每个进程最多需要 w 个资源那么当n * (w - 1) 1 m时系统一定不会死锁。这个公式在选择题里可以直接套用省去画图时间。下面用代码实现银行家算法的安全序列判断def is_safe(available, max_need, allocation): 银行家算法判断安全状态 available: 当前可用资源列表 max_need: 每个进程最大需求矩阵 allocation: 当前分配矩阵 n len(max_need) # 进程数 m len(available) # 资源种类数 need [[max_need[i][j] - allocation[i][j] for j in range(m)] for i in range(n)] work available[:] finish [False] * n safe_seq [] while len(safe_seq) n: found False for i in range(n): if not finish[i] and all(need[i][j] work[j] for j in range(m)): for j in range(m): work[j] allocation[i][j] finish[i] True safe_seq.append(i) found True break if not found: return False, [] return True, safe_seq # 示例3 种资源3 个进程 available [3, 3, 2] max_need [[7, 5, 3], [3, 2, 2], [9, 0, 2]] allocation [[0, 1, 0], [2, 0, 0], [3, 0, 2]] print(is_safe(available, max_need, allocation))need矩阵是最大需求减去已分配work是当前可用资源的副本。每次循环找一个need小于等于work的未完成进程假设它执行完并释放资源。如果一轮下来找不到任何可执行进程说明系统不安全。考试中手算时按进程编号顺序找即可不需要优化。注意银行家算法判断的是“安全状态”安全状态不一定不死锁但不安全状态一定可能死锁。选择题里如果问“系统是否死锁”银行家算法只能给出安全性判断不能直接判定死锁。4. 计算机网络与 IP 划分子网掩码计算和协议分层4.1 子网划分的快速计算法IP 地址和子网掩码是网络部分的必考内容。题目通常给一个 IP 地址和子网掩码问网络地址、广播地址、可用主机数或者给一个需求问如何划分子网。很多人在这块翻车是因为二进制转换不熟练或者搞混了网络地址和广播地址。快速计算法把 IP 和掩码都写成二进制按位与得到网络地址网络地址中主机位全置 1 得到广播地址可用主机数等于 2 的主机位数次方减 2。主机位数等于 32 减去掩码中 1 的个数。举个例子IP 192.168.10.130掩码 255.255.255.192。掩码最后一段 192 的二进制是 11000000所以主机位是 6 位网络位是 26 位。网络地址是 192.168.10.128广播地址是 192.168.10.191可用主机数 62。下面用代码批量计算import ipaddress def subnet_info(ip, mask): 计算网络地址、广播地址、可用主机数 interface ipaddress.IPv4Interface(f{ip}/{mask}) network interface.network return { network: str(network.network_address), broadcast: str(network.broadcast_address), hosts: network.num_addresses - 2, netmask: str(network.netmask) } print(subnet_info(192.168.10.130, 255.255.255.192)) # {network: 192.168.10.128, broadcast: 192.168.10.191, hosts: 62, netmask: 255.255.255.192}ipaddress模块是 Python 标准库考试时不能使用但可以用来验证手算结果。num_addresses返回的是总地址数减去网络地址和广播地址就是可用主机数。注意如果掩码是 /31 或 /32可用主机数的计算规则不同但事业单位考试一般不会考这么偏。4.2 OSI 七层与 TCP/IP 四层的对应关系协议分层是选择题高频点常见问法是“ARP 协议工作在哪一层”“HTTP 基于哪个传输层协议”。OSI 七层从下到上是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP 四层是网络接口层、网际层、传输层、应用层。对应关系OSI 的物理层和数据链路层对应 TCP/IP 的网络接口层网络层对应网际层传输层对应传输层会话层、表示层、应用层对应应用层。常考协议归属ARP 和 RARP 工作在数据链路层也有教材归为网络层考试以教材为准IP、ICMP、IGMP 工作在网络层TCP、UDP 工作在传输层HTTP、FTP、SMTP、DNS 工作在应用层。DNS 比较特殊它既用 TCP 也用 UDP区域传送用 TCP域名解析用 UDP。考试中如果问“某协议在哪一层”先判断它是为哪一层服务的。比如 ARP 是为了把 IP 地址解析成 MAC 地址MAC 地址是数据链路层的概念所以 ARP 归数据链路层。提示协议分层题不要死记抓住“这个协议解决什么问题”来判断。IP 解决寻址和路由归网络层TCP 解决可靠传输归传输层。5. 数据库与数据结构范式判断和排序算法复杂度5.1 关系范式判断的三步法数据库范式是事业单位考试的高频考点题目通常给一个关系模式和一些函数依赖问它属于第几范式。判断范式有固定步骤。第一步找候选键。候选键是能唯一标识元组的最小属性集。通过函数依赖推导找出所有能推出全部属性的属性组合去掉多余的属性。第二步判断是否存在部分函数依赖。如果存在非主属性依赖于候选键的一部分则不是 2NF。第三步判断是否存在传递函数依赖。如果存在非主属性依赖于非主属性则不是 3NF。以关系模式 R(A, B, C, D) 和函数依赖 F {A→B, B→C, A→D} 为例。候选键是 A因为 A 能推出 B、C、D。非主属性是 B、C、D。B 依赖于 AC 依赖于 B所以 C 传递依赖于 A不满足 3NF但满足 2NF。最终答案是 2NF。考试中判断范式先写候选键再标非主属性然后检查部分依赖和传递依赖。不要跳步跳步容易漏掉传递依赖。5.2 排序算法的时间复杂度与稳定性对比数据结构部分排序算法的复杂度和稳定性是选择题常客。常考的排序算法有八种直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序。时间复杂度方面平均情况下快速排序、归并排序、堆排序是 O(n log n)其他是 O(n²)。最坏情况下快速排序是 O(n²)归并排序和堆排序仍是 O(n log n)。空间复杂度方面归并排序是 O(n)快速排序是 O(log n)其他是 O(1)。稳定性方面稳定的排序有直接插入排序、冒泡排序、归并排序、基数排序。不稳定的有希尔排序、快速排序、简单选择排序、堆排序。考试中常问“下列排序算法中最坏情况下时间复杂度最小的是”答案是归并排序和堆排序。如果问“空间复杂度最大的是”答案是归并排序。如果问“稳定的且时间复杂度为 O(n log n) 的是”答案是归并排序。下面用代码验证快速排序的最坏情况def quicksort(arr): 快速排序取第一个元素为基准 if len(arr) 1: return arr pivot arr[0] left [x for x in arr[1:] if x pivot] right [x for x in arr[1:] if x pivot] return quicksort(left) [pivot] quicksort(right) # 最坏情况已排序数组 import time arr list(range(1000)) start time.time() quicksort(arr) print(f已排序数组耗时: {time.time() - start:.4f}s) # 随机数组 import random arr [random.randint(0, 1000) for _ in range(1000)] start time.time() quicksort(arr) print(f随机数组耗时: {time.time() - start:.4f}s)这段代码的快速排序取第一个元素为基准当输入已经有序时每次划分只能减少一个元素递归深度为 n时间复杂度退化为 O(n²)。随机数组的递归深度接近 log n时间复杂度为 O(n log n)。考试中如果问“快速排序在什么情况下最坏”答案是“待排序序列已经有序或逆序”。注意快速排序的稳定性取决于划分策略但标准快速排序是不稳定的。考试中如果问稳定性直接选“不稳定”。6. 备考策略与考场技巧从知识点总结到得分6.1 知识点总结的使用方法拿到一份《计算机基础知识事业单位计算机考试常考知识点总结.pdf》不要从头到尾背。我的习惯是分三轮用。第一轮快速过一遍把每个知识点的考法标出来比如“进制转换选择题填空题”“PV 操作大题”。第二轮按考法分类选择题考点只记结论和陷阱大题考点动手写步骤。第三轮考前一周只看错题和易混淆点。具体操作上我会把总结里的知识点分成三类送分题进制转换、协议分层、拉分题PV 操作、银行家算法、放弃题偏门考点如特定版本的协议细节。送分题必须拿满拉分题尽量拿步骤分放弃题不浪费时间。6.2 考场时间分配与检查策略事业单位计算机岗的笔试时间通常比较紧选择题和大题混排。我的时间分配是选择题每题不超过 1 分钟大题每题不超过 15 分钟。遇到卡壳的题先标记跳过做完所有题再回头。检查策略上优先检查三类题计算题进制转换、子网划分、PV 操作题、范式判断题。这三类题最容易因为粗心丢分。计算题重新算一遍PV 操作检查 P 操作顺序范式判断检查传递依赖。下面是一个考场时间分配的参考表题型建议时间检查重点选择题1 分钟/题补码溢出、协议分层进制转换5 分钟小数部分精度PV 操作10 分钟P 操作顺序子网划分8 分钟网络地址和广播地址范式判断8 分钟传递依赖排序复杂度3 分钟最坏情况和稳定性这张表不是死的根据题量和难度调整。关键是不要在某一题上死磕一道 2 分的选择题不值得花 5 分钟。6.3 一个容易被忽略的提分技巧最后说一个我自己的血泪经验考前一周把近三年真题里所有计算题重新手算一遍不要用计算器。事业单位考试不允许带计算器手算速度直接决定你能不能做完。进制转换、子网划分、补码运算这三类计算题每天练 10 道练到形成肌肉记忆。另外PV 操作和银行家算法的大题考前至少手写 5 遍完整过程。很多人觉得自己会了上了考场发现 P 操作顺序写反或者安全序列找不全。手写和心算的差距在考场上会被放大。希望帮到你。本文还有配套的精品资源点击获取