尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

顺丰科技运维笔试高频考点复盘:从Linux基础到排错实战

顺丰科技运维笔试高频考点复盘:从Linux基础到排错实战 1. 顺丰科技19年秋招运维笔试的考察逻辑客观题不只是背答案2019年那会儿运维岗位的秋招竞争已经很激烈了。顺丰科技的运维工程师笔试从形式上来看以客观题为主单选、多选、判断题混着来但如果你以为客观题就是死记硬背、碰碰运气那大概率会在分数上栽跟头。我当时收集和复盘过这批题目也和几个参加过笔试的同事交流过发现它有一个非常明确的规律所有客观题都在变相考察“生产环境里你会不会做决策”。一个很典型的细节是题库里有很多“选出下列说法正确/错误的一项”这种题四个选项往往对应着四个不同的知识点或者同一知识点的四个侧面。也就是说一道题实际上覆盖了四个考点你做对了这一道不代表只会这一个点就行而是要求你对相关的一组概念都有清晰的认知。这种出题方式的筛选效率很高也决定了你不能靠单一知识点的突击来过关。从知识分布来看这批题基本覆盖了以下几个板块Linux基础命令与文件系统、网络协议与排障思路、数据库与中间件常识、Shell脚本和系统服务管理、以及一部分容器和虚拟化相关的概念题。比例上Linux和网络加起来能占到六成左右剩下的分布在数据库、中间件、脚本和少量综合场景题上。这个分布和顺丰科技这类大型物流科技公司的实际系统规模是匹配的——他们有着大量自建机房和分布式系统运维工程师不仅要会敲命令更要理解系统之间怎么协作。还有一个值得注意的地方是这批笔试题虽然叫“客观题”但有一部分场景题是以“某一个现象描述选择最可能的原因”来出的。这类题表面上是选择题实际上需要你有完整的排查思路。这也是为什么我会建议准备笔试的同学不要只盯着题库刷而是要把每个知识点背后的“为什么”搞清楚否则你在多选题上会很吃亏。坦白讲运维笔试的客观题部分就是一道筛子筛掉那些对系统底层机制一知半解的人。接下来我按知识板块把高频考点和解题思路拆开讲这里面大部分内容即便放到现在的运维笔试里依然适用。2. Linux基础与命令类题目最不能丢分的送分题2.1 ps、top、free、df这些命令考的是你对输出字段的理解运维笔试里Linux基础命令几乎是必考板块但考法并不是“ls是干什么的”这种级别而是直接给你一段命令输出让你判断系统状态。比如ps aux这一条命令几乎每次笔试都会出现常见考法是给出某个进程的STAT列是D、R、S、Z中的哪一个让你选这个进程当前处于什么状态。这里很多人会搞混的是D状态和Z状态。D状态是不可中断睡眠通常是进程在内核态等待I/O完成比如等待磁盘写入这种状态下kill不掉因为内核不响应信号Z状态是僵尸进程进程已经终止但父进程还没调用wait()来回收它虽然占用不了多少资源但如果大量堆积会耗尽进程号。两道题经常一起出现就是为了看你能不能分清“杀不掉”和“不用管”的区别。再比如free -h命令考的是对内存指标的理解。很多初学者会盯着free这一列看觉得可用内存就这么多但实际上Linux的内存管理逻辑里buff/cache在需要时是可以被回收的。笔试中常考的判断是系统可用内存应该看available这一列而不是free这一列。这个点也是实际运维中排查内存问题最常见的误区。df -h和du -sh的区别也是高频考点。df是从文件系统层面看磁盘空间使用情况du是从文件层面统计目录大小。一个经典场景是磁盘满了但你用du找不出大文件这时候就要想到可能有进程已经删除了文件但还没释放句柄。这个场景在笔试里换个马甲就会出现比如“磁盘空间显示100%但du统计不到大文件最可能的原因是什么”——选项里会有“删除了文件但进程未释放”这个正确项。2.2 文件权限、软硬链接、inode机制出题角度很刁钻文件权限这一块笔试很少直接考chmod 755是什么意思而是让你算某个权限值下用户能做什么。比如给定一个文件权限是-rw-r-----属主是root属组是staff然后问一个属于staff组但不是root的用户能不能读这个文件。这类题考的是你对权限三位一组、特殊权限位SUID/SGID/Sticky的理解是否扎实。SUID是一个很爱考的点。比如/usr/bin/passwd这个文件有SUID位普通用户执行它时可以临时以root身份修改/etc/shadow这就是为什么普通用户能改自己密码的原因。笔试会问“SUID位对文件有什么影响”答案不是“文件会一直以root运行”而是“执行该文件的用户临时获得文件属主的权限”。这个区别很关键。软链接和硬链接的区别在笔试里的出场率也非常高。核心考点就两个方向一是inode硬链接共享同一个inode软链接是独立文件、存的是目标路径二是删除行为删除源文件后硬链接还能正常访问内容软链接就变成断链。有些题会给出一个数字让你判断“这个文件有几个硬链接”考察ls -l输出中第二列的含义。这个第二列的值等于目录项数加上硬链接数很多人会漏掉当前目录和父目录这两个引用。2.3 crontab和systemd必考但不深重点在环境变量和启动顺序定时任务也是常客。题目一般集中在crontab中分、时、日、月、周的位置顺序以及crontab执行脚本时环境变量不生效的问题。后者是实际运维中非常经典的坑因为crontab执行脚本用的shell环境是非交互式的不会加载/etc/profile这类登录环境文件。笔试会考你“为什么脚本在终端执行正常放到crontab里就报command not found”正确思路是脚本里要写全命令的绝对路径或者在脚本开头手动source环境变量文件。systemd相关的题目在2019年已经出现了但考得不深主要是systemctl的几个常用命令restart和reload的区别、enable和start的区别、查看服务日志用journalctl。这里比较容易踩坑的是restart是先停后启reload是让服务重新加载配置而不中断进程两者适用场景完全不同比如Nginx修改配置后应该用reload而不是restart否则高并发下会断连。这类题目做错的人不少因为平时敲命令不思考背后的语义。Linux命令这块我的建议是不要在笔试前临时背命令参数而是把你日常操作中每个命令的输出好好看一遍。很多题考的就是输出里某个字段的含义你看得多了自然有印象。3. 网络与协议类题目经典模型与实战排错思路的结合3.1 TCP三次握手与四次挥手考的是异常状态而不是流程本身网络基础在运维笔试里占据了相当大的比重但出题风格明显偏实用。三次握手和四次挥手是必考的不过不是让你默写流程而是考异常状态。常见考法有SYN Flood攻击利用了TCP三次握手的哪个环节答案是服务器收到SYN后发送SYNACK进入SYN_RECV状态但客户端不回ACK导致服务器维护大量半连接耗尽连接队列。四次挥手里的TIME_WAIT状态也是一个考点密集区。服务器上出现大量TIME_WAIT连接是什么原因、怎么处理这是面试和笔试都喜欢问的。TIME_WAIT是主动关闭连接的一方在收到对端FIN后进入的状态目的是保证最后的ACK能到达对端以及让旧连接的报文在网络中消逝。高并发短连接场景下TIME_WAIT多是正常现象可以通过调整内核参数来加快回收但不是所有场景都适合开启复用如果连接两端有NAT设备盲目开启tcp_tw_reuse可能引起连接错乱。笔试里考到这个主要看你能不能分清楚TIME_WAIT和CLOSE_WAIT的区别CLOSE_WAIT是被动关闭方没调close而产生的是程序bug。这两个状态如果混了排错思路就全错了。3.2 DNS解析流程别只知道递归和迭代DNS的题目在运维笔试里出镜率很高考法通常是给出一个域名访问的全过程让你排出顺序。核心链路是浏览器缓存、操作系统缓存/etc/hosts、本地DNS服务器、根域名服务器、顶级域名服务器、权威域名服务器。笔试还会考一个实际运维中非常常见的坑——修改了/etc/resolv.conf里的DNS地址但域名解析结果没变为什么这时候要想到还有nscd或systemd-resolved这类缓存服务它们会把解析结果缓存住光改配置不刷新缓存是没用的。还有一个高频考点是CNAME和A记录的区别以及TTL的含义。TTL决定了DNS记录在本地缓存的时间运维在迁移服务器IP时通常会把TTL先调低等迁移完成后再调回去就是为了让旧IP的缓存尽快过期。笔试如果考“为什么迁移IP前要先调低TTL”思路就是这个。3.3 能ping通但连不上端口最经典的排障场景题这类题在客观题里经常以这种形式出现客户端能ping通服务器但telnet服务器的8080端口不通以下哪个原因最不可能选项里会有防火墙拦截、服务未启动、端口被其他进程占用、客户端和服务器不在同一网段。最后一个就是明显错误项因为能ping通说明三层网络是通的三层通了就排除了“不在同一网段”这种基础问题。这种题目表面考的是网络排障实际上在考察你的分层思维。正确的排查顺序应该是先看二层三层通不通ping再看端口通不通telnet或nc确认端口通之后再去看服务本身。笔试里虽然只让你选一个答案但你的思路必须覆盖整个链路才能在干扰选项中准确找到那个“最不可能”的答案。TCP和UDP的区别也是常规考点但顺丰科技的题喜欢结合具体场景来考。比如“视频通话适合用TCP还是UDP为什么”答案是UDP因为实时性要求高能容忍少量丢包TCP的重传机制反而会造成延迟累积。再比如“DNS查询使用什么协议”这个题有坑——DNS默认使用UDP 53但在区域传输或响应数据过大时使用TCP 53很多人只记得UDP忽略TCP这个补充刚好掉进出题人挖的坑。4. 数据库、中间件与常用组件看似分散实则成体系的考点4.1 MySQL必考的三板斧隔离级别、索引失效、主从同步数据库在运维笔试里占的比重不算特别大但基本逢考必有MySQL是绝对的主角。事务隔离级别是高频中的高频四个级别分别是读未提交、读已提交、可重复读、串行化MySQL默认是可重复读。这个知识点爱考的原因是它直接关系到业务正确性和性能取舍级别越高一致性越好但并发性能越差。笔试题不会让你背定义而是给你一个并发场景描述让你判断发生了哪种问题比如“事务A读到的数据和事务B提交后的数据不一致”对应的是不可重复读“事务A查询不到事务B已经插入的数据”对应的是幻读。索引失效的常见场景也经常出选择题比如对索引列使用函数、隐式类型转换、前导模糊查询LIKE %abc、在索引列上做计算这些都会导致索引失效。有一道题我印象很深where条件里写了where a 1 and b like %xxx%问这条SQL有没有走索引。很多人看到a是索引列就直接选走了索引但忽略了b列上的前导模糊查询正确答案是MySQL可以先通过a条件定位到一批数据再对这批数据过滤b条件所以a列索引是能用的只是b列用不上。这种题考的已经不是背结论而是你对执行计划的理解。主从同步也是常规考点重点是binlog格式。statement格式记录SQL语句row格式记录行变更mixed是混合模式。笔试常考“为什么row格式更安全”这类题因为statement在涉及now()等非确定性函数时会导致主从数据不一致而row格式记录的是实际变更后的行数据不会有这个问题。这个知识点如果在笔试里出现答对了基本等于已经赢了一半因为很多人根本没想过主从同步还有数据不一致的隐患。4.2 Redis的过期策略和缓存三大问题几乎年年考Redis在运维笔试中的覆盖度很高考点非常集中。第一个是过期删除策略定期删除惰性删除的组合。定期删除是每隔一段时间随机抽取一批设置了过期时间的key进行检查惰性删除是在查询key时判断是否过期如果过期就删除并返回空。笔试如果考“redis为什么不用定时删除”答案是定时删除会占用大量CPU资源在高并发场景下得不偿失。第二个是缓存穿透、缓存击穿、缓存雪崩三兄弟。这个考点几乎成了运维笔试的标配。缓存穿透是查询一个不存在的key请求直接打到数据库缓存击穿是一个热点key过期瞬间大量请求同时打到数据库缓存雪崩是大批量key同时过期导致数据库压力骤增。三者的区别和应对方案要分清楚穿透用布隆过滤器或缓存空值击穿用互斥锁或逻辑过期雪崩用随机过期时间或集群部署。笔试常以“以下哪种情况属于缓存穿透”来判断你能不能分清这三个概念。4.3 Nginx、消息队列、Docker基础考点偏概念和配置Nginx在运维笔试里的考点集中在反向代理、负载均衡策略和常用配置项。比如负载均衡策略有轮询、加权轮询、ip_hash、fair、least_conn笔试一般考ip_hash的作用——按客户端IP哈希分配保证同一个IP的请求固定落到同一台后端服务器适用于需要保持会话的场景。还需要知道proxy_pass后面有没有uri的区别不带uri时请求的URI会原样转发给后端带uri时请求URI会被替换成新的路径。这两个差别非常隐蔽也是实际配置中经常踩的坑。消息队列在2019年的笔试里开始出现了但考得比较简单主要是确认“消息队列的核心作用是解耦、异步、削峰”以及Kafka、RocketMQ、RabbitMQ各自的大致定位。如果考到消费堆积的原因通常就是消费者处理速度跟不上生产速度或者消费者挂了或者分区分配不均。这几个原因对应到实际排查思路都是一致的先看消费速率和堆积量再看消费者日志有没有报错最后看分区分配是否倾斜。Docker相关的题目当时还处于基础阶段主要考镜像和容器的区别、Dockerfile中CMD和ENTRYPOINT的区别。CMD会被docker run后面的命令覆盖ENTRYPOINT不会除非显式使用--entrypoint参数。还有一个经典考点容器里运行的程序是前台进程还是后台进程。容器的主进程必须在前台运行否则容器会立刻退出。这也是新手用Docker最容易犯的错——在Dockerfile里写service nginx start而不是nginx -g daemon off;结果容器一启动就退出。5. 排错题与场景题客观题里藏着的排查思路5.1 磁盘满了但找不到大文件问题出在已删除未释放的文件句柄运维笔试的客观题里有一部分是不折不扣的场景题它们的特征是给你一个生产环境的异常现象让你选择最可能的原因或者最优的处理步骤。这部分的题目往往最能拉开分差因为纯背知识点的人到这里容易发懵。“磁盘空间满了但du找不到大文件”这个场景我在前面的命令章节已经提到了它在场景题里的完整考法是用df -h看到/分区使用率100%但用du -sh /*逐个目录检查加起来远不到100%问什么原因。正确答案是有进程打开了某个文件这个文件被删除了但进程没退出文件句柄还占着磁盘空间。处理办法是先用lsof | grep deleted找到对应的进程然后重启这个进程或重定向它的日志如果情况紧急且明确知道是哪个服务可以直接重启服务释放句柄。笔试考这题时选项里往往会有“文件被隐藏了”或者“磁盘有坏道”这类明显错误的干扰项。5.2 CPU负载高和CPU使用率高是两个不同的问题还有一个高频场景题系统负载load average很高但用top看CPU使用率很低最可能的原因是什么这个题考的是load average的计算机制。Load average统计的是处于R状态运行中和D状态不可中断睡眠的进程数之和也就是说大量进程在等待I/O也会拉高负载。所以CPU使用率低但负载高常见原因就是磁盘I/O瓶颈比如大量进程在做磁盘读写都阻塞在内核的I/O等待上。正确处理是看iostat或iotop确认I/O状况而不是去排查CPU。类似的题目还有“系统负载突然飙升到几十通过top看到CPU使用率100%怎么定位是哪个进程的问题”。这个题本质上是要求你理解 top 命令的交互操作按P按CPU排序按M按内存排序按shiftE切换单位。笔试不会靠你交互键的全集通常只考一个最常见的操作但如果你没用过这些快捷键很容易选错。5.3 服务起不来先看日志还是先看端口顺序错了会浪费时间这类排查顺序题在客观题中出现的频率不低而且很考验一条——你在生产环境里到底是怎么干活的。比如“Nginx启动失败第一步应该怎么做”选项有检查端口是否被占用、看error.log、执行nginx -t检查配置、重启服务器。正确答案是执行nginx -t因为Nginx在启动时首先会加载并校验配置文件配置语法错误是最常见的启动失败原因而且nginx -t的输出会直接告诉你错误出现在第几行。这个顺序如果错了直接去看日志也能找到线索但nginx -t是所有排查动作中成本最低、定位最快的一步。再比如“MySQL连接不上应该按什么顺序排查”优先级应该是先确认mysqld进程是否存在再确认端口3306是否在监听再确认是否被防火墙拦截最后看错误日志。这个顺序的本质是沿OSI模型从底层往上排进程→端口→防火墙→应用层。因为进程都不在了后面的一切都是空谈进程在但端口没监听就要考虑配置或启动异常端口能连上但认证失败那就是账号权限或客户端加密协议的问题。5.4 突发流量下服务异常先扩容还是先降级这类题目在物流科技公司的笔试中出现和他们的业务属性高度相关。核心场景是大促或突发流量导致订单服务响应变慢数据库CPU打满此时应该怎么做选项会有直接扩容应用服务、限流降级、重启数据库、增加索引。正确答案一定不是直接扩容应用服务因为瓶颈在数据库加再多应用节点也只会让数据库压力更大。正确思路是先对非核心接口进行限流或降级保住核心下单链路同时看看能不能通过只读从库承担部分查询压力、或者紧急对慢SQL做索引优化如果数据库实在扛不住还要考虑限流甚至拒绝部分流量来避免全站雪崩。这个思路在客观题里的还原方式通常是“以下哪个方案最合理”的单选你只要理解了瓶颈链路在哪一层就不容易被干扰项带着走。很多人做错这类题是因为太习惯背“高可用三板斧”的结论——集群、主从、备份——却没有建立“先恢复、再定位、后优化”的应急思维。6. 笔试现场的时间分配与答题顺序这道题能不能先跳过笔试客观题的量通常不小顺丰科技这套题我记得体感上单选、多选、判断加起来接近一百道要求在限定时间内完成。这种情况下答题策略和知识储备同样重要甚至策略的权重更高因为做对60道难度中等的题远比死磕10道难题然后剩下20道全蒙要划算。我的建议是第一遍快速过所有题目凡是有把握的题直接选拿不准的标记一下完全不认识的果断先蒙一个不要在单题上停留超过一分钟。运维笔试的客观题有个特点难点往往集中在一两道多选上其他题目只要基础扎实看到就会不会的再看也还是不会。把时间浪费在不会的题上会挤压那些本来能做对的简单题的时间。多选题的计分规则需要特别留意。有的笔试是选错不得分有的多选漏选也能得一半分。如果是后者那份安全策略就是“宁少勿错”——只选你有绝对把握的选项模棱两可的选项坚决不选。很多人在多选题上翻车不是知识不够而是手太痒看到选项觉得“好像也对”选上去之后发现那个选项其实把范围扩大了一步比如题目问“Linux中哪些命令可以查看文件内容”选项里有cat、less、more、tail、grep前四个都是查看内容的grep是搜索内容的虽然你平时经常把grep和cat连用但严格来说它不符合题干里的“查看文件内容”。这种题就是靠你够不够克制才能答对的。判断题相对简单但要注意绝对化表述比如“只要重启服务就能解决内存泄漏问题”这种大概率是错的。内存泄漏如果出现在业务进程里重启确实能暂时缓解但如果不修复代码层面的问题泄漏还会复现所以这类表述在判断里往往是不对的。再比如“TCP比UDP更可靠所以所有场景都应该使用TCP”这种也是典型的拉分项——它混合了“TCP更可靠”这个部分正确的概念和“所有场景都应该用”这个错误结论整体判断就是错。还有一个容易被忽略的环节是考试环境和输入习惯。如果是线上笔试提前确认打字输入法是否正常代码题的缩进和大小写是否会被严格判定。如果是纸质试卷注意答题卡填涂的题号顺序不要因为漏填导致后续题号全部错位。这些细节在紧张状态下都很容易失误但提前留意就能规避。7. 从笔试到面试的追问方向客观题答的是结论面试考的是过程7.1 笔试里的一道判断题面试里会变成半小时的深挖笔试结束后千万别以为战斗就结束了。顺丰科技的面试官手里很可能有你笔试的答卷面试时把你答错的题翻出来让你重新解释一遍这种操作在技术面试里非常常见。更狠的是即使你答对了面试官也会挑一题问你“为什么选这个”目的就是确认你是真懂还是蒙对的。比如笔试里考了ps aux输出中STAT列的含义你当时选对了D状态代表不可中断睡眠。面试官可能会接着问你遇到过D状态的进程吗当时是怎么处理的这时候如果你只答得出概念说不出实际场景就露怯了。合理的回答是遇到过通常是NFS挂载目录卡死或者磁盘I/O出现问题时进程会卡在D状态先观察I/O情况如果确认是NFS服务端失联只能等待超时恢复或者重启相关服务D状态进程很难用kill处理因为它在内核态不响应信号。所以准备笔试的时候每掌握一个知识点都要问自己三个问题这个知识点在什么场景下会出现如果线上遇到了我怎么定位有什么常规的解决手段这三个答案合在一起才是面试官真正想听的东西。而这套思维本身才是笔试客观题背后的深层价值——它逼着你去思考知识点的实际落点。7.2 笔试中的盲区就是面试前的补课清单我建议把笔试中做错和蒙对的题目整理成一份错题笔记按方向归类然后针对每一个方向做一个至少能讲5分钟的小专题。比如你在“Redis缓存穿透和缓存击穿的区别”上选了错误答案那就去梳理穿透和击穿的字面区别、各自对数据库的压力模型、代表性的解决方案、最好再写个简单的伪代码来演示布隆过滤器的使用场景。整理完之后你会发现这部分知识在面试里可以约等于一个加分项因为大多数候选人只能答出缓存穿透要布隆过滤器、缓存雪崩要加随机过期时间但你连布隆过滤器的误判率和内存占用都说出来那就是另一个段位了。我没有参加过顺丰科技当年的秋招但帮好几个朋友做过笔试复盘这个“笔试错题→面试专题”的转化方法帮他们在不同大厂的运维岗面试中拿到了不错的反馈。它实际上把笔试从“筛选工具”变成了“复习大纲”你损失的只是一次笔试分数得到的却是一整套更完整的知识框架。7.3 客观题里反复出现的就是这份工作真正需要的如果你把顺丰科技2019年秋招这套客观题从头到尾串一遍会发现一个很有意思的结论那些反复出现的知识点——D状态进程、TIME_WAIT、CLOSE_WAIT、缓存穿透、索引失效、DNS缓存、crontab环境变量——每一件都是生产环境里真实发生过的故障每一个都对应过一次真实的服务异常。笔试题的出题人其实是在用这种方式告诉你这份工作就是在这些细枝末节里找到那条最靠谱的链路。运维工程师这个岗位平时看起来像在敲命令、看监控、处理告警但实际上是一个持续和不确定性打交道的工作。笔试客观题里面那些“看似正确但其实是错误”的选项放到生产环境里就是那些“看似正常但其实隐患很大”的系统状态。一个人能不能从表象看到本质能不能在多个可能的原因里快速排除干扰项这套题检验的从来不只是知识点存量而是你在复杂链路里保持冷静判断的能力。我自己的体会是运维笔试的客观题是最不值得去“刷”的因为它太容易暴露一个人的真实功底。反而是那些平时在实验室里一个个敲进去验证过的命令那些在生产环境里排过的故障那些深夜还在盯着的恢复过程才是真正能让你在笔试现场有底气一秒选对的原因。基础不牢地动山摇这句话放在运维岗的笔试上说的一点都不夸张。
返回列表