网易运维笔试题解析:从Linux到综合场景的运维核心知识地图 📅 发布时间:2026/8/29 17:11:26 👁 浏览次数: 1. 先聊聊这份卷子背后的出题逻辑1.1 网易运维团队到底在招什么样的人拿到“网易2018校招运维工程师笔试卷”这个标题很多人的第一反应是去搜原题、背答案但我想先劝你一句如果你只把这份卷子当成题库来刷那基本就白做了。我当年参加校招时也有同样的误区后来在一线做了几年运维回过头再翻这些题才真正看懂出题人的意图。网易招运维工程师看起来是在招“会修服务器的人”但实际上他们筛的是“能在大规模分布式环境下扛事的人”。2018年这个时间点很关键当时容器化已经全面铺开Kubernetes 开始从新奇玩具变成生产标配网易内部的考拉、云音乐、严选这些业务线都在做微服务化和容器化改造。所以他们笔试里考的东西绝不会是简单的“ls 和 cd 怎么用”而是会通过一个个场景题考察你有没有分布式思维、有没有排查复杂问题的能力、有没有写自动化脚本的基本功。换句话说这份卷子与其说是在考知识点不如说是在模拟“你入职后第一次值班会遇到什么”。每一道题背后几乎都能对应到一个真实的线上故障场景。明白了这一点你再看那些题目感觉完全不一样。1.2 为什么2018年的题现在还有参考价值有人可能会问2018年的题都过去这么久了技术栈都变了好几轮还有必要看吗我的答案是太有必要了。运维这个岗位有个特点——工具会变但底层的原理和排查思路基本不变。你想想2018年大家用 Zabbix 做监控现在很多团队换成了 Prometheus Grafana但“监控指标怎么选、告警阈值怎么定、告警风暴怎么避免”这些核心问题变了吗没有。2018年排查网络问题用 netstat、traceroute现在你可能用 ss、mtr但 TCP 三次握手、四次挥手、TIME_WAIT 这些原理变了吗也没有。容器化普及之后网络排查多了一层 CNI 的概念但底层的 socket、连接状态、路由转发逻辑依然是那套东西。所以这份卷子真正的价值不在于题目本身而在于它帮你划定了运维工程师的核心知识边界Linux 基础与命令、网络原理、Shell/Python 脚本能力、数据库基础、监控体系以及综合场景的排查思路。这些内容恰恰是直到今天面试运维工程师时依然会被反复问到的硬通货。把这份卷子吃透再去面任何一家互联网公司的运维岗你都会有底气很多。1.3 这份卷子适合谁来读我写这篇文章主要想聊给三类人听。第一类是正在准备校招或跳槽的运维新人。你可以把这篇当成一份“带答案详解的真题解析”但更希望你把它当成“运维核心知识地图”顺着题目的脉络去补自己的知识盲区。第二类是工作了一两年、感觉每天在打杂的初级运维。很多时候你觉得迷茫是因为只看到了手头的琐碎操作没看到背后成体系的原理。这份卷子能帮你重新梳理一遍知识结构让你从“会敲命令”走向“懂原理”。第三类是想转行进运维、但对这个岗位完全陌生的朋友。这篇文章里我会尽量把每个考点都讲清楚为什么重要、在真实场景里怎么用让你对“运维到底是做什么的”有一个具体的认知。2. 逐题型拆解Linux基础与命令那些事2.1 硬核Linux命令题不只是背参数网易2018年的笔试卷里Linux 基础部分占了挺大比重题型也比较典型给一段命令让你说输出结果或者给一个场景让你写出合适的命令组合。很多人觉得这部分是送分题但实际考试时翻车最多的也是这部分原因很简单你以为你记住了参数但出题人稍微绕一个弯你就掉坑里了。举个例子当年有一道题大概是这样的有一个日志文件 access.log每行是一个 URL请统计访问次数最多的前 10 个 URL。标准答案大家都会写awk {print $1} access.log | sort | uniq -c | sort -rn | head -10但出题人不会就这么放过你他会继续问如果 URL 字段不在第一列而是在第 7 列呢如果日志里有些行是脏数据、URL 字段为空怎么办如果文件有几十个 G内存不够用怎么办这一连串追问下来考察的就不只是命令记忆了而是你有没有真正理解每个命令的行为能不能根据实际情况调整方案。还有一个常见的坑点是 uniq 命令。很多人不知道 uniq 只能去除相邻的重复行所以必须先 sort 再 uniq否则统计结果就是错的。这种细节在笔试里考过很多次在真实场景里也坑过很多人。我后来带新人时经常会用这个例子告诉他们命令之间是有“组合逻辑”的不是你背会了单个命令就能解决所有问题。2.2 一道让很多人翻车的文本处理题再说一道我印象很深的题它考察的是文本处理能力的综合运用。题目大概意思是有一个配置文件需要把所有以 # 开头的注释行删掉同时把文件中的空行也删掉最后把剩下的内容按行号输出。很多人的第一反应是直接写个 for 循环遍历每一行来判断但实际笔试中更优雅、更高效的解法是用 grep 或者 sed 一步搞定grep -v ^# config.conf | grep -v ^$或者用 sedsed -e s/#.*$// -e /^$/d config.conf这里有个小细节值得展开讲讲。用 grep 过滤注释行时^#匹配的是“以井号开头”的行但如果配置里有一行内容是# 这是带缩进的注释那^#就匹配不到了需要写成^[[:space:]]*#才能匹配前面有任意空格的注释行。这种边界情况在笔试里很容易被忽略但在真实生产环境里非常常见因为配置文件里的注释经常会有缩进。再比如空行的处理^$匹配的是真正的空行但实际文件里很多“空行”其实是包含空格或 Tab 的这时候^$就失效了得用^[[:space:]]*$才能匹配。这些细节看着不起眼但背下来和理解透彻效果完全不同。理解这些你才敢在生产环境里用同样的命令处理真实配置。2.3 命令题复习建议从“会背”走向“会查”关于 Linux 命令这块我给准备笔试的同学一个建议别再去背那些“Linux 常用命令大全”了那一百多个命令里你真正高频用到的其实就二三十个。与其囫囵吞枣全部背一遍不如把高频命令的常用参数和组合玩法吃透。比如ps命令你至少要知道ps aux和ps -ef的区别知道怎么看 CPU 占用最高的进程、怎么查某个进程的启动时间。比如top命令你要知道进去之后按什么键能按内存排序、按什么键能杀掉进程还要知道top里的 load average 到底代表什么。再比如netstat和ss你要能看懂 LISTEN、ESTABLISHED、TIME_WAIT 这些状态分别代表什么以及在什么场景下需要关注它们。还有一点很重要笔试不准查命令手册但你准备考试的时候一定要养成查 man 文档的习惯。man 文档虽然看起来枯燥但它是唯一权威的命令参考网上那些二手资料经常有错误或者过时的内容。我自己的习惯是每学一个新命令先看 man 文档里的 SYNOPSIS 和 DESCRIPTION 部分搞清楚这个命令到底是干嘛的、核心参数有哪些然后再动手实操验证。这个习惯帮我避过很多坑。3. 网络与系统原理校招最拉分的环节3.1 TCP三次握手与四次挥手从送分题到送命题网易这份卷子里网络部分的题目难度明显比 Linux 命令高一个档次。TCP 三次握手和四次挥手属于必考基础几乎每一年都会出现但出题人总能变着花样考出深度来。最基础的版本是让你描述三次握手的过程这种题相信大家都背过。但网易的卷子里这道题往往是和“为什么”绑在一起的为什么连接建立需要三次握手而不是两次为什么连接释放需要四次挥手而不是三次这种题就非常能拉开差距。能背出“三次握手是 SYN、SYN-ACK、ACK”的人很多但能解释清楚“两次握手可能导致已失效的连接请求突然传送到服务器从而产生资源浪费”的人就少了一半。能说出“四次挥手是因为 TCP 连接是全双工的每个方向的关闭都需要单独确认”的人又少了一半。能进一步延伸到“为什么客户端最后要等待 2MSL”的人已经可以算是这批考生里最顶尖的那一档了。不光是理论还要会看真实场景。卷子里有一道题让我印象很深线上服务出现大量 TIME_WAIT 状态的连接应该怎么处理这道题的考点很典型。TIME_WAIT 是主动关闭连接的一方在收到对方的 FIN 后进入的状态它要等待 2MSL最大报文段生存时间才能完全关闭。如果服务作为客户端频繁发起短连接就可能积累大量 TIME_WAIT导致端口资源被占满新连接无法建立。常规的处理手段是调整内核参数比如net.ipv4.tcp_tw_reuse和net.ipv4.tcp_tw_recycle。但这里有个大坑tcp_tw_recycle在 NAT 环境下会导致丢包很多踩过这个坑的老运维都吃过亏。更稳妥的方案是从架构层面优化比如改用连接池、减少短连接频率、升级到 HTTP/2 或者 gRPC 这种支持多路复用的协议。笔试里能答到这一层说明你不仅懂原理还知道生产环境里的取舍面试官对你的评价会完全不一样。3.2 DNS解析、HTTP状态码这些高频送分题怎么拿满TCP 之外网易的卷子里网络部分还会考一些“送分题”但你以为送分其实里面也藏着坑。DNS 解析流程是每年必考典型问法是浏览器输入 www.example.com 之后发生了什么很多人能背出“先查浏览器缓存再查系统 hosts 文件再查本地 DNS 服务器最后递归查询根域名服务器……”这一套流程但要注意出题人可能会在细节上设卡。比如说DNS 解析用的是 TCP 还是 UDP大部分人知道 DNS 默认用 UDP 53 端口但很少有人知道当响应报文超过 512 字节时DNS 会切换到 TCP 进行“区域传输”或者响应较大的查询结果。再比如说你知道dig命令怎么看解析结果吗知道TTL字段在 DNS 缓存和 CDN 调度里起到什么作用吗这些延伸问题才是真正区分“背过”和“理解”的关键。HTTP 状态码也是高频考点。网易特别爱考的是 301、302、304、503 这几个状态码的区别和应用场景。301 是永久重定向302 是临时重定向304 是协商缓存命中503 是服务不可用。光知道定义还不够要能结合场景说明什么时候适合用 301、什么时候用 302用错了会有什么后果我举个真实例子某个网站要换域名如果错误地把旧域名的 301 改成了 302搜索引擎会认为旧域名还“活着”不会把权重全部转移到新域名上导致新域名的搜索排名迟迟上不去。这种案例在面试里讲出来效果远比干巴巴背定义好得多。3.3 系统原理与进程调度隐藏的拉分题笔试的卷子里还有一部分容易被忽略的内容就是操作系统原理。很多同学复习时觉得“操作系统”是计算机基础课和运维关系不大但网易恰恰会考一些和运维强相关的系统原理题。进程和线程的区别是基础题但网易一般不会直接这么问他会问线上有一个进程 CPU 占用率飙到 100%怎么排查是哪个线程导致的这就变成了运维场景题。标准做法是先用top -Hp pid查看进程内哪个线程占用 CPU 高记录下线程号然后转换成十六进制再用jstack或其他语言对应的线程 dump 工具去查看这个线程在干什么。整套流程下来考察的不只是进程线程模型还有排查思路和工具链的熟悉度。再比如说僵尸进程。很多人知道僵尸进程是子进程退出后父进程没有调用 wait 回收资源导致的但遇到实际问题时就懵了系统里出现了大量僵尸进程怎么定位是哪个父进程的锅怎么处理答案是先用ps -ef | grep defunct或ps -A -o stat,ppid,pid,cmd | grep -e ^[Zz]找到僵尸进程的父进程 PID然后进一步判断这个父进程本身是否正常。如果父进程是正常运行的业务进程可能需要借助 Supervisor 或 systemd 等工具让父进程支持子进程回收机制如果父进程本身有 bug那就得推动开发修复。这种从理论到实践的完整链路才是网易真正想看到的。4. Shell与Python编程题笔试现场的真实状态4.1 一道完整的Shell实战题从日志中统计并告警网易的卷子里Shell 脚本和 Python 题目几乎必考因为运维工程师最核心的产出之一就是“自动化”而自动化的基础就是写脚本。给大家还原一道我印象很深的 Shell 实战题它大概是这样的写一个脚本每分钟检查一次 nginx 的 error.log统计最近 5 分钟内出现的 5xx 错误次数如果超过 100 次就输出报警信息并发送邮件给管理员。这道题考察了好几个点文件读取、时间过滤、数值比较、循环调度、告警动作。我当时在笔试现场写出来的版本大概是这样的#!/bin/bash LOG_FILE/var/log/nginx/error.log THRESHOLD100 CHECK_INTERVAL60 CHECK_WINDOW300 while true; do current_time$(date %Y-%m-%dT%H:%M:%S) start_time$(date -d -$CHECK_WINDOW seconds %Y-%m-%dT%H:%M:%S) error_count$(awk -v start$start_time -v end$current_time { ts $1 $2 if (ts start ts end $0 ~ / 5[0-9][0-9] /) count } END { print count0 } $LOG_FILE) if [ $error_count -gt $THRESHOLD ]; then echo [$(date %Y-%m-%d\ %H:%M:%S)] 5xx error count: $error_count /var/log/nginx/error_alert.log echo Warning: 5xx errors exceeded threshold: $error_count | mail -s Nginx 5xx Alert adminexample.com else echo $(date %Y-%m-%d\ %H:%M:%S)] 5xx count: $error_count (OK) fi sleep $CHECK_INTERVAL done当然这个版本还有很多可以优化的地方比如用date -d这种方式在不同系统上兼容性有差异日志时间格式也可能不是标准的 ISO 格式。但笔试阶段能写出这个水平的脚本已经能证明你具备基本的 Shell 编程能力了。笔试完了之后我后来在实际生产中把这个脚本又迭代了好几版加上了错误日志的偏移量记录避免重复扫描整个大文件把邮件告警换成了对接钉钉/企业微信的 webhook把 5 分钟窗口改成了可配置项。这些优化都是在真实业务压力下逼出来的。所以我想说的是笔试考 Shell 只是门槛真正拉开差距的是你有没有意识到脚本要处理“增量日志”、要考虑“性能开销”、要便于“后续维护”这些问题。4.2 Python高频考点与常见坑卷子里的 Python 部分对于运维岗来说难度一般不会超过 LeetCode 中等题更偏向实际应用。常见考点包括字符串处理、列表推导式、文件读写、异常处理以及写一个小脚本来完成某个运维任务。举个例子我当时遇到的 Python 题大概是写一个函数解析一个 Nginx 访问日志文件统计每个 IP 的请求次数并按次数降序返回前 10 个 IP。这道题用 Python 写起来非常直接from collections import Counter def top_ip_from_log(log_path, top_n10): ip_counter Counter() with open(log_path, r) as f: for line in f: if line.strip(): ip line.split()[0] ip_counter[ip] 1 return ip_counter.most_common(top_n)这道题看似简单但我猜出题人想看的不仅仅是“能不能实现”而是你有没有养成健壮代码的习惯。比如line.split()[0]如果遇到空行会报 IndexError所以要先判断line.strip()。比如文件可能很大所以要用迭代式读取而不是一次性readlines()。再比如 Python 的with open能自动管理文件句柄这些细节都能体现编码素养。我见过不少人在笔试里 Python 写得还不错但实际工作中遇到问题就束手无策原因在于缺少“把问题拆成脚本”的思维。比如日常工作中经常要写一些运维小工具批量修改几十台服务器的某个配置、定时清理过期日志、巡检各个集群的磁盘水位……这些场景并不需要多高深的算法但非常考验你“能不能快速用脚本把机械化操作变成自动化任务”。这种能力笔试没法完全考察出来但你可以在准备笔试的过程中刻意练习。4.3 笔试现场的真实状态与时间分配建议说点当年笔试现场的真实感受。网易运维笔试卷的题量不小涵盖了选择题、填空题、简答题、编程题和场景题时间大概两小时。很多人一上来就在前几道选择题上纠结结果后面的大题时间不够特别可惜。我的建议是拿到卷子先快速扫一遍所有题目判断题目的难度分布。选择题和填空题如果 30 秒内没有思路先凭第一印象选一个并标记下来不要恋战等后面大题做完了还有时间再回头检查。简答题要注意写字速度但更重要的是踩得分点比如 TCP 三次握手这种题每一条报文交换的 SYN、ACK 标志要和状态变化一起写出来才能拿满步骤分。编程题一定要先理清思路再动手可以在草稿纸上写一下伪代码因为试卷上的代码区域有限涂改太严重会影响阅卷人的观感。还有一个小技巧如果编程题一时想不出最优解先把一个能跑通的暴力解法写出来再在注释里补充你的优化思路这样至少能拿到基本功底分不会被完全扣光。5. 数据库与监控被低估的大题来源5.1 SQL题怎么答才能拿分数据库在运维笔试里往往不会被当成独立的大题来考而是嵌在综合场景题里。但网易这份卷子里SQL 题的分量其实不轻而且一旦出现就是实打实要写 SQL 语句的。有一个典型的考法是给两张表一张是用户表 userid, name, email一张是订单表 orderid, user_id, amount, create_time要求写出几个查询。比如查每个用户的订单总金额、查下单次数最多的前 5 个用户、查某个月份没有下过单的用户等等。这些题目本身难度不大但想拿满分有几个注意点第一要记得用 LEFT JOIN 而不是 INNER JOIN因为“某个月没有下过单的用户”必须用 LEFT JOIN 才能把没匹配上的用户保留下来第二GROUP BY 和聚合函数要配合使用第三如果要按金额排名别忘了 ORDER BY 和 LIMIT 的组合。除了基础的增删改查网易还会考一些和运维强相关的数据库概念。比如什么是索引什么时候该建索引、什么时候不该建索引为什么能加速查询myisam 和 innodb 有什么区别这些题看起来像是 DBA 的内容但运维工程师经常要处理数据库相关的故障所以懂一些数据库内核知识是基本要求。5.2 监控体系从 Zabbix 到告警治理监控相关内容在 2018 年的卷子里主要以 Zabbix 为背景来出题。比如Zabbix 的监控架构是怎样的agent 和 server 之间怎么通信监控数据是怎么存储的告警阈值配置在哪个模块但在实际工作中我后来发现监控体系的核心难点根本不在“选哪个工具”而在于“怎么设计监控指标”和“怎么避免告警风暴”。你可以在笔试里答出 Zabbix 的架构流程图但真正到了线上环境你会发现最头疼的问题是监控项配置了几百个但关键故障没法提前发现或者告警一天响几百次大家都麻木了真正出大事时反而没人关注。关于监控设计我有一个踩过很多坑之后总结出来的经验监控一定要分层。基础设施层看 CPU、内存、磁盘、网络中间件层看连接数、延迟、错误率业务层看核心接口的可用性和响应时间。每一层都要有明确的负责人和响应时效。告警规则宁可“精”不要“多”核心指标不超 20 个每个指标都要能回答“这个数字异常意味着什么、应该找谁处理”这两个问题。这套思路在笔试里虽然不是直接考点但你如果能把它融入综合场景题的答案里比单纯背 Zabbix 教程要出彩得多。6. 综合场景题真正决定你能不能进面试的部分6.1 网站访问变慢一套标准排查思路综合场景题是网易笔试里最接近真实工作状态的题目也是最难临时抱佛脚的部分。它没有什么标准答案考察的是你把零散知识串起来解决实际问题的能力。最典型的一道题是“用户反馈网站访问速度很慢你是值班运维工程师请描述你的排查思路。”很多人看到这题就懵了因为问题太开放。但如果你有经验就会知道这类问题有相对固定的排查路径。我会从整体到局部来排查。先看监控面板确认是不是所有用户都慢还是只有部分区域、部分运营商慢。如果监控显示整体延迟都升高优先看系统负载uptime看 load average、CPU 使用率、内存使用率和磁盘 IO如果系统资源正常再看网络层用 ping 和 traceroute 确认是不是链路问题如果链路也正常就看应用层检查 nginx 的访问日志和错误日志看慢请求集中在哪些接口再看后端的数据库慢查询日志和中间件的连接数。这套排查路径的背后逻辑是“分层定位”从外部到内部从系统到应用每一步都能利用已有信息排除一部分可能原因逐步缩小问题范围。笔试里能把这条思路写清楚写完整就已经能拿到大部分分数了。6.2 数据库连接池耗尽一个具体的故障案例再分享一个我印象很深的场景题它出现的形式是“线上服务突然大量报错错误信息是数据库连接池已满请分析可能的原因和处理方案。”面对这种问题如果只写“重启数据库”或者“加大连接池”那基本就告别面试了。一个合格运维的思路应该是第一步先确认现象查看服务的错误日志和数据库连接数监控确认到底是应用侧连接池被打满还是数据库侧的最大连接数达到上限。第二步从几个常见原因去排查是不是有慢查询导致连接被长时间占用是不是应用出现连接泄漏比如获取连接后没有归还是不是流量突增导致并发量超过预期是不是连接池配置本身就不合理第三步快速止血和长期治理要分开。止血手段包括临时调大连接池、重启出问题的应用实例、把部分流量切走长期治理则需要定位慢查询并优化 SQL、引入连接池监控和告警、对应用代码做连接泄漏的排查和修复。这个案例特别能反映运维日常工作的本质你不仅要对系统运行的状态有敏锐感知还要能在压力下快速做出“应急”和“根治”的双重决策。这种能力恰恰是校招里最稀缺的因为课堂上教不出来只能靠真实故障喂出来。笔试虽然没法真正检验你在压力下的状态但它可以通过这种场景题筛选出“有正确问题分析框架”的人。6.3 上线发布事故复盘不只是技术2018 年的卷子最后还有一道题很有意思它考的不是技术而是流程意识如果线上发布一个版本后出现严重事故需要回滚请描述回滚的流程和注意事项。很多人可能觉得回滚就是把老版本重新部署一遍但实际操作远比这个复杂。首先要确认的是“回滚到哪个版本”这就对发布系统的版本管理有要求了发布记录必须清晰可追溯其次是回滚时的流量切换策略如果服务在多台机器上要逐步切直至全部切到老版本期间要持续观察监控指标再次回滚之后不是就完事了还要记录事故原因、复盘完整的发布流程看看能不能把问题在发布前就拦截掉。这道题在当年看来可能只是“加分题”但放在今天再看它其实是 SRE网站可靠性工程师理念的雏形。网易通过这道题想传递的信息很清楚运维不只是修修补补更是对整个发布流程、稳定性体系和风险控制负责。你如果在笔试里能答出“回滚前要确认版本、回滚时要注意灰度、回滚后要复盘预防”这类层次分明的内容说明你已经具备了生产环境必备的工程素养。7. 回顾这份考卷给现在备战运维校招的同学几点建议7.1 知识体系怎么搭以面试官视角倒推站在一个已经做了多年运维的人的角度回看网易 2018 校招的这份笔试卷其实给所有想入行运维的同学画了一张相当清晰的“知识地图”。Linux 命令、网络原理、Shell/Python 脚本、数据库、监控、综合场景题这些模块缺一不可。你可以把自己当成面试官问自己一个问题如果我现在要招一个能上线的运维工程师我最担心他哪里不行我最担心的是他只会“背命令”不会“查问题”。所以我的建议是复习每一块知识时都主动问三个问题这个知识点在真实环境里解决什么问题如果它出故障了现象是什么我要用什么工具、什么步骤去定位用这种倒推法去学你会发现自己不再是死记硬背而是在建立一个完整的排查框架。当年我能通过笔试很大程度上就是靠这套方法。7.2 真题只是入口不是终点回到标题本身“网易2018校招运维工程师笔试卷”这份题目我真心建议大家不要只找原题背答案。因为哪怕你把所有原题都背得滚瓜烂熟那也只能帮助你应对这一场考试而真正决定你职业生涯的是你有没有建立起解决问题的底层能力。笔试里考的命令、脚本、原理都是工具层面的东西。比工具更重要的是你的思路面对一个未知故障时你是按什么顺序去排查的你如何快速分辨“问题的范围”和“影响的程度”你如何在压力下依然保持清晰的判断力这些东西需要你在平时的学习和实践中慢慢积累。如果你现在还没有生产环境可练手可以先搭一套虚拟机环境或者用云服务器自己折腾把笔试里考的每个场景都亲手复现一遍。7.3 最后分享一点我的个人体会我记得自己当年参加校招时最焦虑的不是笔试本身而是不知道运维这个方向到底有没有前途。后来工作了几年经历了大大小小无数次故障和深夜值守我才慢慢想明白运维不是修电脑的也不是“背锅”的它是一套保障业务稳定、提升交付效率的完整工程体系。如果你能把笔试卷里那些题目背后的原理真正吃透并且在实际工作中不断验证和扩展那你不管去哪家公司都会是一个靠谱的运维工程师。这份 2018 年的卷子题目可能会过时但它背后那套“以原理为根基、以问题为导向、以自动化为杠杆”的运维思维到今天依然不过时。如果你正在准备校招或者刚入行不久希望这篇文章能帮你把这套思维装进脑子里。