畅游2019校招网络工程师笔试题解析:从TCP/IP到游戏网络排障
1. 一张试卷暴露了什么畅游校招网络工程师的职责与考察逻辑很多刚准备投游戏公司网络工程师岗位的师弟师妹问我笔试到底考什么。这个问题听起来像是在问“操作系统难还是计算机网络难”其实根本没问到点子上。搜狐畅游2019校招的网络工程师笔试题我从头到尾刷完之后最大的感受是出题人根本不在乎你能不能背出OSI七层模型的完整列表他们在乎的是你有没有把网络当成一门“出问题要能定位、要能恢复”的工程学科。先看岗位职责。畅游是做游戏的网络工程师主要管三类东西办公网络、机房/IDC网络、以及游戏服务器对外服务涉及的各类公网链路。办公网络偏传统交换路由机房网络偏数据中心还有大量跟运营商、云厂商对接的工作。2019年这场校招笔试题明显是围绕这三类场景出的没有太多炫技的概念但覆盖面非常广既考基础协议也考业务场景里的实际判断。从试卷结构来看大致分成了基础选择题、计算题、简答题、场景分析题四类。基础选择题考察IP编址、VLAN、路由协议、TCP/UDP、DNS这些常规内容计算题集中在子网划分、带宽与并发估算简答题基本上是TCP协议机制、NAT、负载均衡原理这类需要自己把逻辑写清楚的题目场景分析题则是给出一个玩家反馈延迟高、掉线频发的案例要求你给出排查思路和解决方案。我在对比软考网络工程师真题时发现软考更强调标准和理论的完整度而畅游这套题更强调“根据现象推断原因”。换句话说你如果只是把《网络工程师教程》背熟基础选择题可能能拿分但场景分析题大概率答不到出题人期望的点上。因为游戏公司网络工程师的日常并不是给你一张拓扑图配好就完事而是线上出问题之后你要能在最短时间内判断瓶颈在哪里是客户端、接入链路、IDC出口还是服务器本身。这篇文章我会把这场笔试涉及的几类题目逐一拆开讲每道题背后考什么、答题时容易漏什么、准备时应该往哪个方向使劲都会说清楚。如果你正在准备游戏公司网络工程师校招或者想通过软考网络工程师来打底子这套拆解思路可以直接拿来用。2. 协议与TCP/IP底层题最像送分却最拉开差距的地方2.1 三次握手与四次挥手出题难不在默写TCP三次握手和四次挥手几乎是每一场网络工程师笔试都会出现的题畅游2019这套也不例外。但它不会直白地问“TCP建立连接需要几次握手”而是给你一个场景客户端访问游戏登录服务器时登录偶发失败抓包发现客户端连续发送了多次SYN服务器没有响应请问可能的原因是什么。要答好这种题得把三次握手的每一步拆开。第一步SYN是客户端发起的连接请求服务器收到后需要回复SYNACK如果服务器一直不回复可能的原因包括服务器并发连接数达到上限、内核backlog队列溢出、防火墙丢弃了SYN包、服务器负载过高导致协议栈处理不过来。大多数人只会写“SYN包被防火墙拦了”这确实是可能原因之一但出题人想考察的是你有没有完整的排查思路而不是只知道单点原因。再说四次挥手。游戏场景里玩家正常关闭客户端时会主动发起FIN断开连接。但很多游戏在异常退出时不会走正常四次挥手流程直接断网这时服务端是不知道连接已断的只能靠TCP保活机制或心跳超时来发现死连接。笔试里有道简答题就是让你解释为什么游戏服务端要维护心跳。这本质上考的是TCP半开连接与保活机制。答题时要把这几点写全TCP连接不是链路层连接断网不会触发通知应用层需要设计心跳或超时机制服务端资源有限必须及时回收死连接。只写“心跳是为了保活”是拿不到全分的。2.2 滑动窗口与拥塞控制数值题背后在考什么畅游这套题里有道小计算题干大意是TCP发送端的接收窗口是64KBRTT是40ms问理论上的最大吞吐量大概是多少。这个题本身不难64KB乘以8转成比特再除以0.04秒算下来约12.8Mbps。但如果把题目稍微变一下加上“发生了丢包”这个条件答案就完全不一样了TCP会进入拥塞控制吞吐量会受拥塞窗口限制不能只按接收窗口来算。我准备软考网络工程师真题的时候见过类似题软考更倾向于让你画出慢启动、拥塞避免、拥塞窗口的变化曲线而畅游的题更倾向于让你理解这些机制在真实网络里意味着什么。比如它问为什么游戏要部署边缘节点把服务器放到离玩家近的地方这个问题的本质是RTT越短TCP的吞吐上限越高。对游戏来说即使核心对战逻辑走UDP不参与TCP拥塞控制但路由质量差一样会导致丢包和抖动所以网络工程师的工作不只是配设备还要评估线路质量、优选路由。这类数值题还有一个变体给出带宽、时延和文件大小估算传输一个文件需要多长时间。答题时要考虑TCP慢启动的初始阶段不能简单用带宽除以文件大小。虽然校招笔试不会把数学模型考得特别深但你要体现出“我知道TCP不是一根水管它有一个从慢到快的过程”的意识。2.3 TCP与UDP的应用场景不能只背结论笔试题里有一道选择题以下哪些应用一般使用UDP协议选项包括视频直播、游戏对战、网页访问、DNS解析。这道题看起来是送分题但每年都有人选错。视频直播虽然现在很多方案基于HTTP或TCP但实时性要求高的场景下很多方案会用UDP或QUIC游戏对战核心数据通常用UDP但登录、商城、大厅消息往往用TCPDNS解析确实常用UDP但区域传送用的是TCP。这样一盘一个选项都不能凭感觉选。我在自己的网络工程师学习路线里一直强调协议选型要结合“对实时性的要求和丢包之后的容忍度”来判断。玩家操作指令延迟几百毫秒体验就崩了所以对战逻辑优先用UDP因为UDP没有重传机制丢包了就直接丢不会因为等重传而越拖越卡而登录、支付这类操作要求可靠传输哪怕慢一点也不能丢所以用TCP。如果你只背“UDP不可靠、TCP可靠”这两句话到了场景题就完全答不到点子上。能把“游戏登录用TCP、对战用UDP”解释清楚比列一堆协议端口号有用得多。3. IP网络与路由交换基础题复习主干必须扎稳3.1 子网划分的计算题步骤要写成肌肉记忆畅游2019笔试里有一道经典子网划分题某数据中心需要划分出若干网段给不同业务使用给定一个网段192.168.10.0/24要求每个子网至少容纳60台服务器问最多能划分多少个子网子网掩码是多少每个子网的网络地址范围是多少。这道题的核心是求主机位数量。每个子网至少容纳60台主机2的6次方等于64减掉网络地址和广播地址实际可用是62满足60台的需求所以主机位需要6位网络位就是32减6等于26位子网掩码是255.255.255.192。原来的/24可以划分成2的2次方等于4个子网每个子网有64个地址可用地址为62个分别是192.168.10.0/26、192.168.10.64/26、192.168.10.128/26、192.168.10.192/26。这道题想提醒大家的是子网划分不能只看公式要养成先判断“可用地址数量等于2的N次方减2”的习惯。很多人拿到题目先开心地开始算掩码结果没注意题目要求的是“容纳服务器数量”把可用地址和总地址搞混一出手就错。校招笔试的计算题丢分往往都是这种低级错误不是不会算而是步骤不规范。我建议平时练习时固定一套流程先读清需求是求子网数还是求主机数再确定主机位注意要减掉网络地址和广播地址最后列子网范围并校验。这套流程练熟了考场上不会乱。3.2 路由协议与路由优先级要理解网络规模决定选型路由协议的选择题基本围绕路由优先级、管理距离、路由环路这几个点。有一道题给出一台路由器同时学到了三条去往同一目的网络的路径分别来自直连、静态路由和OSPF问最终会优先选择哪一条。答案是直连路由。这里考的是路由优先级原则直连优先于静态静态优先于动态路由协议。不同厂商设备对管理距离的数值定义可能不一样但原则是一致的。另一个常考点是OSPF和RIP的对比。RIP基于距离矢量最大跳数15跳适合小型网络OSPF基于链路状态收敛快适合企业级和IDC网络。畅游这类游戏公司的办公网络和机房网络规模都不小网络里跑OSPF几乎是必然选择所以笔试出现OSPF相关的概念题很正常。准备的时候一定要把区域内路由、区域间路由、外部路由的基本概念理清至少要知道为什么大型网络不选RIP为什么OSPF比RIP收敛快。这些内容在软考网络工程师的上午题里反复出现刷真题时只要把解析看明白校招考场上的选择题基本能覆盖到。3.3 VLAN与交换机基础答题要写出转发逻辑交换机部分的题目主要集中在VLAN划分、Trunk、Access接口的区别。有一道简单题是给了一个办公网拓扑要求把研发部、人事部、财务部分成三个隔离的广播域问应该在交换机上做什么配置。答案自然是划分VLAN把不同部门划分到不同VLAN部门之间如果需要互通再走三层交换或路由器。答题时要注意题目问的是“广播域隔离”不是“物理隔离”。VLAN的作用就是在以太网帧上添加VLAN Tag让交换机按VLAN转发帧不同VLAN之间二层不互通。很多人答题只写“配置VLAN”不写原因拿不到全分。完整答案应该包含三部分创建VLAN并命名把相应接口划分到对应VLAN跨交换机同部门通信需要配置Trunk并放行对应VLAN。网络工程师笔试考的不是你会不会敲命令而是你懂不懂配置背后的转发逻辑。把这些步骤写全考官会觉得你是真的理解而不是背过命令。4. 游戏业务场景题从“会组网”到“会保证游戏体验”的分水岭4.1 延迟指标不只是ping通就行游戏公司网络工程师和其他行业网络工程师最大的区别在于对QoS和体验质量的理解。畅游2019笔试题里有一道简答题某游戏玩家反馈进游戏之后操作延迟经常飙升到500ms以上但其他玩家在同一区服没有同样问题请列出可能原因。这类题没有标准答案但答题框架很重要。我总结的排查顺序是先分客户端再分接入链路再分服务器。客户端方面可能是本地网络环境问题比如无线信号差、有人在下大文件、家用路由器NAT性能不足接入链路方面可能是玩家的宽带运营商和游戏服务器之间的互联互通差跨网访问导致延迟高服务器方面可能是该玩家所在区服负载过高或者该玩家被调度到了不合适的节点。如果你是应届生没有实际排障经验最容易犯的错是一上来就写“把服务器带宽扩容”。这是典型的应试思维不是工程思维。真实排障要先定位再解决扩容只是众多手段中的一种而且未必是根本手段。大多数线上延迟高的问题根源在公网互联和链路质量而不是服务器带宽不够。答题时明确区分“单点问题”和“大面积问题”能让你的答案一下子专业很多。4.2 一个典型的区服卡顿案例怎么答笔试场景题里还有一个综合案例游戏上线新版本后某大区的玩家集中反馈登录缓慢、进游戏后频繁卡顿服务器CPU和内存看起来都没有跑满请你给出排查方案。这道题的出题逻辑是模拟“压力集中时段的真实故障”。完整答题思路应该沿着几条线索并行排查。第一看接入层和核心层设备的流量和连接数确认是否存在会话数超限的情况第二看负载均衡和后端服务器之间的健康检查是否正常如果健康检查频率过高或超时阈值太短可能导致后端频繁被摘除第三抓包分析登录包的往返时间确认是客户端到接入网关的链路慢还是接入网关到后端应用的链路慢第四检查数据库连接池和缓存层很多卡顿其实不是网络问题而是应用层依赖的数据库连接被打满。这个套路在校招面试题里几乎百试百灵不要把视野局限在路由器交换机上。游戏业务链路很长从客户端到DNS、到负载均衡、到网关、到游戏服务器、再到数据库和缓存任何一环都可能成为瓶颈。答题时把链路画出来按层次排查就能明显拉开和其他考生的差距。我在培训新人时经常说一句话“网络工程师排障排的是链路不是单台设备。”这句话写进答案里比罗列一堆命令更有分量。4.3 运营商链路与公网质量游戏公司绕不开的课题还有一道题是关于多运营商接入的。题目大意是公司IDC同时接入了电信、联通、移动三条线路如何设计让玩家优化跨运营商访问的延迟。这道题考察的知识点包括BGP、DNS解析策略、CDN和智能调度。答题时可以从三个层面展开。网络层面通过BGP与运营商互联让不同运营商的用户从对应运营商线路接入减少跨网绕行。解析层面通过DNS分线路解析把电信用户解析到电信IP联通用户解析到联通IP移动用户解析到移动IP。调度层面如果公司规模较大可以在核心节点部署缓存或转发服务。这三层是一个递进关系先让网络能通再让解析指向正确线路最后用业务调度优化体验。这类题目提醒我们游戏公司网络工程师不是只懂给交换机配VLAN就够了的还要理解BGP的基本原理理解公网路由的传播逻辑。平时练习时建议多用网络模拟器搭一个多运营商接入的小实验把等值路由、路由优先级、NAT和策略路由结合起来。这个经验在笔试面试中非常值钱因为绝大多数应届生都没有实际摸过运营商级网络你能说出BGP和普通动态路由的区别就已经超出平均水平了。5. 实操题的高分答案结构像处理线上故障一样去答题5.1 一套通用的故障定位思路从这道操作题说起畅游这套笔试题里有道操作题给了一个简化拓扑玩家PC经过家庭路由器、运营商接入网、公网、IDC防火墙/负载均衡再到游戏服务器。题目要求如果现在出现玩家连不上服务器请写出你的排查步骤并说明每步的目的。我从这道题里提炼出的高分结构分四步。第一步先确认影响范围是单个玩家连不上还是整个区服都连不上。单个玩家问题优先查玩家本地网络和客户端整个区服问题优先查服务器和IDC链路。第二步做连通性测试在玩家侧ping网关、ping公网地址、ping游戏服务器IP通过分段测试缩小范围。第三步如果在公网段丢包严重使用tracert或路由追踪工具定位是哪一个跳点出了问题。第四步如果服务器IP能ping通但游戏连不上抓包检查端口连通性和应用层协议交互是否正常。这套答法在几乎任何网络工程师面试题里都适用因为它的核心是“分层定位、分段排除”。我指导别人准备软考网络工程师真题时也说过软考下午题里的网络故障排除题套路和这个几乎一样区别在于软考会给你很多拓扑细节而校招笔试需要你自己主动去想这些细节。平时练习时你可以找几道软考下午题先不看参考答案按照“影响范围确认、分段连通性测试、路由追踪、抓包分析”四步自己写一遍写多了就能形成条件反射。5.2 容易丢分的三种回答习惯我看了不少人的模拟答题发现三种很典型的丢分习惯。第一种是只写结果不写命令。比如“用ping测一下”不算完整答案要写成“在客户端ping接入网关确认本段链路是否正常如果网关都能ping通再ping远端服务器地址这样可以把故障范围切成两段”。第二种是不分主次地罗列所有操作从重启光猫到升级带宽全写一遍没有逻辑优先级考官一眼就看出你没有真实排障经验。第三种是忽略业务特征比如处理游戏卡顿不关注UDP丢包、不关注抖动只盯着TCP重传方向就偏了。这里要特别强调一下第三种。TCP重传多通常是TCP业务的标志但游戏对战大量使用UDPUDP没有重传机制出现卡顿往往表现为丢包率和抖动升高。答题时如果能把“UDP丢包、抖动、乱序”这些指标纳入排查范围就说明你对游戏业务的网络特征有认知这种细节非常加分。5.3 考官想看到的工程思维以及怎么在卷面上体现2019年这套题明显体现了一个倾向公司希望招的不是“懂网络但不懂业务的人”而是“能围绕游戏业务去理解网络架构的人”。所以答题时适当加入业务视角会加分不少。比如题目问如何排查延迟高你除了列出网络排查手段还补一句“需要同时确认同区服其他玩家是否受影响以判断是网络问题还是服务器负载问题”这样一来答案就完整很多。另外合理的假设也很重要。题目没说玩家用的是有线还是无线你不需要花时间猜而应该在答案里明确“在排查前需要先收集这些信息玩家所在地区、运营商、使用设备、故障时间、是否复现”。这种回答方式体现的是数据驱动排查的思维而不是拍脑袋定位。我在带校招新人时最怕的不是新人不会配路由而是新人遇到问题就凭感觉重启设备。笔试阶段就能体现出“先收集信息再动手”的思维考官对你的评价会高很多。6. 从2019这场笔试反推的备考路线与资料清单6.1 用二八法则分配复习精力整张试卷看下来基础题和场景题的比例大约是一半一半。基础题部分TCP协议、IP编址、VLAN、路由协议这些传统重点占了绝大多数场景题部分又很依赖你对基础概念的理解程度。所以复习顺序应该是先把基础题拿稳再去练场景题。我自己给准备网络工程师校招的人列过一个精简路线。第一周把TCP/IP协议栈吃透重点是三次握手、四次挥手、滑动窗口、拥塞控制、HTTP/DNS解析流程。第二周把IP地址规划和路由基础练熟子网划分每天做十道题OSPF、静态路由、默认路由的配置要能手写出来。第三周专门练故障排查题把历年软考网络工程师真题里的下午题拿来做总结一套自己的排查模板。第四周回到校招笔试题按考试时间模拟训练答题的条理性。这个路线不是我拍脑袋想的而是从这套笔试题的考点分布反推出来的基础概念占一半场景应用占一半两者都不能偏废。这里有一个看起来不起眼但很关键的点做计算题和场景题时要动手写。很多人平时复习只看不写觉得思路会了就跳过结果考场上发现表达跟不上思路。校招笔试的场景题不是选择题你需要把完整的排查逻辑写在卷面上平时不练手写考场上是写不流畅的。6.2 动手实验是性价比最高的准备方式笔试虽然不用现场敲命令但如果你没有亲手配置过很多概念是理解不深的。比如VLAN和Trunk的关系你背十遍不如用网络模拟器搭个拓扑三台交换机两个VLAN互访半小时就懂了。又比如OSPF邻居建立过程你想理解为什么HELLO报文间隔和死亡时间要匹配只有看抓包才能形成直觉。在校招笔试冲刺阶段我建议每天花半小时做实验优先做这几个跨交换机VLAN通信、静态路由和默认路由配置、通过traceroute观察路由路径、抓包分析TCP三次握手和HTTP请求过程。做过的实验多了再看到场景题时脑子里会自动浮现出拓扑和抓包截图答题速度会快很多。我见过太多人复习网络工程师只刷题不搭环境结果问到“Access和Trunk的区别”能背出来问“两台交换机之间要放行哪些VLAN”就答不出来了这就是缺少实验直觉的表现。6.3 软考真题和校招真题互补不要厚此薄彼不少人问我要不要刷软考网络工程师真题我的建议是非常需要但要有选择地刷。软考的上午题对基础知识覆盖得很全可以用来查漏补缺下午题里的网络配置和故障排查和校招的场景题很接近。区别在于软考更规范、更偏企业网络校招笔试题更贴近游戏公司的高并发、多运营商、低延迟场景两个都做才能形成完整的能力拼图。我特别推荐把软考真题里“网络管理”“网络故障诊断”这两类题拿出来先自己写答案再对比参考答案。因为校招笔试题里场景分析的评分标准很看重踩分点你写得越接近工程实际得分越高。另外历年面试经常问的项目经历、实习经历也都应该往“我做过哪些网络排障、怎么做的、结果如何”这个方向准备笔试练过的答题框架可以直接迁移到面试中。无论你是大二大三开始规划还是秋招前临时抱佛脚只要按照上面这条路线走畅游这类游戏公司的网络工程师校招笔试题其实并不难。真正拉开差距的不是背了多少概念而是面对问题时能不能像工程师一样一步步缩小范围、定位根因、给出可执行的方案。这套能力在校招笔试里能帮你拿分在工作之后更能帮你站稳脚跟。

相关新闻