美团校招高频题:TCP 和 UDP 到底啥区别?面试官就爱问!
哈喽大家好,我是你们熟悉的 31 岁程序员小米,一个把面试题当“下饭综艺”研究的技术分享控!
最近,我在帮一个小师弟准备美团校招,他是一边泡着自习室,一边抓着我问各种八百年前的计算机网络知识。
他说:“小米哥,能不能不要再讲那么抽象的理论啦,我面试官一个问题‘TCP 和 UDP 有什么区别?’,我愣是背了三页书,还是被怼得一脸懵……”
我一听,哈哈,老毛病了——不是你不会,是你没故事!那今天,小米我就带大家,用讲故事的方式,把这个经典面试题:“TCP 和 UDP 有什么区别?各自应用场景又是啥?”讲得清清楚楚!
TCP 和 UDP 的“前世今生”
想象一下,如果网络世界是个江湖,那 TCP 和 UDP 就是两位走红多年的传说级人物,分别号称:
- TCP:传输可靠、稳如老狗、面面俱到的绅士派
- UDP:传输快捷、轻装上阵、不拘小节的快递侠
这两位都是“传输层”的高手,负责在“应用层”与“网络层”之间搬运数据。
你可以理解成:操作系统交给它们数据包,它们再打包打车,送往目标设备。这时候,它们的性格差异就来了!
TCP 是“老好人”,UDP 是“急性子”
TCP 是个“事儿妈”型选手,他送数据,流程大概是这样的:
"你好,请问你能收数据吗?"(三次握手)
"我开始送了啊,来来来,每一包你都给我签字确认一下哦~"
"咦你没签字?我再发一次哈!"
"好了,送完啦,我走咯,再见拜拜~"(四次挥手)
所以,TCP 的关键词是:
- 可靠传输
- 有连接(三次握手)
- 面向字节流
- 拥有流量控制和拥塞控制
而 UDP 呢?一看这流程就疯了:
“握你个头啊!送啦!!”
“收不收不管我事哈!”
“签字?我又不是快递小哥,我是甩手掌柜!”
所以 UDP 的关键词是:
- 无连接
- 不可靠(可能丢包、乱序)
- 面向报文(发送多少就是多少)
- 快!效率高!
来点真实的生活场景举例吧!
场景一:玩游戏的你,最怕“卡顿”
想象你在玩王者荣耀,刚一个闪现位移——结果网络卡了,你回到老家泉水里躺了。
UDP 正是游戏网络的首选,因为:
- 游戏对速度要求极高,不能每次都“确认收到”
- 丢一两个包也没事,人已经跑过去了,画面稍微抖一下可以忍
所以:实时性强、不太在乎丢包的场景,用 UDP 比较多
代表应用:语音通话(VoIP)、视频直播、在线游戏、DNS 查询
场景二:下文件、发微信,谁敢丢一个字节?
假设你在下载一个文件,结果下载完后发现压缩包解压不了,因为……文件丢了几 KB?
这时候就得靠“老好人”TCP:
- 它会确保数据一字不差地送到你面前
- 如果中间路由器打了个喷嚏,TCP 会立刻重新发包
- 下载顺序必须正确,不能把“文件尾”当成“文件头”
所以:需要高可靠性、不能容忍丢包的业务,用 TCP 是绝对的主流选择
代表应用:HTTP 协议、FTP 文件传输、邮件(SMTP)、微信、QQ 聊天
细说 TCP 和 UDP 的 7 大核心区别

再讲两个“你可能想不到”的场景
视频会议为什么不是用 TCP?
很多人一开始觉得视频会议这么“高级”,应该用 TCP 吧?
恰恰相反!像 Zoom、腾讯会议、Google Meet,大多数底层其实是用 UDP + 自定义协议(比如 QUIC)来优化体验的。
原因是:视频会议不能容忍延迟,即便中间漏了几个帧,也比卡在那儿几秒好得多。
所以 UDP 胜出!
再说说 QUIC:UDP 的“高端进化版”
Google 曾说:HTTP/2 + TCP 就是“开法拉利堵在高速上”,所以它搞出了 QUIC 协议。
QUIC 基于 UDP,但:
- 增加了可靠机制(类似 TCP)
- 支持多路复用(不怕 HOL 阻塞)
- 集成 TLS 加密,速度超快
现在的 Chrome 和 YouTube,早就开始用 QUIC 了,别小看 UDP 啊!
美团面试官是怎么问的?
我小师弟在美团面试现场就遇到这个问题。
面试官并没有让他死记区别,而是说:
“我们美团有个外卖地图服务,用户移动时位置要实时上传,你觉得 TCP 还是 UDP 更合适?”
这时候你答得好不好,就看你是不是理解场景了!
小师弟答:“地图定位实时性强,更新频率高,偶尔丢一个坐标也能补回来,所以适合用 UDP!而确认收货等需要强一致性的,还是得用 TCP。”
面试官点头,说:“你是懂业务的!”
小米总结:记住这个“口诀”不再懵
想要快?UDP 带!
想要稳?TCP 稳!
实时通话靠 UDP,发个微信用 TCP!
不要再去死记硬背“TCP 是面向连接的、UDP 是不可靠的……”啦!
你只要理解这两位“江湖大佬”的性格、他们适合的战场,答题时自然就能信手拈来。
END
亲爱的读者朋友们,面试最怕的是“知其然,不知其所以然”。
今天这道经典题,不只是背个定义,而是理解协议背后的设计哲学和使用场景。
希望你也能像小师弟一样,面试时笑着说出:“这个我懂。”
我是小米,一个喜欢分享技术的31岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!