• 我的订阅
  • 科技

“从未写过一行代码的我,刚刚通过了谷歌系统设计面试!”

类别:科技 发布时间:2023-08-18 20:01:00 来源:CSDN

译者 | 郑丽媛

出品 | CSDN(ID:CSDNnews)

我叫 Kevin,从未做过软件工程师或项目经理,也没有写过或测试过任何一行代码——而我技术生涯的起点,始于招聘工作。

开始招聘工作后,我进入职业指导和薪酬谈判阶段,直到现在的工作:为工程师创建内容。与大多数工程师相比,我掌握的领域知识很少,但也顺利通过了谷歌的系统设计面试。

想必很多人对此感到好奇,我可以告诉你:我之所以能通过面试,是因为在参加这次面试之前,我学习了很多关于系统设计面试的理论知识。通过这场面试,我还学到了一些技巧,下面我将逐一分享给你们,希望你们也能顺利通过心仪公司的面试。

“从未写过一行代码的我,刚刚通过了谷歌系统设计面试!”

非程序员,如何学到很多关于系统设计面试的知识?

我在匿名模拟面试平台 interviewing.io 工作,工作内容之一是与应聘者讨论面试过程。其中,许多人都抱怨系统设计面试,他们不知道该如何应对,也不知道要如何处理模棱两可的问题。曾有一位用户做出如下评价:

“系统设计面试非常可怕。如果你已经工作了 5+ 年,那么你就应该有出色的可扩展系统经验,可如果你没在面试中表现出来,你将受到惩罚,即要么拿不到 Offer,要么薪资大打折扣。打一个比方,可能对方只是要求你抬起和移动重物,但你必须要让一头大象飞起来才行。”

当时,最流行的系统设计资源非常相似,它们都没有很好的解决方案来处理或揭开系统设计面试中的神秘面纱。因此,我们团队决定尝试制作世界上最好的系统设计指南,并由我负责领导这个项目。

首先,我采访了一些评价最高的系统设计面试官,然后基于采访内容开始编写指南,期间我主要负责推进、倾听、项目管理、撰写、编辑,并不断重复这些工作。

经过几个月的努力,我们终于在 2023 年 3 月 2 日出版了《高级工程师系统设计面试指南》。很高兴的是,它在 Hacker News 上的点击率很高,如果你在谷歌上搜索“系统设计面试”,第一个搜索结果也是它。

为什么我决定自己尝试参加一次系统设计面试?

这份指南发布后,我见到了不少撰稿人,其中一位突然跟我说:“我打赌,你一定能通过系统设计面试。”除了他,另外两个人也很认同。于是我接受了这个挑战,并决定不另外学习,仅凭我在编写指南时学到的知识去参加面试。

为此,我在 interviewing.io 上找到了一位来自谷歌的面试官,并预约了某周五上午的模拟系统设计面试。对方不知道我是谁,只知道我的工作年限是 4 年,并以为我即将去谷歌面试,所以需要提前模拟一下以作准备。

“从未写过一行代码的我,刚刚通过了谷歌系统设计面试!”

我在这场系统设计面试中,值得参考的精选片段

我将带领大家回顾面试中的几个片段,这些片段涵盖了我面试中的三个关键方面:一个非传统的想法,一件我失败得很彻底的事情,以及一个我引以为豪的时刻。

(1)一个非常规的想法

去年,我参加了哈佛大学法学院的高级谈判讲习班。他们花了很多时间深入探讨了谈判的具体细节,即谈判的输赢往往就在于最初和最后的 3 分钟。于是在这次系统设计面试中,我一直牢记这一点,心想我必须迅速(最好在前 3 分钟内)在面试官心中获得一些认可和社交证明。

通过了解在 FAANG 面试的不成文规定,我学会了一个不那么显而易见的社交证明方法:要在“谁更不在乎”的竞争中获胜。也就是说,你要在面试过程中找到“我不在乎”的态度,不要在乎对方到底在不在乎你所说的话,保持你的节奏。

(2)一件我失败得很彻底的事情

这件事简而言之,就是我忘了可以在用户设备上缓存数据。更重要的是,他们还问了我关于缓存的问题,但我却耿耿于怀,我忽略了他们的追问,同时也忽略了他们的暗示。

