运维开发笔试备考指南:Linux、Python与场景设计实战解析
2026/8/31 19:58:01 网站建设 项目流程

2018年那个春天,我在宿舍里打开网易实习生招聘的在线笔试链接,报考的是运维开发实习生。点开第一道题之前,我原以为会像普通校招技术岗那样,先来一堆Java或C++的选择题,结果第一题就是关于Linux进程状态和负载均衡的,后面还跟着几道需要写Python脚本处理日志的场景题。整场笔试做下来,我的感觉是:这不是在考你会背多少面试题,而是在考你有没有真正在服务器上摸爬滚打过。

当时我就有一个很直观的判断:运维开发这个岗位,笔试筛的不是“会写代码的人”,而是“既懂系统、又能用代码解决运维问题的人”。这几年我带过不少准备校招的同学,也时不时有人拿着往年的真题来问我,我觉得值得把这类笔试的考察逻辑和准备思路完整拆一遍。如果你是准备投运维开发、SRE、DevOps这类岗位的实习生或应届生,这篇内容可以当一份备考地图来用:先搞清楚出题人要什么,再针对性补短板,比疯狂刷题有用得多。

1. 出题人到底在筛什么:拆解网易运维开发笔试的结构

先别急着背知识点。你拿到一套“运维开发”的卷子,第一件要做的事是读懂这个岗位在业务里承担什么角色。网易这类一线互联网公司的运维开发,不是传统意义上管机房、看流量、调硬件的“网管”,而是要把运维工作产品化和自动化的人。服务器规模上来了,几百上千台机器靠人肉登录执行命令根本不现实,运维开发的核心工作就是写系统、写平台、写自动化工具,把“重复的人工操作”变成“可复用的代码服务”。

这套笔试的题型分布,我回忆下来大致是:计算机基础知识(包括Linux、网络、操作系统)占三成左右,编程能力(Python为主,偶尔有Shell)占三成左右,工具链和技术组件认知占两成左右,剩下两成是开放性场景设计题。这和很多纯后端岗位的卷子有明显区别,纯后端会偏重数据结构、算法、数据库原理,而运维开发更偏重实战性、系统性和“接口思维”——你的代码不是给用户用的,是给机器和团队用的。

还有一个容易被忽略的信号:笔试时间通常给得很紧,题量中等偏大,留给你反复琢磨的时间很少。这种节奏其实是故意的。真正的运维场景里,线上出了故障没有那么多时间让你慢慢查文档,你必须在有限信息下快速判断、快速给出可执行的方案。所以备考时不要只看“会不会”,要练“在30分钟内能不能答完并且答对”。

1.1 从岗位JD反推考点

我当时是先看了招聘JD再决定备考方向的,这点建议大家一定要做。运维开发实习生的JD里,一般会列这么几条:熟悉Linux操作系统,熟悉Shell/Python,了解常用的开源组件(Nginx、MySQL、Redis、消息队列等),有自动化运维或监控系统开发经验者加分。每一句话对应到试卷上都是有分值的:

  • “熟悉Linux操作系统”对应进程管理、文件系统、权限、系统性能分析;
  • “熟悉Shell/Python”对应脚本题、日志分析题、简单算法题;
  • “了解常用开源组件”对应部署架构题、中间件使用场景题;
  • “自动化运维”对应场景设计题,比如写一个监控平台的核心逻辑、设计一套发布系统。

你把岗位JD拆完,再看卷子就会发现,没有一道题是白出的,全是倒过来基于岗位要求设计的。所以我备考的时候不是按学科刷题,而是按“运维开发日常要干的活”来准备:看日志、查负载、做发布、写监控、处理故障。

1.2 题型分布与答题顺序策略

运维开发笔试题的在线系统通常支持自由跳题,我建议先做场景设计题,再做编程题,最后做选择题。为什么呢?因为场景设计题分值高、自由度大,最考验思维,如果你前面在选择题上磨蹭太久,后面很可能没时间认真思考设计题,只好草草交卷,那基本就告别了。我就是先把几道开放题在草稿纸上列出框架,确保至少能拿基础分,再回头慢慢啃选择题。

