电话:13485538018
关闭
您当前的位置:首页 > 职场资讯 > 面试秘籍

面试设计URL缩短器,因这一问,我从自信满满到遭遇失败

来源:网络整理 时间:2026-04-07 作者:佚名 浏览量:

走进面试房间之际,我怀揣着一种淡定自信,这自信源自一种“胸有成竹”之感。我记住了全部蓝图,知晓 MongoDB 和 Cassandra 的差异之处,能够闭眼画出内容分发网络即 CDN 的架构,Netflix 的技术栈仿若圣经一般深深铭刻在我的脑海之中。

我准备好谈论微服务、分片和高可用性了。

先是,然后,我遇见了面试官,那是位说话轻声且细语,身为Google L7级别的工程师。那过去的十年时间里头,这位面试官始终在维护着那些系统,那些每秒处理流量的量比大多数应用一年处理流量的量还要再多的系统。

他给我的题目看似简单:“设计一个 URL 缩短器。”

看到这个题目,我轻笑了一下。

这仅仅只是系统设计的那种“Hello World”入门必须具备的题目罢了,于是,我把马克笔拿起来,起始快速地描绘出系统的各类细节,这儿放置 API Gateway,那儿放置负载均衡器,一个 NoSQL 数据库用来存储映射,再加上一个 Redis 缓存确保响应快速,我居然在面试之际还提及了 O(1) 查找以及 Base62 编码。

到这里,我觉得自己的表现非常不错,感觉自己像个摇滚明星。

这时,他身体往前倾斜,朝着我抛出了一个问题来:“这对于有千数用户的一家初创公司来讲,的确是不错的。然而要是写入量达到每秒一千万,你的架构会产生什么样的变化?特别是,你所挑选的数据库在那种规模情形下怎样去处理预写式日志竞争?”。

因其这个问题,我的马克笔于半空悬着,冷汗沿背脊滑落。我知晓模式,然而不懂这些系统背后的物理逻辑。我觉察到自身仅是个“纸上建筑师”,即一个会画图,却从未真正走过实际地形的人。

模式匹配的幻象

大多数身处我们之中的人,都会陷入模式陷阱,我们依靠观察“大公司”处理事情的情形,来了解怎样进行系统设计,只要见到LinkedIn舍弃某些旧有的系统,或者有关于他们Kafka替代办法以及崭新的流处理系统的文字读在眼里,便快速想到,“嗯,既然LinkedIn是这么做的,那我也理应如此去做。”。

不过,L7 面试官不在意你可不可以复制 LinkedIn,他所关注担忧是你对不能不这么做的 LinkedIn 到底明不明白,究竟理不理解。

大厨与学徒的类比

将系统设计喻为烹饪,学徒厨师依照食谱行事(模式),食谱提及“加盐”,他们便加盐,然而大厨深谙化学原理,若今日的番茄更为酸涩,他会对糖量予以调整,他并非盲目地照抄食谱,而是依据食材作出调整。

在系统设计中,你的“食材”是约束条件:

假如你不能够跟我说清楚为何要选择某一个工具,比如说为何有可能会舍弃Terraform,进而改用更具可编程性或者是具备状态管理功能的方案,那么你并非是在进行设计,而仅仅是照原样叙述罢了。

横向扩展并非万能解

于那次面试之际,其中最令我顿然领悟的时刻当中,有一个时刻是关乎于讨论扩展性进程里。彼时我始终不停地讲着:“我们仅仅只要增添节点便可以了。”而横向扩展乃是从初级工程师迈向中级工程师阶段常常会运用的一种具有万用性质的办法。

面试的人打断了我,说道:“你每增添一个节点,便就额外增加一回网络的跳转。而每一次出现网络跳转该情况都存在着故障的概率。现如今的情况是,你那 1000 个节点的协调开销,究竟在什么时候,会比单单一台经过高度优化的垂直机器更慢呢?”。

案例研究:集群挤兑问题(Thundering Herd)

来想象一下,有一家在世界上都颇有名气的面包店,它每天到了9点就会免费发放杯子蛋糕。要是这里仅设有一扇门的话,所有人都会朝着门口拥过去,这就形成了垂直瓶颈的状况。要是增加十扇门,也就是进行横向扩展,人群便会分散开来。然而要是十扇门全部都通向同一盘蛋糕呢,此刻,会有十倍数量的人同时朝着单点冲过去,进而造成拥挤的局面。

在 URL 缩短器里,要是某条链接呈现病毒式传播的情况,就像超级碗广告那样,那么你每个“横向扩展”的服务器,都会在同一时刻去击打数据库的同一行,或者缓存的同一 key,这便是 Hot Key 问题,增加服务器反而会变得更糟啦,缘故在于增添了针对同一瓶颈的并发请求。

解答办法并非单纯只是“扩展”了,你没准得去请求合并,也就是多个一样的请求等着一次去读取数据库,或者要进行自适应缓存了。

这种思考方式区分了高级工程师和普通工程师。

失败的架构:从混乱中推理

谷歌的 L7 级工程师,没有询问我“这个是通过怎样的方式来运行的”,而是问“它是怎样出现故障状况的?”。

他迫使我思索极端情形,说道:“你在 US-East 的那个主要数据库突发着火状况,US-West 的故障切换已然启动,不过网络链路仅仅开放 10%的带宽,那用户会亲眼目睹什么样的情况呢?”。