我不知道他们追问的答案,但我也不敢说“我不知道”,我觉得如果我这么回答了,他们可能就要换人了。所以我没有这么做,导致他们以为我真的知道,并继续追问。

如果我能回到过去,我会像系统设计指南中所说的那样:在你不确定但有想法的时候,直接说“不知道”:

告诉面试官:“我不知道,面试结束后我肯定会马上查一下,但如果让我给出最佳猜测,我会说…[x],以下是原因[解释/思考过程]。”

(3)一个我引以为豪的时刻

我真正自豪的时刻,是在面试官说了一些吓人的话时保持冷静。害怕的面试者看起来就像是局外人,所以让自己看起来像个局内人,就要保持冷静。

有一个常见的系统设计面试问题是“设计 Gmail”,这个问题有很多不同的维度,但没有人能在面试时设计出 Gmail,这是不可能的。所以每当别人问“如何设计 Gmail”时,那就是在吓唬你。——前谷歌工程师

面试过程中,有关规模的话题出现了:面试官说,这个系统应该能够支持 8 亿活跃用户。当时我的脑子里突然浮现出那位谷歌工程师说的话,于是我装作很随意的语气,模棱两可地回答了一句“好吧”。从用词和表达方式来看,这个回答意味着“我不害怕这个提问”,但同时我的脑海里在疯狂暗示自己“不要在乎对方在不在乎”,以此来保持镇定自若。

面对管对这场面试的反馈

“从未写过一行代码的我,刚刚通过了谷歌系统设计面试!”

你会让这个人晋级下一轮面试吗?回答:会的。

我从系统设计面试中,学到了什么?

如果没有坚实的基础,魔术就失去了魔力。你可以拥有世界上所有的技巧,但如果你不了解原理那也是白搭。话虽如此,仅仅了解原理也是不够的,你还要管理好自己的心理。大多数人主要的心理障碍,都是对“不知道”的不适感。

与工程问题不同,有关设计问题大多都出于“不知道”。没有最佳解决方案,进展无法量化,也没有预先确定的结果。如果只是用模棱两可的方式糊弄过去是不够的,因为这些问题更多考验的是你茁壮成长的能力,好在这个能力可以通过实践慢慢掌握。这是一种思考、沟通和解决问题的方式,因此你所学到的技能是可以迁移的,甚至还可以从看似毫不相干的实践中迁移。

练习说“不知道”的三种方法

这三种方式,分别是:“未知”游戏、即兴表演和冥想。试试其中一种,为期 10 天,如果之后你的系统设计面试技巧没有提高,那我请你喝可乐。

第一种方式:“未知”游戏

这个游戏的方法是,注意谁知道你不知道的事情,然后跟着这条线索走。对我来说,那就是艺术,于是我把它提出来并到处打听。如果有人提到了我不知道的东西,那就得一分;如果他们解释了我不知道的事情,那就得两分;如果你认为某人身上能得到足够的分数:那就像对待老朋友一样对待他们,看看接下来会发生什么。

例如有一天,我和一个陌生人在咖啡馆开始聊天。半小时后,我在他家看到了但丁《神圣三部曲》的原版,其中讲述了地狱、炼狱和天堂的故事。这本书已经有几百年的历史了,篇幅之长令人惊讶。而在这次充满 “未知”的经历——即兴拜访陌生人的家之前,我甚至都没听说过这件极其罕见的艺术品,但我却有幸翻开了它的书页(而且不是在博物馆里!!)。

第二种方式:即兴表演

如果你认为上面这种没有组织的谈话对你而言就像地狱,那你可能更喜欢参加即兴表演,比如扮小丑。小丑分两种:地位高的(“知道”的)和地位低的(“不知道”的)。其中地位低的小丑会做一些不合逻辑的事情,例如让他们坐下但他们却跳起来,某种程度上属于破坏规则的笨蛋跟班。所以在扮演小丑时,你要告诉自己,你根本不知道发生了什么,并尝试接受这一点。

第三种方法:冥想

如果你觉得和陌生人交谈和扮小丑都很可怕,那就试试冥想吧。禅宗公案是一种特别令人费解的冥想方式,一个是,“一只手鼓掌的声音是什么?”,另一个问题是,“在你父母出生之前,你的本来面目是什么?”整体来说,禅宗公案充满了悖论和不连贯的问题,无法用正常理性的日常思维方式来解决,但它可以教会你如何在模棱两可中茁壮成长,非常适合很内向的人。

