
网易2020校招笔试 - 技术支持正式批一年一度的秋招季各大互联网公司的笔试题目陆续放出网易算是其中比较有代表性的。我当年参加的就是网易技术支持岗的正式批笔试说实话这个岗位的笔试题目和开发岗完全不是一个套路它更看重你对整个技术栈的综合理解以及在实际出问题的时候能不能快速找到方向。那会儿身边不少同学抱着“投了试试”的心态去考结果打开题目就懵了编程题只有两道剩下全是网络、系统、数据库相关的分析和排查题。这其实释放了一个很明确的信号——技术支持岗位要的不是刷题机器而是能真正扛事的人。这篇文章我就把当年笔试的完整复盘、考察重点、以及这个岗位背后的技术能力要求拆开聊聊给后面要参加类似校招的同学一个参考。1. 笔试整体结构与考察逻辑1.1 技术支持笔试到底在筛什么样的人先别急着背八股文你得先搞清楚一件事技术支持这个岗位和研发、测试、运维之间到底是什么关系。网易技术支持岗在很多团队里其实承担的是“研发和用户之间的桥梁”角色既要懂业务逻辑又要懂底层技术原理还得有很强的沟通能力。所以笔试题目不会只考你某个孤立的知识点而是会模拟一个具体的问题场景看你能不能独立分析。比如一道典型题目会这样出线上某个接口响应时间从 50ms 暴涨到 5s请问你怎么排查这种题没有标准答案但它是分层的。基础差的同学会回答“看服务器负载”基础好的同学会从应用层、网络层、数据库层、依赖调用链逐步拆解再给出具体的排查工具和判断依据。这就是技术支持和开发笔试最大的区别——它在考你的排查思维是否成体系。所以我的第一个建议是不要抱着“押题”的心态去准备而是要建立一个完整的故障排查知识框架。你不需要知道所有细节但你必须知道不同的故障现象应该往哪个方向查、用什么工具确认、怎么快速缩小排查范围。1.2 考察模块与分值分布的复盘从2020年正式批的题目来看整体模块分布大概是这样的考察模块大致占比典型题型计算机网络30%TCP握手、DNS解析、HTTP状态码Linux系统20%进程排查、命令行操作、系统负载数据库20%索引原理、慢查询、事务隔离级别编程题20%2道偏逻辑和字符串处理场景排查题10%描述一次线上问题的完整排查过程这个分布其实很能说明问题。网络占了将近三分之一说明这个岗位每天都要和网络打交道Linux 和数据库各占五分之一说明你需要有实际操作能力编程题占比不高但也不是完全不需要——毕竟有些排查脚本你得自己写。整体给人感觉就是知识面要宽深度要求不算变态但你在写答案时必须体现出“我真的操作过”。当年我身边有同学参加了同期的其他公司运维笔试对比下来网易这份卷子更偏“复合型”不是纯背命令也不是纯刷算法而是把网络、系统、数据库混在一起考。这种卷子对简历上写过“了解TCP/IP协议”的同学特别有迷惑性——因为了解不够得熟练应用才行。2. 网络与系统基础必考且拉分最大的部分2.1 TCP握手不要只会背三次握手网络部分必有一道TCP的题这个我敢打赌。但别高兴太早网易不是让你默写三次握手的流程而是会给你一个有点坑的场景。我印象里有一道题是问客户端已经发起了四次挥手但服务端一直处于 CLOSE_WAIT 状态这可能是什么原因该怎么处理CLOSE_WAIT 这个问题在实际生产中非常常见稍微有点规模的后端服务都会遇到。它本质上是服务端收到了客户端的 FIN 包内核协议栈完成了被动关闭但应用程序没有调用 close() 关闭对应的 socket 文件描述符。最常见的原因有两类一是代码里处理完请求后忘了关闭连接特别是长连接场景下二是业务处理中出现阻塞比如线程卡在某个 RPC 调用上导致 finally 里的关闭逻辑一直没有被执行。排查方法我建议记住一套先通过ss -ant或netstat -ant统计各连接状态的数量重点看CLOSE_WAIT的数量是否在持续增长。如果有增长趋势用lsof -p pid | grep TCP找到对应进程持有的连接看看是哪类连接卡住了然后结合线程栈信息jstack 或 pstack定位到具体的代码行。答到这个程度面试官基本就会觉得你确实处理过线上问题。2.2 DNS解析一道题帮你把流程彻底理清还有一类高频考点是DNS。你以为它会考“DNS用的是TCP还是UDP”这种送分题实际题目会问你访问一个域名特别慢但直接访问对应的IP很快可能是什么原因怎么定位这个问题如果你没实际排查过很容易答偏。其实核心就在DNS解析链路上。你要把整个递归过程在脑子里过一遍浏览器先查本地DNS缓存没有就去查 hosts 文件还没有就发起递归查询请求到配置的DNS服务器中间可能经历根域名服务器、顶级域名服务器、权威域名服务器。任何一个环节响应慢都会导致整个页面加载卡住。定位方法也很标准先nslookup example.com看解析耗时再用dig example.com trace看每一级延迟就能确定卡在哪一环。另外建议看下系统配置的DNS服务器是不是公共DNS比如 114.114.114.114 或 8.8.8.8因为不同DNS服务器的缓存命中率和链路质量差异很大。这里有个小技巧用dig 8.8.8.8和dig 114.114.114.114对比两次解析时间如果差异很大大概率就是你当前使用的DNS服务器链路有问题。2.3 进程排查套路内存、CPU、端口三件套系统层面网易非常喜欢考Linux排查。不是让你背诵ps aux的参数而是给你一个故障现象让你选合适的命令和排查路径。比如一台线上服务器的CPU使用率长期超过 90%你该怎么定位是哪个进程、哪段代码导致的我的排查顺序是固定的。先用top按CPU降序排列找到异常进程的 PID这时要留意是不是Java进程如果是一般会再往下看线程级别的CPU占用用top -Hp pid找到具体线程号然后转成16进制printf %x\n 线程号再用jstack pid | grep 十六进制线程号 -A 30定位代码位置。如果是非Java应用也可以用perf top直接看内核热点函数。这套链路在笔试里完整写出来基本就是满分答案了。内存排查也是同样的思路free -g看整体内存水位用ps aux --sort-%mem找出内存占用Top的进程如果是JVM内存问题再用jstat -gcutil pid 1000看GC情况判断是否出现频繁FullGC配合jmap -dump导出堆转储做进一步分析。写到这里顺便提醒一句排查类题目的答案一定要体现出“顺序”和“依据”不要东一榔头西一棒子。3. 数据库与脚本编程区分基本功和抢分点3.1 索引为什么查询突然变慢数据库这块也是重头戏尤其喜欢考索引。有一道题我记得很清楚某张表的数据量只有几十万行有一个查询条件列建了索引但这条SQL执行还是走了全表扫描可能的原因有哪些这题能挖的点非常多。最经典的原因就是索引列上使用了函数比如WHERE DATE(create_time) 2020-09-01这种写法会让索引失效应该改成WHERE create_time 2020-09-01 00:00:00 AND create_time 2020-09-02 00:00:00。还有一个容易被忽略的原因是隐式类型转换比如索引列是 varchar但查询条件传的是数字MySQL 会先把列转成数字再比较索引照样失效。另外LIKE %关键词%这种前缀模糊匹配也走不了索引。除了索引失效还有一种情况是优化器自己选择不用索引。当表数据量很小的时候全表扫描的代价可能比走索引回表更低优化器会放弃索引。这个知识点在笔试和面试里都能加印象分因为很多人只知道“建了索引就能快”不清楚优化器内部是基于代价估算来选择的。3.2 SQL优化与慢查询SQL优化这类题很实在它考的是你是否真的调优过SQL。常见提问方式有一条很慢的SQL执行计划显示在扫描十几万行之后才过滤掉大部分数据可能是什么问题如何优化标准答案是先看这条SQL的WHERE条件和JOIN条件是否符合最左前缀原则再看关联字段上有没有索引接着看会不会产生临时表和文件排序。如果是ORDER BY导致的慢考虑在排序列上建索引让排序直接走索引有序性。如果是因为SELECT *返回了大量不需要的列改成只查必要的字段能够减少回表次数和网络传输。还有一个很影响执行效率的点分页深翻页。当你要LIMIT 100000, 20的时候MySQL 还是会扫描前 10 万行再丢掉这种场景可以用“延迟关联”来优化先只查主键IDSELECT id FROM table WHERE ... ORDER BY id LIMIT 100000, 20再用主键去关联回原表拿详细信息。这些小技巧会在笔试里拉开差距。3.3 Shell脚本笔试题的三种考法编程这块网易技术支持笔试不像开发岗那样出LeetCode困难题而是比较务实的两道题。我当时遇到的是一道字符串处理和一道逻辑统计题难度大约在LeetCode简单到中等之间。大概率还会有一道Shell相关的小题比如写一个脚本统计日志文件里某个IP出现的次数。如果你比较熟悉基础命令会发现答案其实就是一行awk {print $1} access.log | sort | uniq -c | sort -rn | head -n 10。但笔试的时候很多同学不知道sort和uniq -c的使用顺序——uniq只能去除相邻重复行所以必须先sort再uniq -c否则统计结果会错得离谱。这种小细节正是网易想看的你可能知道有哪些命令但你是不是真的用过它们。除了写答案笔试里的编程题还隐含着代码规范的要求。变量命名、边界条件处理、异常分支判断这些都是给阅卷人看的。很多人写的代码逻辑能跑通但一上来不判空、不考虑输入非法的情况这种代码在线下团队里基本是要被打回重写的。所以哪怕只是笔试也要保持好习惯。3.4 排查场景一道题看清你的实战经验这一年笔试卷子里最让我印象深刻的其实是一道偏场景分析的题目。题目大概是线上服务突然出现大量超时告警登录服务器后发现系统负载正常、CPU占用不高、内存率充足但请求就是全部超时请列举可能原因并说明排查思路。这不就是我工作中真实遇到过的问题吗。我当时列了几个方向线程池被占满、数据库连接池耗尽、Redis出现了慢查询、依赖的下游服务响应变慢、网络层面丢包或者带宽被打满。然后再针对每个方向给出确认手段比如线程池满就用jstack看线程状态是不是大量 WAITING数据库连接池满就查show processlist看连接数是否撑到上限。为什么我强调这道题因为它几乎把所有考点串联在了一个真实场景里。网络、系统、数据库、应用代码你哪个模块理解不够深这道题就答不完整。它不是靠背能背出来的必须有实打实的排查经验。这也是我后来面试过程中最大的体会网易技术支持岗要的不是“学过”而是“干过”。4. 面试与复盘笔试之后的第二战场4.1 面试官真正的关注点笔试通过之后进入面试环节你会发现面试官追问的问题和笔试题高度相关比如“你说你排查过CLOSE_WAIT那当时你们是怎么修复的”“你说索引会失效那你遇到的实际案例是什么”。这说明面试官不是来考你的他是来验证你到底有没有真的做过。我有个印象很深的同学案例他在笔试里把系统排查的流程写得非常漂亮但面试时被问到“你提到用 top 找到 CPU 高的进程如果你用 top 看到的进程是几百个线程的Java进程下一步你怎么办”时他直接卡住了。其实这是很基础的线程级排查但因为他没有实际环境练过知识停留在纸面上一下就露馅了。所以准备面试的最好方法就是在本地搭一套自己的环境亲手操作一遍。不用什么高配服务器一台Linux虚拟机就够了把常见的故障场景都模拟一遍端口被占用、磁盘写满、CPU飙升、进程僵死。不需要模拟到非常复杂的程度关键是让每个命令、每个排查动作都变成肌肉记忆。4.2 笔试后的复盘方法不管笔试成绩如何我都建议认真做一次复盘。怎么复盘才有效不是对一下答案看自己对了多少而是要把每一道题拆开来看这道题考察的是哪块知识体系我答错的题是因为基础不牢还是因为没看清题意这道题如果我在实际工作中遇到我知道怎么下手吗这里我推荐一个自检方法每道题复盘时问自己三个问题——这道题的排查路径是什么、为什么要用这个命令/方案、如果第一个假设不成立还有哪些备选方案。这三个问题能同时考你记忆力、理解力和思维广度。比如你记住了CLOSE_WAIT的排查命令但你知不知道ss和netstat的区别如果连接数特别多导致 netstat 卡顿你有没有备选工具把所有错题按知识点分类统计自己的薄弱模块针对薄弱模块做专项练习比如网络协议的书看一遍把每个知识点和线上真实问题关联起来做到“学一个用一次”记录面试官追问的问题整理成自己的FAQ库后续复习效率极高4.3 避坑清单从笔试到Offer经历了完整的笔试和面试流程之后我总结出几个比较容易被忽视的地方这些细节我在做技术面试官时也会特别留意别只准备Linux命令而忽略网络排查笔试网络题占比最高但很多人复习时默认网络知识最简单结果花大量时间刷LeetCode导致网络题反而失分。写编程题一定要考虑边界条件笔试题会有在线判题哪怕思路对边界条件漏了也会一直报错。我一次笔试里就栽在没处理空字符串的输入上。数据库题不要只答“加索引”网易喜欢追问为什么加索引会变快、什么情况下索引失效、联合索引最左匹配怎么理解答出这些才是完整答案。场景题一定要体现层次感先用户侧现象确认再应用层检查日志接着系统层看指标最后底层依赖逐一排除。这种“由外到内、先整体后局部”的思路比直接给出结论亮眼得多。提前了解公司业务和技术栈网易业务线很多不同部门的技术栈差异较大。你针对目标部门的技术栈做一点准备面试时会让面试官觉得你很用心。另外提醒一点笔试只是整个招聘流程的其中一环即使笔试感觉不好也保持心态稳定。我认识一位朋友笔试成绩一般但面试环节表现突出照样拿到了Offer。技术支持和开发岗最大的不同在于它更看重“沟通表达能力”和“解决问题的思路”而这些东西在面试里其实比笔试更容易体现出来。5. 从笔试延伸到工作技术支持到底需要什么能力5.1 响应速度只是门槛根因分析才是核心考完网易的笔试之后我最大的感受不是“题目好难”而是这套题就是一份技术支持岗位的能力地图。它不考你面试当天记住了多少新东西它考的是从你接触技术到现在的所有积累。做技术支持最核心的能力不是响应快——响应快只是态度问题。真正拉开差距的是根因分析能力同一个故障重复出现了三次你是每次都紧急重启了事还是能沉下去找到真正的原因做一次彻底的修复这决定了你是团队的“灭火队员”还是“定海神针”。举一个笔试题之外的例子线上偶发超时重启就没问题但过几天又出现。表面看是负载问题但深入分析后发现是Redis连接池在低峰期会被回收而高峰期突然大量创建连接导致慢。这种问题靠“重启”永远解决不了必须对连接池配置、线程模型有足够的了解才能定位。这些能力从哪里来就是从平时一次次笔试类似的复盘里慢慢积累出来的。5.2 持续学习技术栈一直在变底层原理不会变2020年笔试里重点考察的是网络、系统、数据库到后来这个岗位的知识要求也在持续变化。近几年容器化、云原生相关的技术栈已经成为日常基础设施新一代的技术支持工程师可能还要面对Kubernetes集群故障排查、微服务调用链分析等更复杂的场景。但无论技术栈怎么变底层的东西从来不变TCP/IP协议栈的原理不会变进程调度的原理不会变数据库索引的数据结构原理不会变。这也是我特别建议在校同学多参加笔试的原因。笔试暴露出来的薄弱点就是你在校园里最值得花时间补的课。你背下来一个jstack用法可能只需要十分钟但真正理解线程池的工作流程、理解为什么会出现线程阻塞需要你花时间读源码、搭环境、复现问题——这个过程是偷不了懒的。5.3 一些面向未来方向的学习建议如果你现在正在准备校招或者已经拿到Offer准备入职我给你几个实际可操作的学习方向把协议栈学扎实TCP的三次握手四次挥手、TCP粘包拆包、HTTP/1.1和HTTP/2的差异、HTTPS握手流程这些不只会出现在笔试里以后线上排查问题都会频繁遇到。熟练掌握Linux的排查工具链top、vmstat、iostat、sar、strace、lsof、ss每个工具至少会配合一个实际场景使用。数据库一定要吃透索引和数据事务不看几遍InnoDB的锁机制和隔离级别面试官一追问就会露怯。Shell脚本和Python二选一学扎实技术支持岗位经常需要写一次性脚本处理日志、做统计、批量操作服务器光靠手动敲命令效率太低。脚本能力会直接影响你的工作幸福感。尝试搭建一套完整的监控告警系统从Prometheus、Grafana到告警规则配置亲手搭一遍比只看不练理解深得多。写到这里我猜你已经感觉到这不仅仅是一篇“网易2020校招笔试复盘”更重要的是这份经历背后技术支持的日常工作是怎么样的。笔试题目本身就是一张地图预告了以后工作中会遇到的各种挑战。如果你考完这套题能清晰地知道自己在哪些方面存在短板并且愿意花时间去补齐它这才是参加这场笔试最大的收获。后来我入职后回头看当年题目里的每一类知识点几乎都能在工作中的某个时刻真实地遇到。愿每一个准备进入这个领域的同学都能带着体系化的思维去学习而不是碎片化地死记硬背。