我察觉到、领悟到自己并无考虑状态不一致的事项情节内容表现情况。在头脑范畴里面,“failover”是一个具备魔力的按钮,然而实际上要是处理情形不妥当到位适宜,这就将是一场致使数据丢失的灾难状况情景。而这便是单体与微服务两者之间争论真正落实落地的所在之处地方位置。在单体架构体系当中,这是一回重大的失败结果成效,微服务那对应的则是成千上万数量众多的小失败情况情形,并且其调试的困难程度难度系数更是更大更甚。

Netflix Chaos Monkey 案例

架构设计模式_面试失败的案例_系统设计面试

Netflix因这般做法被众人所知,他们察觉到,于分布式系统里,故障并非是可有可无的一种可能性,反而是必定会出现的一种必然性,他们构思出了“Chaos Monkey”(混沌猴子),在生产环境当中随机地将服务器予以关闭。

为什么?

为了迫使他们的工程师设计出具有自我修复能力的系统。

倘若我去设计一个每秒钟能够实现 1000 万次写入操作的那种 URL 缩短器,那么我必定得进行这样的假设:

缓存会宕机

磁盘会满

短码生成器会产生重复

如果你的设计没有应对“黑天鹅”事件的方案,那它只是幻想。

“无缓存”思维的力量

最令我感到震撼的那个时刻,乃是面试官对我关于Redis的依赖发起挑战,他说道:“不运用分布式缓存,去重新进行设计。”。

我愣住:“但…延迟会很糟!”

他进行了反问,说道:“真的会出现那种情况吗?要是存在这样一种状况,90%的短链仅仅只被点击一次,这里所说的是数据呈现出的‘长尾’现象,在这种情况下,你的缓存命中率仅有10%。如此这般,那么每个请求都需要先去查询缓存,之后才会落到数据库,这样一来反而增加了延迟。你这样做,实际上是为90%的流量额外增加了5ms的开销,然而最终却毫无意义。”。

此情形将我的认知进行了彻头彻尾的颠覆,以往所学到的“Cache等于快”,而实际的有效延迟公式为:

命中率乘以缓存延迟,加上,一减去命中率的差,乘以数据库延迟,结果等于有效延迟。

当出现命中率处于较低水平的情况时,对分布式缓存进行管理所产生的开销,以及陈旧数据所带来的风险,已然超出了所获得的收益。面试官期望能够看到我是不是具备说出这样一番话的勇气:“此时此地现阶段并不需要缓存。”。

工程是权衡的艺术

过了两个小时,我的那块白板之上,布满了被划掉的框框,还有重新书写的逻辑内容。然而呢,这可是头一回,我察觉到设计实实在在是存在着的。它并非是教材当中的那种图,而是历经战火考验与洗礼的一份计划呀。

我知晓了,系统设计并非去寻觅那所谓的“正确答案”,不存在正确无误的答案,有的只是权衡。

L7 面试该如何准备

要超越“死记硬背模式”的局限,你需要改变学习方法:

不是仅仅局限于画框之事要对成本作出解释,每一回增添负载均衡或者消息队列之际,都要向自己发问,成本究竟是多少,延迟又是多少,维护成本到底是多少。

起始于“裸机”状态,首先开展仅有一台服务器以及一个数据库的系统设计工作,接着依据数字证明的情况,进而增添复杂性。

有能力掌握数学,并非得成为数学家,然而得具备估算每秒查询率、五年存储所需、带宽所需的能力。

开展对真实存在的故障案例的研究,去阅读诸如AWS、Cloudflare、Slack等公司所撰写的事故分析报告,以此来瞧瞧他们那些所谓“完美”的设计在实际情形当中是怎样遭遇失败的局面,而真正的学习途径恰恰就在这个地方。

别再像收集宝可梦卡片那般收集图案了,要着手去领会每条设计背后的“为何如此”。在现实世界里,在高级面试当中,白板可不关注你的图有多精美,它在意的是你的逻辑。

有关活动分享的内容是,时长为48小时,参与人数达50多位大厂技术决策者,共同去探索关于AI落地的最真实途径。

联合举办「全球机器学习技术大会」的是 CSDN 以及奇点智能研究院,如今这个大会正式进行了升级,升级之后成为了「奇点智能技术大会」。

奇点智能技术大会,将于2026年召开,是在4月17 - 18日,地点是上海环球港凯悦酒店,且是正式召开,大会聚焦十二大专题板块,分别是大模型技术演进、智能体系统工程、OpenClaw 生态实践以及AI行业落地等,还特邀50 + 位技术决策者,这些决策者来自BAT、京东、微软、小红书、美团等头部企业,来分享实战案例。目的在于协助技术管理者,以及一线 AI 落地人员,去避开选型风险,把试错成本降低,得到可复用的工程方法论,切实达成 AI 技术的规模化落地以及商业价值转化。

这不单单是一场有着技术的盛宴,更是身为决策者去把握2026年AI拐点的战略机会。

微信扫一扫分享资讯
客服服务热线
13485538018
24小时服务
微信公众号
手机浏览

CopyrightC 2009-2025 All Rights Reserved 版权所有 芜湖人才网 本站内容仅供参考,不承担因使用信息、外部链接或服务中断导致的任何直接或间接责任,风险自担。如有侵权,请联系删除,联系邮箱:ysznh@foxmail.com 鄂ICP备2025097818号-15

地址: EMAIL:qlwl@foxmail.com

Powered by PHPYun.

用微信扫一扫