选择题部分也不要平均用力。Linux命令、网络基础、操作系统概念这类,会就会,不会就果断标记跳过,不要在一道题上卡五分钟。曾经有同学跟我说他笔试时在一道iptables规则匹配题上纠结了十几分钟,结果后面Python脚本题没写完,这是非常典型的策略失误。iptables那题就算做对了也就是一分,而脚本题一道就是十几分,时间分配一定要跟着分值走。

2. Linux、网络、系统知识:基础题是怎么隐藏杀机的

这一部分是很多科班同学觉得“稳了”的部分,但恰恰是失分重灾区。原因很简单:学校教的Linux和网络都是“概念版”,而笔试考的是“实战版”。同样是问进程,课本会问你进程和线程的区别,笔试会给你一段ps -ef的截图,问你哪个进程占了最多内存;同样是问TCP,课本会问你三次握手的过程,笔试会给你一个线上服务大量TIME_WAIT的场景,问你怎么排查和处理。

2.1 选择题里的“送分”与“陷阱”

从内容上看,Linux基础知识占比最高的是文件权限、用户管理、进程管理和常用的排查命令。常规操作像chmodchownpstopnetstatlsof这些肯定要熟。但我发现笔试里比较喜欢考的其实是“命令组合”,比如:找出某个目录下大于100MB的文件并按大小排序,应该用什么命令组合。这其实就是findlssort加管道组合,单纯背命令是不可能答的,你得真的用过。

网络部分的陷阱更多。TCP和UDP的区别、HTTP状态码含义这种题是送分,但一到HTTP和HTTPS混合部署、Nginx反向代理、DNS解析过程、CDN回源这些内容,就开始有明显分层了。还有一类容易被坑的是“软链接和硬链接”“对称加密和非对称加密”“正向代理和反向代理”这种成对概念,平时看起来都懂,但放到具体场景里,很多人一紧张就选反了。应对方法就是自己画一张对比表,把成对概念放在一起理解,重点看“解决问题的角度有什么不同”。

2.2 性能排查类题目的答题套路

运维开发笔试里非常经典的一类题是:“服务器负载突然升高,你用什么思路排查?”这类题表面上没有标准答案,但阅卷人心里其实有一份踩分点清单。我当时用的答题思路,基本是以下四段:

第一,先看全局指标。登录服务器后先跑uptime看负载,看top里是CPU占用高还是内存占用高,再结合freeiostatdstat判断是CPU密集、内存不足还是磁盘IO瓶颈。

第二,找具体进程。通过top按CPU或内存排序,定位到具体进程;再用ps -ef --sort=-%cpu确认进程的启动时间和状态,看看是不是出现了异常进程或僵尸进程。

第三,查关联问题。如果进程是应用服务,就看日志,Nginx的access.log、应用的异常日志、系统日志/var/log/messages;如果怀疑是请求量突增,就结合监控图判断是正常流量高峰还是异常攻击。

第四,给出临时方案和长期方案。临时方案可能是重启服务、切流量、限流;长期方案包括优化代码、加缓存、做容量评估、配置自动扩缩容。

这套答题框架不管是笔试还是面试都非常好用。我说的是“思路”,面试官真正想看到的其实是这种有层次感的排查逻辑。你写的不是答案,是你平时有没有真的处理过线上问题。

2.3 服务变慢类问题的书写顺序

2018年网易的卷子里有一类印象很深的题是“某服务的响应时间突然从50ms变成5s,可能的原因有哪些,请尽可能全面地列出并说明排查方式”。这种题很多同学只写两三条就停了,比如“可能是网络问题”“可能是数据库慢查询”。分数自然就低。

我当时给自己定了一个“不重不漏”的排查顺序:从外到内、从网络到应用、从硬件到软件。第一层是网络链路:客户端到服务器的网络是否抖动、DNS解析是否变慢、防火墙或安全组策略有没有变化;第二层是接入层:Nginx或网关的负载、连接数是否打满;第三层是应用层:GC是否频繁、线程池是否耗尽、有没有死锁;第四层是数据层:数据库连接池、慢查询、Redis缓存是否命中等;第五层是资源层:CPU、内存、磁盘、带宽。每一层先看监控、看日志,再定位具体问题。

