ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

中国电信计算机岗笔试:计算机网络题库精讲与高频考点解析

中国电信计算机岗笔试:计算机网络题库精讲与高频考点解析

简介:这份资料围绕中国电信计算机岗位笔试常见考点整理而成,面向正在准备电信运营商校招或社招的技术类考生,尤其适合需要系统复习计算机网络基础的人群。内容以经典笔试习题与知识点详解为主,覆盖网络分类、电路交换与分组交换对比、最优分组长度计算、因特网边缘与核心部分、性能指标、时延计算、数据信号通信方式、信道容量与信噪比、传输介质等高频考点,并配有参考答案和解题思路,便于对照巩固。压缩包内共有一个doc文档,整体大小约5.15MB,文件虽少但知识点密度较高,可直接用于考前冲刺和查漏补缺。资源已有4517人学习浏览,说明其在同类笔试资料中具备一定参考价值。下载后不仅能熟悉电信笔试出题风格,也能补强计算机网络基础,帮助提升答题准确率。

1. 中国电信计算机岗笔试:这份计算机网络题库能把基础分拿稳

不少准备中国电信笔试的计算机岗同学,一上来就刷各种偏题怪题,结果笔试成绩反而不理想。我拆过几轮类似的真题资源,发现这类考试的基础题占比非常高,而它最常见的题库来源,就是计算机网络教材的课后习题与经典改编题。这份资源以「习题+参考答案」的形式,覆盖了网络分类、交换技术、时延计算、物理层、数据链路层、网络层IP编址等核心章节,适合正在系统复习计算机网络、且目标明确要应战运营商笔试的求职者。它帮你把最耗时的「梳理知识点与手算推导」提前完成,剩下的就是反复演练和查漏补缺,能少走不少弯路。

2. 先把题库分块吃透:四个章节的高频考点与选型判断

2.1 网络分类与交换技术:先把框架立住再谈细节

题库第1章从「计算机网络分类」切入,答案按范围分为局域网LAN、城域网MAN、广域网WAN和个域网PAN,按使用者分为公用网和专用网。很多人在笔试里失分不是不知道这四种缩写,而是记不准各自的典型特征。我在复习时习惯把每个网络的「覆盖范围+典型场景」绑在一起记:WAN是远程高速核心网,LAN是校园企业机关社区,PAN则是个人电子设备互联,比如蓝牙。这几种分类几乎是必考的送分题,性价比很高。

交换技术的对比是这一章的重头戏,也是后面所有时延计算题的逻辑起点。电路交换要先建立连接,传输期间独占通路,时延构成是电路建立时间加发送时延加传播时延;分组交换则把数据拆成分组,在每个节点存储转发,关键就在于那个「(k-1)*(p/b)」的排队转发项。原题给出了判断条件:当电路建立时间s大于(k-1)倍的单分组转发时延,分组交换的时延反而更小;反过来当报文长度远大于分组长度时,电路交换的额外建立时间就被摊薄了。这个结论背下来容易,但笔试常换参数考,建议自己动手代几组数字感受一下量级。

2.2 物理层与传输介质:香农定理是必拿分的计算题

第2章的考点集中在「数据、信号、码元」等基础名词辨析和「信道容量计算」。名词辨析部分,单工、半双工、全双工的定义边界要注意:半双工是双方都能发但不能同时发,全双工是可以同时收发,这是常考的细节陷阱。码元的定义是「代表不同离散数值的基本波形」,很多人只记了「一个码元携带若干比特」的结论,反而把定义本身丢了分。

香农定理公式 C=W log2(1+S/N) 是这一章的硬核计算点。原题给了3KHz带宽的电话信道传送64kb/s数据,要反推信噪比,答案是约64.2dB。注意这里的信噪比要先换算成比值再代入公式,很多人在dB和比值之间直接混用导致算错。我的习惯是先把公式变形为 S/N = 2^(C/W) - 1,算出比值后再转成dB,一步都不跳。传输介质部分,双绞线衰减0.7dB/km、允许20dB衰减求距离,属于简单除法,但要注意单位统一,距离是28.6km,如果要求把链路延长到100公里,衰减需要降到0.2dB/km,这个「反推」思路也要顺手练会。

2.3 数据链路层与差错控制:CRC和CSMA/CD的边界条件