结论

要想在系统设计面试中取得好成绩,你需要做两件事:首先,你需要学习理论知识;其次,你需要练习说“不知道”,以便更好地处理模棱两可的情况。

有了在模棱两可中茁壮成长的能力,生活中就没有什么是不可能的了。

原文链接:https://interviewing.io/blog/never-written-code-but-passed-google-system-design

▶三天召集 2200+ 名黑客,齐向 AI “投毒”:“50 分钟内骗过 AI,第一名可获英伟达高端 GPU!”

▶前华为天才少年稚晖君创业6个月造出人形机器人,百亿参数大模型加持、目标成本20万元以内

▶字节首个大模型独立App亮相;Nature发文:LK99不是室温超导体;Debian诞生30周年 | 极客头条返回搜狐,查看更多

责任编辑:

以上内容为资讯信息快照,由td.fyun.cc爬虫进行采集并收录,本站未对信息做任何修改,信息内容不代表本站立场。

快照生成时间:2023-08-18 23:45:01

本站信息快照查询为非营利公共服务,如有侵权请联系我们进行删除。

信息原文地址:

奥哲被曝将发布AI低代码平台,AIGC会改变低代码行业格局吗
...AI编程给出了C1-C5的分级标准:C1级别,像输入法一样,打一行会自动补全提示;C2级别,会在程序员打完一行代码之后预测后面的代码;C3级别,可以生成完整的函数代码,并且可
2023-06-14 21:00:00
“算天斗海”为打赢
...、参考资料少,张卫民就从最基础的工作干起,程序代码一行一行敲、数据一个一个试……经过艰辛的努力,张卫民和团队成员突破一系列关键技术,成功研制某高效软件系统,为我国建立全球中期
2023-08-13 04:46:00
伪代码与流程图的关系
...伪代码的主要好处是:简单且准确地解释了应用程序的每一行应该做什么。编写代码人员可以更多地关注逻辑而不是程序语言语法。使用伪代码时,消除编码的干扰会使代码开发阶段更容易。伪代码
2022-12-27 13:41:00
每天训练12小时,敲出更有美感的代码
...着灯,键盘敲打声回荡。窗户倒映着庞泽锐20岁的身影,一行行代码跃然跳动于面前两块显示屏上。他跟所有“大厂”程序员一样,披星戴月,早起晚眠。勤奋努力,所有认识他的人都如此评价,
2023-10-20 06:16:00
被AI冲击的游戏公司,会上演“集体失业”吗?
...划、数据分析等方面的工作。最初的电子游戏,是开发者一行行代码敲出来的,但是随着技术的不断积累,也出现了各种提高生产力的工具。比如绘图的Photoshop、建模的3DMax,还
2023-06-09 17:46:00
施炜雷:挑灯夜战只为找到“微弱信号”
...信,直起身,打开电源,继续研究。寂寞中的执着追求干一行爱一行,身体可以随遇而安,心却必须执着追求。施炜雷喜欢这种挑战困难的感觉。针对国产化元器件辐射效应考核评估的需求,他参与
2023-09-20 06:24:00
干一行爱一行,18年匠心淬炼“技术大拿”
...鲁晚报新风光电子科技股份有限公司软件室主任裴宝峰干一行爱一行,18年匠心淬炼“技术大拿”孔令茹通讯员任鹤济南报道以匠人之心做事工作完成后必自检自测在新风光电子科技股份有限公司
2024-05-02 05:20:00
解析低代码+DDD:企业数字化转型的利器
...强数字化能力,是企业降本增效的好手段。本文将解析低代码+DDD,使软件系统的开发更加高效,质量更加稳定,一起探讨一下对于每个企业推进数字化的进程有帮助的一些方向,一起来深入了
2023-05-29 15:00:00
AI入侵芯片设计,会干掉工程师吗?
...copilot,它可以帮助用户自动完成代码(例如用户在输入一行代码的前几个字符后,copilot就能预估用户想要编写的是什么样的代码并且提示用户自动完成)以及自动寻找代码中的
2023-05-04 14:31:00
更多关于科技的资讯: