拓冰建站拓冰建站
首页 / 资讯中心 / 正文

美团校招运维笔试全解析:从Linux到Kubernetes的考点与思路

2020年美团校招运维方向的笔试题到现在我都记得一个感觉它没有一道题是“背一背就能过”的。整套卷子像是一张线下故障排查的缩略图从Linux命令到Shell脚本从网络状态码到MySQL慢查询全都在问“线上真出了这个问题你第一步做什么”。这篇文章不是押题也不是标准答案集而是把美团2020校招运维方向的出题逻辑和常见题型拆开揉碎。主要内容覆盖Linux、Shell、网络、MySQL、Redis、监控、容器和面试延伸适合正在准备大厂运维校招的同学也适合刚入行想建立完整知识体系的运维新人。我尽量把每一类题背后的考察意图讲清楚这样就算你笔试碰到的具体题目不一样也能用同一套思路应对。1. 美团2020校招运维笔试到底在考什么1.1 从笔试题看美团的运维岗位画像先说一个很多人容易误解的地方大厂的校招运维岗不是传统意义上的“修电脑网管”。美团2020年这个时间节点运维体系已经在明显往SRE和DevOps方向转。笔试题目里能明显感觉到他们想要的是“会写脚本的工程师”而不是“会点鼠标的工具人”。我当时拿到卷子后快速扫了一遍第一感觉是知识的“广度”要求很高。Linux要熟练、Shell要能写、网络要懂原理、MySQL和Redis要会排查、监控和容器要有概念。这本质上是把生产环境中一个运维每天可能接触到的技术栈压缩成一份90到120分钟的试卷。为什么要这么考因为运维这个岗位的日常工作就是“面对不确定性”。你永远不知道下一个故障是磁盘满了、流量突增、慢查询拖垮数据库还是某个Pod被OOMKilled。笔试覆盖面广就是在模拟“你什么都要会一点”的真实状态。还有一个点美团的核心业务是外卖、到店、酒旅这类高频交易场景流量有明显的波峰波谷系统一旦出问题影响的是真金白银的订单。所以笔试题里很多场景都会带上“高并发”“故障”“恢复”这些关键词目的是筛选出有稳定性意识的人。1.2 笔试的整体结构与时间分配建议从题型结构上看2020年校招运维方向的笔试题大致可以分为四块客观题选择、填空、简答题、Shell编程或场景题、综合排查题。客观题覆盖概念和多选题经常在一两个字上设坑简答题需要写原理编程题则是现场写脚本。我根据印象和身边同学的反馈整理了一个大致的题型占比方便你规划复习重点题型块常见考察点大致占比Linux命令与文件系统find、grep、awk、权限、软硬链接20%左右Shell编程与文本处理日志统计、循环处理、定时任务20%左右网络与系统原理TCP握手、HTTP状态码、负载排查25%左右数据库与中间件MySQL索引、Redis缓存、消息队列20%左右监控、容器与云原生Prometheus、Docker、Kubernetes15%左右注意这个比例不是绝对的但能看出来Linux、Shell、网络这三块合起来占了六七成是绝对的复习重点。时间分配上我的建议是“客观题速战速决”。会做的题赶紧做拿不准的先标记千万不要在一道多选题上纠结五分钟。编程题一定要留出至少20分钟先写一个能跑通的主流程再去优化边角细节。综合题往往是最后的大题按“现象 - 排查步骤 - 根因 - 解决方案”的结构答哪怕结论不完美框架对了也有分。2. Linux基础与Shell脚本送分题还是送命题2.1 高频Linux命令考点Linux命令这块笔试考的不是“你知道这个命令吗”而是“你在限时压力下能不能准确组合出命令”。单条命令大家都会但一旦涉及管道、正则、文本统计差距立刻体现。我记得有一类真题风格是查找/var/log目录下最近7天内修改过、大小超过100MB的文件并列出明细。这道题正解是find /var/log -mtime -7 -type f -size 100M -exec ls -lh {} \;这里有几个考点-mtime -7代表最近7天内修改过-size 100M表示大于100MB-exec是执行后续命令。很多人会把-mtime写成-mmin或者把100M写成100M差一个符号结果就完全错误。还有一类高频题是统计类比如统计access.log中状态码为500的请求次数或者统计出现次数最多的前10个IP。这种题就是标准三板斧grep过滤、awk取列、sortuniq统计。grep 500 access.log | wc -l awk {print $1} access.log | sort | uniq -c | sort -rn | head -10这类命令题错的人反而不多容易丢分的地方是“结果格式不对”。比如排序忘了加-rnuniq忘了先sort。因为uniq只能去重相邻行不先sort的话统计结果完全错误这是笔试里特别经典的坑。文件权限也是必考项。chmod的数字表示法、chown的用户组修改、特殊权限SetUID/SetGID这些概念不仅笔试考面试也会追问。我建议你把r4、w2、x1的换算关系练到反射级别同时要知道目录的执行权限意味着“能否进入该目录”这跟文件的x权限含义不同。2.2 Shell编程题解题套路Shell编程题通常是一道大题给一个场景让你写脚本。美团这类公司很务实场景一般就来自日常运维工作日志切割、批量部署、服务健康检查、数据库备份。我印象里比较有代表性的一个题目写一个脚本统计Nginx日志中访问量最大的前10个IP并输出访问次数。这个需求在真实工作中出现频率极高笔试考它就是看你能不能把需求拆成命令流。一个基本可用的写法#!/bin/bash LOG_FILE/var/log/nginx/access.log awk {print $1} $LOG_FILE | sort | uniq -c | sort -rn | head -10这个脚本虽然简短但包含了一个意识把日志路径定义成变量。你可能觉得多此一举但在实际脚本里所有可变项都应该变量化不然换个环境或者换个文件名整个脚本就废了。进阶一点考题会要求“排除内网IP”或者“统计某个时间段内的请求”。这就需要你掌握awk的正则匹配能力比如用$4匹配时间字段用$9匹配状态码。我建议准备笔试时多练这种组合场景比死记单个命令管用得多。另外Shell脚本里有一类“服务健康检查”题也常出现核心逻辑是#!/bin/bash URLhttp://127.0.0.1:8080/health HTTP_CODE$(curl -s -o /dev/null -m 3 -w %{http_code} $URL) if [ $HTTP_CODE ! 200 ]; then echo $(date %Y-%m-%d %H:%M:%S) service abnormal, code$HTTP_CODE /var/log/health_check.log # 触发重启或告警 fi这里有个细节curl一定要加-m超时参数。不加超时的话如果接口卡住脚本会一直挂着这个脚本本身就成了故障源。这种“细节意识”是笔试考察的重点也是实际工作中区分老手和菜鸟的地方。2.3 踩坑记录与细节提醒自己写脚本踩过的坑比背十条命令都长记性。我在准备这类题时最常犯的错误有三类你在笔试和实际使用中都可能遇到。第一类是变量和空格的问题。Shell赋值等号两边不能有空格写成“name test”就是命令错误。还有一个更隐蔽的判断条件中的空格if [ $VAR yes ]方括号和变量之间必须有空格少了就是语法错误。这类问题笔试不会提示你运行所以平时一定要真写、真跑。第二类是crontab环境变量问题。脚本在命令行手动执行正常放到crontab里就报“command not found”。原因是crontab执行环境精简PATH没有包含/sbin和/usr/local/bin脚本里最好写绝对路径或者开头export PATH。这类题如果以简答题出现你要能说出“脚本依赖的环境变量问题”这个排查方向。第三类是正则和转义。grep -E和grep直接使用基础正则时对、?、|这些字符的处理完全不同很多人在这里挂过。我建议统一用grep -E或egrep避免基础正则里“”号到底要不要反斜杠的混淆。提示笔试中做文本处理题时先想清楚“这题用cut能不能做、用awk怎么做、用sed怎么做”不要只憋一个方法。多个方案想清楚后选最顺手的写正确率会高很多。3. 网络基础与系统原理运维的地基3.1 TCP/IP与HTTP常见考点网络题在运维笔试里属于“原理实战”的结合体。美团这类大厂非常看重你对TCP/IP协议栈的掌握因为线上出故障时第一件事就是要判断问题出在网络链路还是应用层。HTTP状态码是必考的而且考得非常细。除了200、403、404这种基础码更值得关注的是状态码含义常见场景499客户端主动断开连接服务端响应慢用户等不及关闭了页面502Bad Gateway网关或代理后面的服务不可用503Service Unavailable服务过载或维护中504Gateway Timeout上游服务处理超时我记得考题会有类似“Nginx返回大量502列出排查思路”这种简答题。正确思路是先查Nginx后端服务是否存活再查后端的负载和超时配置然后看后端日志是拒绝连接还是处理超时最后结合监控看是不是流量突增导致连接池被打满。答题时要从链路视角一步步推进而不是笼统地说“重启一下”。TCP三次握手、四次挥手也是老演员了但大厂问的角度很刁钻。比如“TIME_WAIT大量出现的原因是什么怎么处理”。这个问题的标准背景是高并发的短连接服务中主动关闭连接的一方会进入TIME_WAIT状态大量TIME_WAIT会占用本地端口导致新连接无法建立。处理方法包括开启tcp_tw_reuse、调整keepalive、使用长连接替代短连接。这种题没有标准答案关键看你能否把机制和场景对应起来。3.2 系统负载与性能排查中的题目逻辑系统性能排查题考的是你的排查框架是不是清晰的。有一类经典题某台机器CPU使用率不高但load average非常高怎么排查。很多人一上来就答“看CPU占用率”这正好掉进陷阱。load高说明的是“运行队列里等待调度的进程很多”它不直接等于CPU占用高还可能是因为大量进程处于不可中断睡眠状态D状态最常见的原因是磁盘I/O瓶颈。完整的排查思路应该是先用top看CPU和负载按CPU排序和按内存排序分别观察再用vmstat看r运行队列和b阻塞进程两个指标b非零说明有I/O阻塞然后iostat看磁盘util和await确认是不是磁盘慢导致D状态进程堆积。最后根据结论针对性处理比如换SSD、优化SQL减少磁盘读、调整进程并发数。这一类题考察的是“分层排查”的能力从系统层到应用层一步步缩小范围而不是靠猜。你笔试答题时也可以按“先确认现象 - 看系统指标 - 看进程状态 - 看日志”这个顺序来组织。3.3 网络排查题的答题思路网络排查题在笔试里通常是综合题比如“用户反馈APP加载很慢你怎么排查”。这题放在真实场景中是一个典型的全链路问题。我的答题框架分四步本地到网关、DNS解析、网络链路、服务端处理。第一步在客户端机器上ping网关确认基础连通性第二步nslookup确认域名解析正常第三步traceroute看链路哪一跳延迟高第四步到服务端看接入层的访问日志和监控指标确认是网络问题还是后端处理慢。还有一个高频命令组合ss -lntp查看监听端口curl -I测试HTTP头部响应telnet测试端口连通性。这些命令要熟练到什么程度看到一个需求能在三秒内想到对应命令。比如“查端口被人占用了”第一反应是ss -lntp或netstat -tlnp而不是去翻文档。笔试不让你开卷所以这种条件反射必须平时练出来。4. 数据库与中间件业务运维的日常4.1 MySQL考察方向MySQL在运维笔试里占比不低因为几乎所有互联网业务的最终数据都在数据库里而数据库出故障往往是P0级别。笔试对MySQL的考察集中在索引、慢查询、主从复制和备份恢复几个方向。索引这块几乎每年都有“什么情况下索引会失效”的简答题。常见的索引失效场景对索引列使用函数、隐式类型转换、LIKE以%开头、OR条件中有非索引列、联合索引不满足最左前缀。我在实际运维中踩得最多的是隐式类型转换比如索引列是varchar查询条件却传了数字MySQL会隐式转换成数字导致索引失效。这个案例写进答案里比只背理论要加分很多。还有一类场景题一条SQL查询很慢怎么排查和优化。标准动作是先用EXPLAIN查看执行计划重点看type、key、rows三列确认是全表扫描还是索引选择不合理再看是否因为数据量过大需要考虑分表或者增加缓存。如果线上环境还要先看慢查询日志是否已经把这条SQL记录下来了再决定优化策略。主从复制也是重点。要能说清楚binlog格式STATEMENT、ROW、MIXED的区别要能解释主从延迟常见的几种原因主库大事务执行时间过长、从库单线程回放跟不上、从库有慢查询占用IO。美团这种规模主从延迟的考题可能会加上“如何优化”的追问答案是开启并行复制、拆分大事务、对从库做只读约束。4.2 Redis缓存考点Redis是运维笔试里的“高频配角”几乎一定会出现但考察深度比MySQL浅基本集中在缓存穿透、击穿、雪崩三兄弟。缓存穿透是指查询一个不存在的数据缓存和数据库都没有请求直接打到数据库。解决思路是缓存空值或者用布隆过滤器在缓存前面挡一层。缓存击穿是指某个热点key过期瞬间大量请求同时打到数据库。解决思路是互斥锁或者把热点key设置为永不过期。缓存雪崩是指大量key同时过期导致大面积请求打到数据库。解决思路是过期时间加随机值或者用集群降低单点压力。这种题很容易答但不容易答好。光说“加锁”“加随机值”只能拿基础分更好的是补充细节比如互斥锁用什么命令实现SETNX锁的过期时间设多少合适通常设置为业务超时上限布隆过滤器怎么控制误判率。有了这些细节才显得你真的在线上处理过问题。另外Redis持久化也是笔试常见点。RDB和AOF的区别、各自优缺点、生产环境怎么选。我的实践经验是既要数据安全又要性能一般用AOF加everysec策略再配合定期RDB做快照。如果允许数据丢失几十秒钟默认RDB其实也够。笔试如果问“Redis重启后数据丢了”大概率是没开AOF或者AOF配置成了always还出问题那就要检查磁盘IO了。4.3 常见组件与消息队列除了MySQL和Redis2020年这个时间节点的运维笔试还会带上Nginx、Kafka、RabbitMQ、Zookeeper这些中间件的概念题。考察深度不深但至少要明白每个组件是干什么的、挂了对业务有什么影响。Nginx的高频考点是反向代理、负载均衡策略轮询、权重、ip_hash、动静分离。有一类题会给定一个场景后端服务有3个实例其中一台突然性能下降Nginx如何把流量调走。答案思路是利用Nginx的健康检查机制结合权重降到0或者使用upstream的backup标记。Kafka和RabbitMQ的考点则更偏向“消息堆积了怎么处理”。这类题考察的是消息中间件的原理理解Kafka消息堆积时可以考虑增加消费者实例、提升单条消费速率、确认是否有消费逻辑卡住。答题时不要只答“扩容”要说出“先确认堆积是生产端快还是消费端慢再针对性处理”。5. 自动化、监控与容器化未来运维的门槛5.1 监控体系考题思路监控是运维的核心工作之一笔试里往往以设计题或者简答题出现。比较经典的一题是让你为一个Web服务设计一套监控方案包含哪些层次和指标。我的答题框架是三层基础层、应用层、业务层。基础层监控CPU、内存、磁盘、网络对应node_exporter这类采集器应用层监控进程状态、JVM/GC、接口QPS和延迟对应Micrometer或者JMX业务层监控订单量、支付成功率、用户登录数通常来自业务埋点。三层指标打通才能定位一个业务异常到底是底层资源问题还是应用逻辑问题。告警设计也是一个考点而且最容易看出你有没有实战经验。告警不是越多越好重点是“有效”。我见过很多团队告警风暴半夜被无关告警吵醒结果真正出问题时反而被淹没。笔试如果问“如何设计告警规则”你可以提到配置合理阈值、聚合相似告警、设置告警升级策略、用抑制规则减少重复通知。能答出“减少无效告警”这个思路就比单纯列指标高一档。5.2 自动化运维与CI/CD自动化工具的题在2020年笔试中占比不算特别大但已经是必考方向。Ansible和SaltStack这类配置管理工具答题时要说清楚它们的“无代理”和“有代理”模式区别。Ansible走SSH天然无侵入适合批量执行命令和推送配置SaltStack走minion实时性和扩展性好适合大规模集群管理。笔试如果考CI/CD大概率是让你描述一个发布流程。核心链路是代码提交 - 静态检查/单元测试 - 构建镜像 - 推送到镜像仓库 - 部署到测试环境 - 通过后部署生产。运维在其中的角色是环境管理、发布策略蓝绿发布、金丝雀发布、回滚预案。你能画出这个流程图并且说明每一步的工具选型就基本满分了。这里顺带提一个容易忽略的点自动化要掌握一个“度”。不是所有操作都适合脚本化变更类操作需要审批、备份、回滚方案。笔试如果问到“自动化脚本上线要注意什么”一定要提到“灰度执行”和“失败中止机制”这是我实际工作中最看重的两个原则。5.3 Kubernetes与容器技术考点2020年的运维笔试容器和Kubernetes已经从“加分项”变成了“必考项”。美团当时的容器化推进已经比较深入所以笔试题里对容器技术有一定要求是完全正常的。基础考点是Docker的核心概念镜像和容器的关系、Layer机制、数据卷、容器网络的几种模式。我曾经见过一道填空题Docker容器文件系统由多个只读层和一个可写层组成。这种题考的就是对镜像分层原理的理解。Kubernetes的考点更集中核心组件包括kube-apiserver、etcd、kube-scheduler、kube-controller-manager、kubelet要能说清每个组件的职责。Pod和Deployment的关系、Service的负载均衡原理、探针类型liveness、readiness、startupProbe都是重点。有一类综合题会问“Pod一直处于ContainerCreating状态怎么排查”答案是先kubectl describe pod看事件再检查镜像能否拉取、资源配额是否足够、存储卷是否挂载成功。很多人会问容器化和云原生的内容怎么准备我的建议是不要死记概念最好自己在虚拟机里搭一个minikube或者K3s环境实际创建Deployment、填写探针、配置HPA、观察调度结果。笔试遇到这类题时你会发现自己比那些只看文档的同学理解得深很多。比如填空题“kubelet与容器运行时之间通过什么协议交互”答案是CRI你能想起来说明你真的动手验证过。6. 从笔试到面试备考路线与心态6.1 笔试考广度面试考深度很多人笔试过了却在面试环节被刷原因是把笔试和面试当成两件事。实际上笔试中暴露的知识盲区面试官大概率会顺着追问。举个例子笔试题里出现“缓存雪崩”你答了“加随机过期时间”面试官就会接着问为什么加随机值就能避免雪崩随机区间怎么定RDB和AOF在极端场景下各会丢失多少数据所以我的建议是笔试结束后立刻复盘一遍自己没把握的题目把相关知识点从“了解”补到“能讲清楚原理”。这个过程不要停留在看文章要亲手实验验证。比如“Redis AOF重写机制是怎么触发的”你可以在测试环境设置一个很小的阀值观察日志文件的变化。6.2 面试前如何准备项目经历面试中“项目经历”环节是校招生最容易准备不到位的地方。你可能没有大型项目经验学校里的课程设计、自己的博客系统、帮实验室搭的监控都能作为项目经历。关键是讲法。我建议用STAR思路来准备背景Situation、任务Task、行动Action、结果Result。比如我帮实验室搭过一套监控告警系统背景是服务经常半夜挂掉没人发现任务是实现自动告警行动是选了Prometheus加Grafana配置了节点和服务的指标采集设置了钉钉告警结果是服务挂掉后能在1分钟内收到通知。如果你还没有这样的经历现在就可以自己造一个在自己的云服务器上部署一个Web服务配合Nginx、MySQL、Redis再搭一套监控。这个过程本身就能让你在面试中讲出很多细节Nginx反代配置、MySQL备份策略、Redis缓存怎么失效的、服务器被攻击后你怎么封IP。6.3 给准备校招的同学的几点建议临近笔试知识点多而杂很容易觉得哪都差哪都不想看。我建议按优先级分配时间Linux命令和Shell脚本是性价比最高的短期刷题提升最明显每天坚持手写几个命令组合网络和系统原理需要理解建议结合日常上网的体验去记忆比如刷网页慢时想想可能是哪一层出了问题数据库和组件重在场景化把缓存穿透、慢查询这些名词对应到具体案例上。操作环境一定要提前搭好。哪怕只是一台2C2G的小云主机也能覆盖90%的运维笔试知识点。装好Linux系统练习用户管理、文件权限、网络配置、Nginx、MySQL、Redis、Docker再写几个定时任务脚本。你亲手做过一遍和只刷题看过一遍效果是两个量级。我最后的建议是考前不用追求“全都会”大厂校招笔试从来不是为了筛“全知全能”而是为了筛掉“连基本功都不扎实”的人。把高频考点练熟把常见框架记住综合题按“现象-排查-根因-解决”的结构写分数就不会差。我到现在还能清楚记得当年笔试有一道Shell题要求统计日志里Top 10的IP当时我第一版脚本没有先把状态码过滤掉统计结果包含了一堆四五百的请求。后来在工作中真遇到类似排查需求反而特别感谢那道题它让我明白了处理数据前先想清楚“按什么维度过滤”比急着敲命令更重要。祝每一份努力都有回报也希望你能从这套题里看到运维这个岗位真正的能力要求。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门