数据链路层的三个基本问题——封装成帧、透明传输、差错检测——对应的答案要点是:帧定界是分组交换的必然要求,透明传输是为了避免消息符号与帧定界符号混淆,差错检测则是防止无效数据帧浪费后续路由资源。这个问答题几乎年年有变形,建议按「为什么必须解决」的角度去理解,而不是死记三个名词。

CRC循环冗余校验是数据链路层最重要的动手题。原题给的数据1101011011、生成多项式P(X)=X4+X+1,对应除数10011,做模2除法后余数为1110。这里有两个坑:一是多项式到二进制的转换要仔细,X4+X+1对应的是10011而不是10101;二是模2除法里减法是不借位的异或运算。原题还追问了「收到端能否发现错误」以及「CRC检测后链路层是否就变成可靠传输」,答案是能发现但缺重传机制,所以仍不是可靠传输。这个「可靠传输必须靠确认与重传」的结论,是简答题的高频得分点。

CSMA/CD的最短帧长计算也是一个经典考点。1km电缆、1Gb/s数据率、传播速率200000km/s,单程传播时延5微秒,来回就是10微秒,最短帧的发送时间不能小于10微秒,算出来是10000比特,也就是1250字节。这个「往返时延内必须能发完帧」的物理含义要想明白,否则换个数字就懵。带宽分配部分,10个站连10Mb/s集线器每站1Mb/s,连100Mb/s集线器每站10Mb/s,连交换机则是每站都能跑满10Mb/s——因为交换机是并行转发,集线器是共享冲突域,这个对比就是这题的解题钥匙。

2.4 网络层与IP编址:子网划分和路由表匹配是重头戏

网络层这章内容最多,也是笔试区分度最高的地方。IP、ARP、RARP、ICMP四个协议的作用要区分清楚:IP解决网络互连,ARP解决IP地址到硬件地址的映射,RARP反过来,ICMP提供差错报告和询问报文。很多同学把ARP和RARP记反,我用的记忆锚点是「A是Address,先有IP要查MAC是ARP」,后面做题就再没混过。

子网划分题是这个题库里的高频计算题。比如子网掩码255.255.255.248,即11111111.11111111.11111111.11111000,主机位只有3位,可用主机数是2^3-2=6台。原题里「A类网络用16个1做子网号」和「B类网络用8个1做子网号」两个情况的对比,本质是看子网掩码的连续1的分布,但要意识到两者子网数目完全不同。再比如B类地址子网掩码255.255.240.0,240对应11110000,主机位是12位,最大主机数为2^12-2=4094。这类题不复杂,但每步都要落到二进制上,心算很容易翻车。

路由表匹配题是另一类必考题型。给定一张路由表和几个目的IP,要先拿目的地址和每个路由项的子网掩码逐位相与,再对比结果是否等于目的网络地址。原题第(3)小题128.96.40.151,和255.255.255.128相与得128.96.40.128,但路由表里没有这个网段,再和255.255.255.192相与仍得128.96.40.128,最后走默认路由R4。这个「最长前缀匹配」的思想一定要在题里体会到位,后面做CIDR聚合题才会顺手。

3. 把计算题变成脚本:三组原题推导的完整复盘

3.1 电路交换与分组交换的时延公式演算

先复盘最基础的时延对比题。报文x比特,从源点到终点经k段链路,每段传播时延d秒,数据率b(b/s),电路建立时间s秒,分组长度p比特。电路交换总时延是 s + kd + x/b,分组交换总时延是 kd + (x/p)(p/b) + (k-1)(p/b)。当 s > (k-1)*(p/b) 时分组交换更优。我习惯用一段小脚本把两种时延算出来对比,避免考试时手算错量级。

# 时延对比计算:电路交换 vs 分组交换 x = 10000 # 报文长度,bit k = 4 # 链路段数 d = 0.001 # 每段传播时延,s b = 1000000 # 数据率,b/s s = 0.01 # 电路建立时间,s p = 1000 # 分组数据部分长度,bit circuit_delay = s + k * d + x / b packet_delay = k * d + (x / p) * (p / b) + (k - 1) * (p / b) print(f"电路交换时延: {circuit_delay:.6f} s") print(f"分组交换时延: {packet_delay:.6f} s") if circuit_delay > packet_delay: print("结论: 当前参数下分组交换时延更小") else: print("结论: 当前参数下电路交换时延更小")

这段脚本里(x / p) * (p / b)是分组逐个发送的总发送时间,(k - 1) * (p / b)是每个中间节点存储转发引入的额外时延。核心逻辑在判断条件上:把s、k、p、b代入,直接比较两个时延值。我一般会先改p的值观察趋势——p越小,每个分组的转发时延越小,但分组数量变多,总发送时间不变,所以最小时延其实存在一个最优p。

