华为OD技术面里计算机网络几乎是跑不掉的一关。不管你是科班出身还是培训转行投简历、过机考之后紧接着的技术面就会从“能不能写代码”转向“基础到底牢不牢”。计算机网络作为计算机专业的基础课面试官爱问、容易追问、也最容易暴露水平面试者会背三次握手却说不清为什么是三次知道URL输入后会做DNS解析却不知道递归和迭代的区别。这一篇我打算把OD技术面计算机网络部分的常见考法、答题逻辑和一些临时救场的话术完整梳理一遍后面还会按系列继续往下拆方便你直接照着准备。这篇内容适合两类人一类是刚过机考、正在系统准备技术面的人另一类是工作几年想回过头补基础、跳槽面试的人。不管你属于哪一类我的建议都是一样的——别只背八股要把每个知识点背后的“为什么”弄明白。1. 先摸清考情OD技术面的计算机网络到底在考什么1.1 技术面流程与计算机网络的位置从我了解到的情况来看OD技术面一般会安排一到两轮面试时间通常在40到60分钟。前10到15分钟是自我介绍和项目背景剩下的时间大部分会围绕基础知识和手写代码展开。计算机网络往往不是单独拎出来考而是作为“基础能力摸底”的一部分穿插在数据结构和操作系统之间和它们交替追问。很多候选人容易犯一个错误把所有复习时间都花在刷题上在机考阶段把算法练得滚瓜烂熟却忽略了网络基础。结果一到技术面面试官随口问一句“TCP和UDP有什么区别”第一反应只能说出“一个可靠一个不可靠”然后就没有然后了。这种答法很容易让面试官觉得基础不扎实哪怕你后面的算法题写得再漂亮整体印象分也会打折扣。计算机网络在技术面里的位置其实很微妙。它不像手写算法那样有标准答案、非黑即白但它出现的频率极高而且天然适合面试官层层追问从一个简单问题出发往深处挖两三轮候选人的知识边界马上就能探出来。所以准备这部分时不要只准备“答案”要准备“答案背后的逻辑链”。1.2 高频考点地图根据我对多场面试的复盘计算机网络部分的高频考点大致可以按层级划分成下面几块。先记住这个整体分布复习时心里就有谱了。知识层级高频考点常见考察形式出镜率应用层HTTP状态码、请求方法、HTTPS握手过程、DNS解析概念问答、场景分析极高传输层TCP三次握手、四次挥手、可靠传输、流量控制、拥塞控制原理追问、画图/叙述流程极高网络层IP地址分类、子网划分、CIDR、路由协议计算题、概念题高数据链路层MAC地址、ARP协议、交换机工作原理概念问答中等网络工具ping、telnet、curl、nslookup的实际使用面试官模拟场景提问中等这里面传输层和应用层是重中之重。原因很简单日常开发中最常打交道的就是HTTP和TCP面试官自己写代码时也在用问起来最顺手、最容易判断候选人的真实水平。网络层下面的子网划分则偏向“熟练度”只要计算题套路掌握了基本是送分题。另外一个容易被忽略的点是面试官很喜欢用“给一个场景让你判断或选择”的方式出题比如“视频通话卡顿你会选TCP还是UDP”“一个请求在浏览器里转了很久怎么排查”。这类题目没有固定答案考的是你把原理映射到实际问题的能力。我后面会专门展开这部分。2. 高频真题拆解从问题到答题逻辑2.1 输入一个URL后发生了什么这道题几乎可以说是计算机网络面试的“必考题”也是我最推荐大家认真准备的题目之一。很多候选人一听到这道题就开始背先DNS解析、再TCP连接、发HTTP请求、服务器返回、浏览器渲染……背得头头是道但面试官随便挑一个中间环节追问就卡壳了。先看一个合格的回答应该覆盖哪些环节用户在浏览器输入URL并回车浏览器对URL进行解析提取协议、域名、端口、路径等信息浏览器先查本地DNS缓存没有就请求DNS服务器解析域名拿到IP地址浏览器与服务器建立TCP连接三次握手如果协议是HTTPS还要额外进行TLS握手协商密钥浏览器构造并发送HTTP请求报文服务器处理请求并返回HTTP响应报文浏览器解析响应内容包括HTML、CSS、JS、图片等静态资源同时继续发起子资源请求浏览器渲染页面完成展示面试官在这道题上的“杀手锏”是追问细节。DNS解析过程中你的电脑不知道IP地址时到底会问谁这个问题考查的就是递归查询和迭代查询的区别你的电脑先问本地DNS服务器如果本地没有缓存再由本地DNS服务器帮你去问根域名服务器、顶级域名服务器、权威域名服务器拿到结果后缓存在自己这里再返回给你——这是递归查询而本地DNS服务器依次向各层级查询的过程就是迭代查询。TCP连接为什么是三次握手而不是两次这题放在后面单独说。HTTP请求报文长什么样、状态码有哪些也是这道题的天然延伸点。我的经验是回答这道题时要主动“展开”不要像个清单一样一条条念完就闭嘴。你可以把每个环节“一笔带过但点出关键词”让面试官知道你清楚细节比如“DNS解析时如果本地没缓存会走递归迭代的流程拿到IP”这样既表达了信息量也给了面试官一个切入点。还要提醒一点不要答出“从输入URL到页面展示一共经历了XX毫秒”这种毫无依据的数据。面试官想听的是机制不是你拍脑袋的数字。2.2 TCP三次握手与四次挥手背诵之外面试官真正想看什么三次握手和四次挥手是计算机网络的万年考点。我见过太多人的准备方式就是背一张图SYNSYNACKACKFINACKFINACK。背得倒是挺熟可面试官只要换一个角度问就露馅。先说三次握手重点是“为什么不是两次”。不要只回答“因为要确认双方的收发能力”这只是一部分。更完整的理解是两次握手无法避免历史重复连接初始化造成的资源浪费。客户端的一个过期SYN包如果先到达服务器服务器回复SYNACK后就直接分配资源了但客户端根本没有发起新连接这个连接就是白建的。三次握手让客户端可以根据服务器的序号判断连接的新旧发现是历史连接就发送RST终止避免服务器白白消耗资源。四次挥手也是一样重点在于“为什么是四次”。因为TCP是全双工的每一方的连接关闭都要经过一次FIN和一次ACK确认。理论上客户端和服务器的数据发送是独立的所以两端各关各的拆开来看就是四步。面试官还喜欢追问TIME_WAIT的作用主动关闭方为什么要停留在TIME_WAIT状态而不是直接关闭原因有两个——一是要确保最后一个ACK能让对方收到如果对方没收到会重发FIN你还需要继续回应二是防止本连接的旧数据包出现在新连接中被错误接收。如果面试官继续往深挖还可能问TCP拥塞控制的四个算法慢启动、拥塞避免、快重传、快恢复。慢启动是指连接初始时拥塞窗口很小然后指数增长直到触及阈值到达阈值后进入拥塞避免阶段窗口线性增长丢包时依靠快重传机制收到三个重复ACK就立即重传而不是等超时随后进入快恢复窗口减半而不是从1重新开始。这四个算法几乎必考建议把每个阶段的行为、触发条件、窗口变化规律都整理成一张图记下来。回答这类问题的通用思路是先给结论再解释原理最后补充一个实际场景。比如三次握手先说“因为要确保双方序号同步并防止历史连接浪费资源”再解释具体机制最后说“如果没有三次握手某个过期SYN包会导致服务器开一堆无效连接资源就会很快被打满”。这样既有理论又能体现工程意识。2.3 TCP与UDP的对比及衍生考点TCP和UDP的对比属于基本功但面试官往往不满足于“TCP可靠、UDP不可靠”“TCP有连接、UDP无连接”这种二维表格。他们更希望看到你能基于应用场景做判断。我在模拟面试时经常用这几个问题来训练候选人视频通话为什么常用UDP而不是TCP网页HTTP为什么用TCP而不是UDP直播软件用的是TCP还是UDP如果让你设计一个实时对战游戏的消息传输方案怎么选这几个问题没有标准答案考的是你对特性的理解和工程权衡能力。视频通话对延迟敏感TCP的丢包重传机制会导致数据到达时间不可控一旦重传就会卡顿所以宁可允许少量丢包也要保证实时性UDP更合适。HTTP需要完整准确地传输页面数据丢一个字节都可能让页面渲染出错所以选择TCP保证完整性。直播则更复杂——很多系统在TCP基础上做改进或者使用基于UDP的自研传输协议夹在“实时性”和“流畅度”之间做取舍。回答这类问题的框架可以固定为业务核心指标是什么、带来的约束是什么、TCP/UDP各自如何应对、最终选了谁以及为什么。另外面试中还经常出现“TCP的粘包问题”这样的衍生题。很多人一听就懵其实核心原因很简单TCP是面向字节流的协议它不保护消息边界应用层发来的多个数据包可能会被组合在一起发送或者一个数据包被拆成多份。解决思路一般是应用层自己定义消息边界比如固定长度、分隔符、在消息头中声明长度等等。这类问题其实在后台开发里很常见能答好会非常加分。2.4 HTTP状态码、报文结构与HTTPS握手HTTP相关的题目可以分三层状态码、报文结构、HTTPS机制。每一层都有一些值得展开的细节。状态码部分至少要熟练区分几组容易混淆的状态码含义典型场景易混点301永久重定向域名迁移、HTTP跳HTTPS和302混淆302临时重定向未登录跳转登录页、短链跳转浏览器行为不同403禁止访问权限不足和404混淆404找不到资源URL写错、接口下线服务器不应暴露细节500服务器内部错误代码异常和502区分502网关错误反向代理无法连接后端常见于服务端异常301和302的区别是高频追问点301是永久重定向浏览器会缓存这个重定向结果下次直接访问新地址302是临时重定向浏览器每次都会先请求原地址再跳转不会缓存。报文结构的话至少要知道请求行、请求头、请求体以及响应行、响应头、响应体这几大块并且能说出几个常见头字段的作用Host、Content-Type、Content-Length、Authorization、Cookie、Set-Cookie、Cache-Control等等。面试官不一定会让你逐字背格式但给你一个报文让你分析你得能说出关键头字段的含义。HTTPS部分要能说明为什么它既用非对称加密又用对称加密。道理其实很直白非对称加密安全但慢对称加密快但密钥分发不安全所以两者结合——用非对称加密协商出一个临时对称密钥握手成功后用对称密钥加密通信数据。TLS握手的简化流程是客户端发送随机数和支持的加密套件服务器返回证书和随机数客户端验证证书生成预主密钥用服务器的公钥加密后发给服务器双方各自计算出会话密钥之后通信全部使用会话密钥加密。这就是“一次非对称加密换取后续所有对称加密通信”的思路。2.5 DNS解析过程与IP基础DNS解析前面已经提到一部分这里补充一些容易被追问的内容。面试官很可能问你“你们项目里的域名解析不小心配置错了用户访问异常怎么排查”。这里要用到nslookup命令查解析记录、看解析到了哪个IP再看本地有没有缓存。常见记录类型也要知道A记录域名到IPv4、AAAA记录域名到IPv6、CNAME记录域名别名、MX记录邮件服务器、TXT记录文本信息常用于域名验证。IP部分主要是子网划分和CIDR计算。这个放到下一章用实际题目演示这里先提两个基本概念一是公网IP和内网IP的区分二是子网掩码的作用——它用连续的1表示网络位、连续的0表示主机位。面试官让你计算可用主机数时记住公式是2的主机位数量次方减2因为网络地址和广播地址不可分配。3. 模拟实战经典问答现场与操作示范3.1 从输入URL到看到网页把链路串成一个故事这一节我模拟一次面试现场。面试官把“输入URL后发生了什么”这道题抛出来候选人怎么答才能让面试官点头给你一个参考模板但不要背理解后用自己的话复述“假设我在浏览器里输入了一个域名比如www.example.com。首先浏览器会解析这个URL知道协议是HTTPS域名是www.example.com默认端口是443。接着开始域名解析浏览器会先查本地缓存也就是浏览器DNS缓存、操作系统hosts文件、操作系统的DNS缓存如果都没有命中就向本地DNS服务器发起递归查询。本地DNS服务器收到请求后以迭代方式依次询问根域名服务器、com顶级域名服务器、example.com的权威服务器最终拿到这个域名对应的IP地址然后在本地缓存一份再返回给我的电脑。”“拿到IP之后我的电脑开始和服务器建立TCP连接。三次握手的过程是客户端发送一个SYN报文服务端收到后回复SYNACK客户端再回一个ACK。这一步的目的是同步双方的初始序列号而且能确认双方的收发能力都正常。因为这里是HTTPSTCP连接建立后还要再做一次TLS握手协商出后面用来加密数据的对称密钥。”“连接建立后浏览器构造一个HTTP请求里面包括请求方法、请求路径、请求头比如Host、User-Agent、Cookie等等然后发送过去。服务器收到请求后找到对应的资源返回一个HTTP响应状态码是200响应体里就是HTML内容。浏览器拿到HTML后开始解析遇到CSS和JS会再发起新的请求去加载这些资源同时根据HTML内容构建DOM树最终渲染成用户看到的页面。”为什么这个版本比较保险因为它把每个环节都提到了但每个环节都留了“钩子”你提到三次握手时其实可以细讲提到HTTPS时可以细讲TLS提到DNS缓存时可以展开递归和迭代。面试官如果感兴趣自然会顺着你的话往下问而你因为早就知道这些钩子完全不会被动。这就是“带节奏”的技术面技巧。3.2 子网划分与CIDR计算题复盘子网划分几乎是必考的计算题而且一旦会了就是送分题。我出几道典型的带你把过程走一遍。典型题目一某公司有一个网段192.168.1.0/24需要划分成4个规模相同的子网请写出新的子网掩码、每个子网的网络地址、广播地址和可用主机范围。步骤一确定需要借几位主机位。2的2次方等于4所以要借2位子网位。原来的/24变成了/26。步骤二新的子网掩码是255.255.255.192因为前24位不变后面继续借2位11111111.11111111.11111111.11000000换成十进制就是192。步骤三这个/26一共有4个子网每个子网有64个地址2的6次方主机位是6位所以可用主机数是64减2一共62个。步骤四四个子网分别如下子网网络地址广播地址可用主机范围掩码1192.168.1.0/26192.168.1.63192.168.1.1 ~ 192.168.1.62255.255.255.1922192.168.1.64/26192.168.1.127192.168.1.65 ~ 192.168.1.126255.255.255.1923192.168.1.128/26192.168.1.191192.168.1.129 ~ 192.168.1.190255.255.255.1924192.168.1.192/26192.168.1.255192.168.1.193 ~ 192.168.1.254255.255.255.192很多候选人在考场上会卡住的地方是“可用主机范围写不对”。记住两点网络地址是主机位全0广播地址是主机位全1可用主机就是中间那段。这个思路比背表好使因为题目一变你也能应付。再给一道进阶题一个网址对应的IP是192.168.10.65/27请问它所在的子网里有多少可用主机地址/27说明主机位是5位可用主机数2的5次方减2等于30。判断192.168.10.65所在子网时先看子网掩码255.255.255.224也就是最后一个字节是11100000每32个IP一个子网64到95是一个子网所以192.168.10.65所在子网网络地址是192.168.10.64广播地址是192.168.10.95可用范围是65到94。这道题如果你能快速答出“30个192.168.10.64到192.168.10.95是它的子网”基本就没问题了。考场上还有一个速算技巧只要记住几个关键cidr值就行。/24有256个地址、/25有128个地址、/26有64个地址、/27有32个地址、/28有16个地址。多用几次就熟悉了。3.3 网络命令的实战考察技术面不只是在白纸上考试有时候面试官会给一个线上问题场景让你说用什么命令、看什么参数。这里挑几个最常碰到的。ping用来检测本机到目标网络是否可达基于ICMP协议重点看的是“通不通”和“延迟多少”。面试官可能会追问TTL是什么即数据包每经过一个路由器就减1减到0就丢弃用来防止数据包在网络上无限转发。telnet则是用来测试端口连通性的常见的用法是telnet 某IP 端口如果你看到“Unable to connect”说明端口不通。curl是后端开发最常用的命令之一curl -I可以只看响应头curl -v能看到完整交互过程。nslookup用来查DNS记录比如nslookup www.example.com可以看域名解析到的IP。这些命令本身不难难的是面试官围绕命令展开的追问。比如“页面访问很慢你会怎么排查”这种题就是让你把命令组合起来用先ping看网络通不通再telnet看端口通不通再用curl看响应时间和服务端返回的状态码逐步缩小范围。能把排查思路说成一条清晰的链路比背十个命令都管用。4. 高频失分点与备战心得4.1 这5个回答方式最容易被面试官质疑第一只念答案不给理由。比如问“TCP可靠吗”回答“可靠因为有确认重传机制”这就太单薄了。应该继续说明确认重传怎么运作的发送方发数据后启动超时定时器接收方收到后返回ACK超过时间没收到ACK就重传。面试官想听的是机制链条不是标签。第二概念混着讲。比如把“TCP连接状态”和“HTTP连接状态”混在一起或者把IP地址和MAC地址的作用搞混。一旦出现这种情况面试官很容易对你整个基础水平产生怀疑。第三说不清“为什么”。很多候选人能说出三次握手是SYN、SYNACK、ACK但问“为什么不能是两次”就卡住了。平时的复习必须追问自己——每个结论背后的原因是什么。第四忽略版本差异。面试官问HTTP时如果你只回答HTTP/1.1的内容而不提HTTP/2或者HTTP/3容易让人觉得你的知识停留在教科书年代。至少要知道HTTP/2多路复用、HTTP/3基于UDP等几个核心差异哪怕只知道一两点也比完全不知道强。第五答不上来就沉默。这对技术面的伤害很大。你可以先说“这块我了解得不多我的理解大概是……”哪怕说错了也能让面试官看到你的思维过程比冷场强得多。4.2 被追问到不会的地方怎么稳住技术面几乎没有不问倒人的。面试官往上深挖时一般都会碰到候选人的知识边界这是正常现象。关键在于边界的处理方式。建议用“三层退让法”兜底。第一层直接说出我目前会到什么程度。比如“我知道TCP的重传机制分超时重传和快速重传但快速重传的具体触发条件我记得不太准确了”。第二层给一个自己认为合理的推演过程。你可以补充“如果让我猜应该是收到三个重复ACK就触发重传因为这样可以避免等待超时更快恢复”。这一层即使猜得不对面试官也会看到你的逻辑能力。第三层明确告诉面试官“这个问题我还没系统掌握面试结束后希望再了解一下”。这里要特别注意一个心态问题不要一被追问就慌乱。我在实际面试中看到过不少候选人前面答得很好一到最后一段深挖有点卡住马上声音就虚了语速也飘了。这种落差反而比“没答上来”更吃亏。你越镇定面试官越觉得这只是一个“目前没覆盖到的角落”而不是“基础差”。4.3 最后的复习优先级与时间规划建议假设你离技术面还有一周时间建议把复习安排按四段走。前两天过基础建议用一到两天把计算机网络的分层结构、各层核心协议过一遍重点是TCP、UDP、HTTP、DNS、IP地址这些核心概念。不要急着背题先保证能用自己的话解释清楚。第三到第四天练表达找一道题比如“输入URL后发生了什么”对着镜子或者录音讲一遍逼自己在三分钟之内讲完并且不卡壳。这一步至关重要。很多人知识都懂一开口就乱就是因为没练过口语化的表达。第五到第六天做模拟可以找同样在准备面试的人互问或者搜索一些计算机网络面试题集每个问题先自己回答一次再对照答案看缺了什么。这个阶段不用贪多每天十道题就够关键是把回答打磨得完整。最后一天查漏把常见的高频考点列表拿出来逐个过遇到不熟练的直接回到基础部分重新看不要硬背。同时准备好自己的“知识边界说明”哪些方向你比较熟哪些还在补课心里有数即可。我个人在帮别人模拟面试时发现很多人会在“TCP/IP协议簇放在哪一层”这种小地方突然卡住比如ARP到底属于网络层还是链路层。这类边界问题容易被忽视建议最后一天集中把类似的小概念校对一遍花不了多少时间却能避免面试现场出现尴尬的冷场。最后一天晚上就不要再熬夜刷题了早点睡。技术面考察的是长期积累的底子不是你最后一晚能突击出来的东西。把状态调整好比多记一个冷门知识点更值钱。