这么写的好处是阅卷人一眼就能看出你有全局视野。哪怕你的答案里有些地方不够深入,但覆盖面广、有条理,就已经能拿大部分分了。

3. Python与Shell代码题:纸面上的动手能力分水岭

笔试里的编程题,对运维开发岗位来说,考察的重点不是LeetCode那套算法,而是“用代码解决实际运维问题”的能力。题目往往非常朴素,比如日志分析、文本处理、批量操作、简单的任务调度,但朴素不等于简单,它考察的是你的基本功是否扎实、代码是否简洁健壮、甚至有没有考虑边界情况。

3.1 日志分析题的得分点在哪里

拿一个非常典型的题目举例:给你一份Nginx访问日志,里面包含客户端IP、访问时间、请求路径、状态码、响应大小等字段,要求统计出访问量最高的前10个IP,并且输出每个IP的访问次数。

这题用Shell也能做,用Python也能做。很多人的第一反应是写个Python脚本,打开文件、逐行读取、用字典统计,最后排序输出。逻辑确实没错,但得分点其实藏在三个细节里:

第一,你有没有用正则把IP准确提取出来,而不是简单的split()然后取错字段;第二,你有没有考虑文件很大时一次性读入内存会爆掉,应该改成逐行读取;第三,你有没有处理多个空格和日志格式变化的情况。

我当初的写法是用defaultdict(int)统计,re.match提取IP,然后sorted排序取前十。虽然代码不难,但几个关键的异常处理到位了,就比一堆人在那里直接用line.split(" ")[0]要稳得多。现在回头看,这种题真正考察的就是“你在真实处理日志时踩过坑吗”。

3.2 手写代码最容易丢分的三个点

一是输入输出格式。不少同学写完核心逻辑,结果忘了按题目要求的格式输出,比如该用空格分隔却用了逗号,导致在线判题系统直接判错。这不是能力问题,是习惯问题,平时刷题就要养成先看输入输出格式和题目约束的习惯。

二是边界条件。比如要处理空文件、文件最后一行的换行符、字段缺失、IP为IPv6格式等。大部分真实日志数据都是不干净的,如果你写的代码遇到空行就报错,这在阅卷人看来就是“没有生产经验”的体现,哪怕逻辑正确也会扣分。

三是代码风格和注释。在线笔试一般不强制要求简历级代码规范,但如果你能用一个合理的函数把功能封装起来,并写上一两句注释说明思路,阅卷体验会好很多。我见过有人写200行的脚本完成一个20行就能完成的功能,这种代码就算跑通了,也很难让面试官觉得你是个好的运维开发。

3.3 Shell脚本题:不只是会写命令

Shell题在卷子里出现的形式一般有两种:一种是直接写一段脚本完成某个文本处理任务,另一种是给你一段脚本问你输出是什么或者哪里有问题。后者更阴险,它往往考察的是sedawkgrep这几个工具的细节和Shell的变量扩展、条件判断、循环这些容易被忽略的语法点。

我印象很深的一道题是:给一个文件,要求用awk把第2列和第3列调换并输出,同时忽略以#开头的注释行。很多人直接用awk '{print $3, $2, $1}',但处理不了带注释的行,也处理不了行内字段数不一致的情况。正确写法需要先判断行首是否为#,再处理字段,用NF动态判断字段数量。这些细节,光看《Linux命令行大全》是学不到的,必须真的在终端里反复试过才有感觉。

所以备考Shell的时候,我建议你把常用的文本处理三兄弟练得滚瓜乱熟:grep的匹配和排除、sed的打印替换和插入、awk的列处理和内置变量。每个工具至少找几十行真实日志练一遍,练到不用查手册就能写出来为止。

4. 工程化内容:Git、发布流程、监控报警在试卷上的身影

2018年那会儿,容器编排还没有像现在这么普及,但DevOps理念已经深入到一线互联网公司的运维团队了。笔试内容也很明显地向“工程化”倾斜:不再是单纯问“这个命令什么意思”,而是问“整个发布流程怎么设计”“监控系统怎么做”。这类题目考察的是你有没有参与过真实的研发协作流程。

4.1 Git操作题:命令背后的分支管理逻辑

运维开发跟代码打交道是日常,Git是跑不掉的。笔试里常见的有:怎么撤销最后一次提交、怎么把多个提交合并成一个、怎么处理冲突、怎么把本地代码强制推送到远端。这些命令本身不复杂,难的是你要理解分支管理背后的逻辑:发布分支、功能分支、hotfix分支之间怎么流转,遇到冲突时应该保留谁的版本。

我记得卷子里有一道题提到“某同事提交了一个错误的配置文件到master,现在要把代码回滚到上一个版本,但不能丢失另一个同事的新功能提交”,这其实考察的就是git loggit revertgit reset的区别。很多人第一时间想起git reset --hard,但这么做的结果是把之后的提交全部丢掉,且会改写历史,如果代码已经推到了远端,还会影响别人。正确做法是用git revert,在历史里新生成一个反向提交,既回滚了错误内容又不破坏其他人的提交。这个点考的不是命令背得熟不熟,而是你知不知道在协作环境里“不能随便改写历史”。

4.2 发布流程设计题:工具选型的底层逻辑

场景设计题里出现过这样一种:请设计一个简单的代码发布流程,要求能降低上线风险和回滚成本。这题如果你只是写“用scp拷代码”这种,基本就拿不到分。阅卷人想看的是你有没有把发布当成一个系统工程来考虑。

我当时答的核心是分阶段发布和自动回滚:先把代码从Git拉取到构建机,做编译和静态检查,产物打包上传到制品库;然后在预发环境部署,跑一轮冒烟测试;通过后进入灰度发布阶段,先把新版本推给5%的流量,观察核心指标,再逐步放大到30%、100%;每一步都配有健康检查和自动回滚机制,一旦指标异常立即切回旧版本。工具选型上提了Ansible做批量配置管理,SaltStack做远程命令执行,Jenkins做持续集成,用Nginx或负载均衡器做流量切换。

这类题考察的不是你会不会某个具体工具,而是你有没有“降低风险”和“可回滚”的意识。哪怕你工具用的和你平时习惯的不一样,只要能把流程闭环讲清楚,就能拿高分。

4.3 监控报警题:数据闭环思维

监控是运维开发的核心工作之一。笔试经常给一个场景:现有服务经常半夜挂掉,都是用户投诉之后才发现,让你设计一套监控系统。很多人会答“用Prometheus采集指标,配置Grafana展示”,但这样答完基本就没了。出题人真正希望你写的是监控的完整闭环:数据采集、指标存储、告警规则、通知渠道、告警处理、复盘归档。

数据采集部分,要区分系统层指标和应用层指标:系统层有CPU、内存、磁盘、网络;应用层有QPS、响应时间、错误率、JVM内存。告警规则部分,要能写明白阈值怎么定:比如CPU连续5分钟大于80%才告警,而不是瞬时值,避免抖动误报;通知渠道要有分级:P0级同时联系值班人、技术负责人,P2级只在群内通知。最后还要有告警处理记录和复盘流程,形成“告警-处理-复盘-改进”的闭环。这套东西你只有当过真实的“背锅人”,才会写出一套自己能信服的方案。

5. 场景设计题怎么答才不白写:从故障排查到系统设计

如果说前面的题目是在筛“熟练度”,场景设计题就是在筛“成熟度”。运维开发岗位最值钱的不是你会多少个工具,而是你在面对一个模糊问题时,能不能快速给出结构化的解决方案。这类题没有标准答案,但评分的差异可以非常大。

5.1 故障处理类题的结构化表达

最典型的一道题是:“线上服务挂了,你是第一发现人,请描述从发现到恢复的完整过程。”这种题看起来谁都能写几句,但高分的答案是有时间线和行动清单的,低分的答案往往是流水账。

我给自己的答题框架是“发现-定位-止损-恢复-复盘”五步。发现环节写清楚你怎么感知到:监控告警、用户反馈还是巡检发现,不同的发现渠道对应不同的响应速度;定位环节用我之前说的外到内排查法;止损环节要果断:先切流量、降级、回滚,而不是当场改代码;恢复环节写清楚具体操作和验证方式;复盘环节要输出结论:根因是什么、怎么避免再次发生、下次如何更快发现。