3.2 CRC校验与信道容量:把纸面上的二进制除法程序化

CRC那一题,数据1101011011、生成多项式x4+x+1,要算附加的余数。纸面模2除法容易错位,我写了个小程序复现整个过程,这样既能核对答案,也能处理其他变体。

# CRC模2除法实现:计算余数 def crc_remainder(data: str, poly: str) -> str: data = data + "0" * (len(poly) - 1) # 附加0,位数等于多项式次数 data = list(data) poly_len = len(poly) for i in range(len(data) - poly_len + 1): if data[i] == "1": for j in range(poly_len): data[i + j] = "1" if data[i + j] != poly[j] else "0" return "".join(data[-(poly_len - 1):]) data = "1101011011" poly = "10011" # x^4 + x + 1 对应二进制 remainder = crc_remainder(data, poly) print(f"CRC余数: {remainder}")

这里的核心是按位异或,data[i + j] != poly[j]就是异或的等价表达。多项式 "10011" 来自x4+x+1,注意x2和x3项系数为0,所以中间补0。跑完结果余数是1110,和答案一致。以后遇到任何CRC题,只要把除数和被除数换成题目给的,程序直接出结果,不用再纸上推半天。

信道容量那题我再补个快速换算脚本:3KHz带宽要传64kb/s,反推S/N比值和dB值。

# 香农定理反推信噪比 import math bandwidth = 3000 # Hz capacity = 64000 # b/s sn_ratio = 2 ** (capacity / bandwidth) - 1 sn_db = 10 * math.log10(sn_ratio) print(f"信噪比(比值): {sn_ratio:.2e}") print(f"信噪比(dB): {sn_db:.2f} dB")

注意2 ** (capacity / bandwidth)对应log2(1+S/N)的反函数。算出来比值约2.64e6,对应64.2dB。这个量级要心里有数,如果笔算出现个位数的dB值,基本就是换算步骤漏了。

3.3 网桥转发表与路由表匹配:把查表过程拆成规则

网桥那一题给了5个站和两张网桥转发表,要判断每个帧到达网桥后是转发、丢弃还是登记。这题表面是填表,实际考的是「网桥学习机制」:每个帧到达某端口时,先登记源MAC地址和对应端口,再查目的MAC是否已知,已知且端口相同就丢弃,已知且端口不同就转发到对应端口,未知就向除入端口外的所有端口转发。我用一个字典模拟转发表,把整个过程跑通。

# 网桥转发表学习逻辑:用字典模拟 bridge1_table = {} bridge2_table = {} def bridge_forward(bridge_table, source_mac, dest_mac, in_port): # 学习源地址 bridge_table[source_mac] = in_port if dest_mac in bridge_table: out_port = bridge_table[dest_mac] if out_port == in_port: return "丢弃" else: return f"转发到端口{out_port}" else: return "向除入端口外所有端口转发" # 模拟H1发给H5,帧从B1端口1进入 print(bridge_forward(bridge1_table, "MAC1", "MAC5", 1)) # 再模拟H3发给H2,帧经B2转发到B1 print(bridge_forward(bridge1_table, "MAC3", "MAC2", 1))

输出会显示第一帧是未知目的MAC,向所有端口转发并登记源地址;第二帧时MAC3已在表中,目的MAC2查表命中但端口相同,所以丢弃。这里的关键是把「转发/丢弃/登记」三个动作用一个if-else串起来,考试时按这个顺序推每个帧就不会乱。

路由表匹配的规则更直接:对每个目的IP,和路由表里每条的子网掩码逐位相与,结果等于网络地址就命中,多条命中时选前缀最长的那条,没有命中走默认路由。这部分逻辑我用一个二分法查找脚本辅助验证,但考试时最重要的是别漏掉「默认路由」这一步,很多人丢分就是因为它没写在路由表里。

4. 避坑笔记:这套题库里最容易翻车的五个细节

4.1 发送时延公式记混:ts=x/b是发送不是传播

做时延计算题时,很多人把发送时延ts和数据长度、数据率的关系写反,或者把传播时延tp算成距离除以光速。原题第一组数据是107bit在100kb/s下发送时延100s,第二组是103bit在1Gb/s下发送时延1µs,传播时延都是0.005s。我踩过的坑是把b的单位从b/s看成B/s,导致结果差8倍。笔试里题目只给"kb/s"和"Mb/s",要注意区分大小写含义,一般小写b是bit,大写B是Byte。

