“從未寫過一行代碼的我,剛剛通過了谷歌系統設計面試!”

    來源: CSDN2023-08-20 15:26:29
      

    譯者 | 鄭麗媛

    出品 | 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”時,那就是在嚇唬你?!肮雀韫こ處?/span>

    面試過程中,有關規模的話題出現了:面試官說,這個系統應該能夠支持 8 億活躍用戶。當時我的腦子里突然浮現出那位谷歌工程師說的話,于是我裝作很隨意的語氣,模棱兩可地回答了一句“好吧”。從用詞和表達方式來看,這個回答意味著“我不害怕這個提問”,但同時我的腦海里在瘋狂暗示自己“不要在乎對方在不在乎”,以此來保持鎮定自若。

    面對管對這場面試的反饋

    你會讓這個人晉級下一輪面試嗎?回答:會的。

    我從系統設計面試中,學到了什么?

    如果沒有堅實的基礎,魔術就失去了魔力。你可以擁有世界上所有的技巧,但如果你不了解原理那也是白搭。話雖如此,僅僅了解原理也是不夠的,你還要管理好自己的心理。大多數人主要的心理障礙,都是對“不知道”的不適感。

    與工程問題不同,有關設計問題大多都出于“不知道”。沒有最佳解決方案,進展無法量化,也沒有預先確定的結果。如果只是用模棱兩可的方式糊弄過去是不夠的,因為這些問題更多考驗的是你茁壯成長的能力,好在這個能力可以通過實踐慢慢掌握。這是一種思考、溝通和解決問題的方式,因此你所學到的技能是可以遷移的,甚至還可以從看似毫不相干的實踐中遷移。

    練習說“不知道”的三種方法

    這三種方式,分別是:“未知”游戲、即興表演和冥想。試試其中一種,為期 10 天,如果之后你的系統設計面試技巧沒有提高,那我請你喝可樂。

    第一種方式:“未知”游戲

    這個游戲的方法是,注意誰知道你不知道的事情,然后跟著這條線索走。對我來說,那就是藝術,于是我把它提出來并到處打聽。如果有人提到了我不知道的東西,那就得一分;如果他們解釋了我不知道的事情,那就得兩分;如果你認為某人身上能得到足夠的分數:那就像對待老朋友一樣對待他們,看看接下來會發生什么。

    例如有一天,我和一個陌生人在咖啡館開始聊天。半小時后,我在他家看到了但丁《神圣三部曲》的原版,其中講述了地獄、煉獄和天堂的故事。這本書已經有幾百年的歷史了,篇幅之長令人驚訝。而在這次充滿 “未知”的經歷——即興拜訪陌生人的家之前,我甚至都沒聽說過這件極其罕見的藝術品,但我卻有幸翻開了它的書頁(而且不是在博物館里?。。?/span>

    第二種方式:即興表演

    如果你認為上面這種沒有組織的談話對你而言就像地獄,那你可能更喜歡參加即興表演,比如扮小丑。小丑分兩種:地位高的(“知道”的)和地位低的(“不知道”的)。其中地位低的小丑會做一些不合邏輯的事情,例如讓他們坐下但他們卻跳起來,某種程度上屬于破壞規則的笨蛋跟班。所以在扮演小丑時,你要告訴自己,你根本不知道發生了什么,并嘗試接受這一點。

    第三種方法:冥想

    如果你覺得和陌生人交談和扮小丑都很可怕,那就試試冥想吧。禪宗公案是一種特別令人費解的冥想方式,一個是,“一只手鼓掌的聲音是什么?”,另一個問題是,“在你父母出生之前,你的本來面目是什么?”整體來說,禪宗公案充滿了悖論和不連貫的問題,無法用正常理性的日常思維方式來解決,但它可以教會你如何在模棱兩可中茁壯成長,非常適合很內向的人。

    結論

    要想在系統設計面試中取得好成績,你需要做兩件事:首先,你需要學習理論知識;其次,你需要練習說“不知道”,以便更好地處理模棱兩可的情況。

    有了在模棱兩可中茁壯成長的能力,生活中就沒有什么是不可能的了。

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

    ?三天召集 2200+ 名黑客,齊向 AI “投毒”:“50 分鐘內騙過 AI,第一名可獲英偉達高端 GPU!”

    ?前華為天才少年稚暉君創業6個月造出人形機器人,百億參數大模型加持、目標成本20萬元以內

    ?字節首個大模型獨立App亮相;Nature發文:LK99不是室溫超導體;Debian誕生30周年 | 極客頭條

    關鍵詞:

    責任編輯:sdnew003

    相關新聞

    版權與免責聲明:

    1 本網注明“來源:×××”(非商業周刊網)的作品,均轉載自其它媒體,轉載目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責,本網不承擔此類稿件侵權行為的連帶責任。

    2 在本網的新聞頁面或BBS上進行跟帖或發表言論者,文責自負。

    3 相關信息并未經過本網站證實,不對您構成任何投資建議,據此操作,風險自擔。

    4 如涉及作品內容、版權等其它問題,請在30日內同本網聯系。