写这种题,最忌讳的是跳过止损直接去讲怎么定位根因。真实的线上故障处理,第一原则永远是先恢复业务,再研究原因。如果你能体现这个意识,阅卷人基本就能确定你是有实战潜力的。

5.2 设计类题目的“三视角”答题法

除了故障处理,还有一类是“请设计一个XX系统”。我考的那年有一道印象很深的题:“请设计一个简单的服务器批量管理平台,要求能实现对多台服务器的命令执行和文件分发。”这题如果你直接从“用什么框架、什么数据库”开始答,思路就跑偏了。

这类设计题建议从三个视角展开:用户视角、系统视角、运维视角。用户视角是谁在用这个平台:是运维同事,他们要能提交批量执行任务、看执行结果;系统视角是整个平台的架构:一个中心节点加每台服务器上的Agent,中心节点负责任务下发和结果收集,Agent负责执行命令和上报状态;运维视角是安全性和可靠性:Agent的认证方式、命令执行的权限管控、失败任务的重试和日志留存。

三视角写下来,你的答案就非常立体了。哪怕里面很多细节并不深入,但至少证明你想问题的方式是成熟的。

5.3 场景题的“信息呈现”技巧

最后说一个答题之外的技巧。场景设计题通常没有输入输出样例,阅卷人看的是你卷面上的结构。如果一上来就是密密麻麻的整段文字,阅卷人很难快速抓到你的思路,分数自然不会高。

我的习惯是在答题区先写一个大纲,比如:1. 整体架构,2. 关键流程,3. 容错设计,4. 有待补充的点。然后每一点用三五句话展开,关键名词加粗或者在行首标注。这比写一篇小作文要有效得多。笔试的阅卷时间是有限的,你帮阅卷人省时间,阅卷人就给你多打分。

更重要的是,要把“不确定的地方”也写出来,比如“这里如果引入消息队列会更稳,但我对它的性能不太确定,所以先不展开”。这种话看似示弱,实际体现的是你的边界感——你知道什么能确定,什么需要进一步验证,这比假装全懂却写得模糊强得多。

6. 复盘之后的三个认知:运维开发这份工作到底需要什么

笔试结束后,走出考场或者说关掉笔试页面的那一刻,我并没有松一口气的感觉,而是觉得被一张卷子照出了很多短板。后来我拿到了面试机会,也顺利入职实习,再从实习到正式参与生产环境的运维开发工作,再回看这份笔试,我越来越觉得它考的东西和真实工作之间的重合度高得惊人。

第一个认知是:运维开发首先是一名开发,其次才是运维。代码能力是所有工作的基础。你可以不会K8s,但你不能不会Python;你可以不了解某个监控系统,但你不能不会分析数据、写自动化脚本。笔试里代码题权重很高,工作里更是如此,我写的最多的不是运维脚本,而是各种平台的后端接口和数据处理逻辑。

第二个认知是:运维的核心竞争力是“故障处理能力+系统设计能力”的组合。单纯会排查故障、会上手操作服务器的人很多,但能把一套故障处理经验沉淀成自动化平台的人很少。我刚入职那会儿,天天在处理重复的告警和工单,后来才意识到,高级的运维开发不是让自己越来越忙,而是通过代码和系统让自己越来越“闲”。笔试里的场景设计题,考的就是你有没有这种“自动化自己”的思维。

第三个认知是:校招笔试只是起点,真正的分水岭在实习期的第一周。笔试可以突击准备,但工作中的系统是复杂的、脏的、充满历史包袱的。提前把网络、操作系统和Linux基本功打牢,是应对这些复杂性的最佳姿势。就像我在笔试时复盘出的那套故障排查思路,后来真上了生产环境,发现每一步都还能用上,只不过信息源从考试题目换成了监控面板和日志系统。

如果你正在准备运维开发岗的笔试,我的建议很直接:别只刷算法题,去做几件真实的事。在自己的电脑上装一台虚拟机,部署一套Nginx加PHP或者Python服务,用Ansible同时管理两台节点,自己写脚本扫描日志统计异常,给自己搭建一个简单的监控看板。做完这些事,再回头看笔试题,你会发现很多题目根本不用背,因为答案就是你每天在干的事情。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询