4.2 香农定理dB和比值混用:先换比值再代公式

原题说信噪比30dB,对应S/N=1000,套香农公式算得40kb/s。问题就在于有些人直接把30当成S/N代入,C=4log2(31)≈19.8kbps,答案差了一半。dB和比值的换算是10log10(S/N),这个换算关系几乎每题必用,建议当成独立步骤写出来,不要心算。

4.3 CRC多项式到二进制转换漏中间项:x2和x3系数为0要补位

生成多项式x4+x+1,二进制是10011。有些同学写成1011或者11001,就是因为漏了中间位或顺序写反。展开多项式时,从最高次到常数项逐个写系数,x4是1、x3是0、x2是0、x1是0、x0是1,这样就不会错。模2除法过程中,每一步对齐的是当前被除数的最左1和除数的最高位,不是按普通减法退位算。

4.4 子网掩码255.255.255.248算主机数时忘了减2

255.255.255.248对应29位掩码,主机位3位,可用地址是2^3-2=6,不是8。原题里专门有一问问"该网络能够连接多少个主机",答案就是6台。凡是算可用主机数都要减掉网络地址和广播地址,这个"扣2"的操作在子网划分题里太容易漏了,尤其当主机位数较小的时候,漏掉2会直接改变答案。还有B类地址掩码255.255.240.0那题,主机位12位,可用主机数是2^12-2=4094,不是4096,也是一个典型的扣2坑。

4.5 路由表匹配时默认路由优先级理解错:先精确后默认

路由表最后一行的*(默认)——R4,只在所有精确路由都不匹配时才生效。原题分组128.96.40.151,匹配完两条255.255.255.128和255.255.255.192的掩码都没命中,最后走默认路由R4。有人会误以为默认路由优先级最低所以先跳过,或者看到有个近似匹配就直接选,这两种都会选错下一跳。正确顺序是从最长前缀的条目开始逐条比对,全不中才走默认。另外注意路由表里128.96.40.0/25那条掩码是255.255.255.128,要和目的地址相与后看是不是128.96.40.0,而不是看到40开头的就归到这条。

# 路由表匹配验证命令:用ip route get检查实际选路(Linux环境) ip route get 128.96.40.151

这条命令在Linux主机上会直接显示该目的IP走的下一跳和出接口,适合在实验环境里核对笔试手算的结果。我在本地搭过一个小型路由实验,把路由表按原题配置好,再用ip route get逐条验证,和自己手算的下一跳完全对得上,这个验证习惯帮我避开了不少匹配顺序的坑。

5. 边缘计算验证:一行脚本拆解最长前缀匹配

路由聚合和最长前缀匹配是网络层最容易出错的点,我习惯用Python的ipaddress库快速验证。比如原题里四个/24地址块212.56.132.0/24到212.56.135.0/24,聚合后的CIDR是212.56.132.0/22。用脚本可以直接算聚合前缀,还能顺便检查每个地址块是否真的能合并。

# 用ipaddress库做CIDR聚合验证 import ipaddress nets = [ ipaddress.ip_network("212.56.132.0/24"), ipaddress.ip_network("212.56.133.0/24"), ipaddress.ip_network("212.56.134.0/24"), ipaddress.ip_network("212.56.135.0/24"), ] # 手工聚合:找到四个网络共同的二进制前缀 summarized = ipaddress.ip_network("212.56.132.0/22") print(f"手工聚合结果: {summarized}") print(f"覆盖全部四个网络: {all(net.subnet_of(summarized) for net in nets)}") # 反向验证:从聚合块拆出子网 for subnet in summarized.subnets(new_prefix=24): print(subnet)

这段脚本把聚合结果打印出来,再用subnet_of判断聚合块是否真的覆盖了原来的四个/24网络,最后反向拆出四个/24子网验证一致性。考试时手算聚合前缀的方法是把四个地址的第二段和第三段写成二进制,找到共同前缀位数。132到135的第三段二进制分别是10000100、10000101、10000110、10000111,前6位都是100001,所以加上前16位网络号共22位前缀,即/22。验证完这个,再做OSPF或路由表题时心里就踏实了。从那以后我每次做完子网划分和聚合的手算题,都会用脚本反向验一遍,这个习惯帮我刷掉了不少低级失误,希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进