我太難了!跟阿里 P8 面試官 battle 了兩個小時,坎坷面試經(jīng)歷分享
今天給大家分享一篇阿里面試過程記錄的文章??赐曛竽銜l(fā)現(xiàn)在 P8 的這一輪面試中,其實具體的技術(shù)問題問得并不多,都是圍繞著項目進行展開的。
這種面試的體驗和收獲會比直接干巴巴的考察技術(shù)點好的多。而且作為面試官來說,也并不想問你干巴巴的技術(shù)點,關(guān)鍵是你得有拿得出手的項目和業(yè)務知識儲備,才能在技術(shù)之外的地方和面試官進行纏斗,從而增加自己面試通過的幾率。
這次分享就是一次非常成功的在業(yè)務領(lǐng)域和技術(shù)領(lǐng)域都有來有回的面試,只是在業(yè)務領(lǐng)域交互的更多。
背景
這次面試流程足足橫跨三個部門,其中既有側(cè)重業(yè)務的部門,也有側(cè)重技術(shù)的部門。在省略三次面試的前提下,實際面試輪次有七次。
整個過程的心理壓力還是比較大的,畢竟每多一次面試輪次,就多一份落選的可能。尤其轉(zhuǎn)戰(zhàn)三個部門還都是由于公司方面的原因...
面試范圍廣。由于涉及多個部門、多個面試官,所以面試內(nèi)容涉及方方面面。技術(shù)、管理、業(yè)務、個人規(guī)劃等等均有所涉及。其中技術(shù)也涉及基礎(chǔ)、中間件、架構(gòu),以及應用等。
這里非常感謝我的原二級主管,在我面試過程中提供的幫助。他多次幫我梳理業(yè)務、梳理思考邏輯等。
這篇文章主要分享和 P8 級別的面試官 battle 的過程。問的粒度也比較大,整體發(fā)揮也比較完整。
所以,我經(jīng)過整理,直接按照面試核心模塊進行拆分,進行了總結(jié),分享給你們。
- 應聘方式:原二級主管,內(nèi)推。
- 應聘崗位:技術(shù)專家-Java-零售 Saas
- 面試時長:兩個小時左右
- 面試核心:55%業(yè)務(新零售)、35%技術(shù)、10%人生
- 面試結(jié)果:面試通過,面試官很是認可,并讓我準備后續(xù)的 P9 面。
- 面試形式:線下(因為原二級主管表示,我線下表現(xiàn)力強很多,結(jié)果也證明確實如此)
- 面試地點:阿里西溪園區(qū) B 區(qū)
面試內(nèi)容
1.介紹一下門店數(shù)字化作業(yè)項目(簡歷項目)
面試準備中,一定要有一個核心項目,可以用于展現(xiàn)自身價值的實際例子,而且一定要足夠硬。大廠 P6 及以上,一般都是需要的。
簡單來說,就是說清楚項目背景、項目價值、然后再到自身貢獻,以及最后的效果&復盤??梢詤⒖?STAR 法則。
- 項目背景,要說清楚這個項目從何而來。比如作業(yè)這個概念是零售行業(yè)一直存在的。而之所以數(shù)字化,是因為盒馬支撐線上業(yè)務,所以數(shù)字化是必要的。而數(shù)字化作業(yè)系統(tǒng),可以完成信息流轉(zhuǎn)、提高效率等等。這其中比較擅長的點,就多說兩句。甚至可以引導面試官去詢問。
- 項目價值,要從商業(yè)價值,到業(yè)務價值,最后到實現(xiàn)的價值指標。比如價值流中,如何拉新、增加用戶粘性。再到如何提高業(yè)務流轉(zhuǎn)效率,最后到開發(fā)成本節(jié)省等。但凡項目,必然是有價值的,否則過不了商業(yè)論證的。
- 自身貢獻,一定要體現(xiàn)自己在項目中的價值。即使項目再大,自己沒有參與其中也是白搭。比如負責整個項目的項目管理、整個系統(tǒng)的技術(shù)方案設(shè)計、核心模塊的編寫等。這個過程,可以先強調(diào)* * 工作的難點,讓面試官切實認同難點,再提出解決方案。這樣比較容易獲得面試官對自身價值的認可。比如,你和面試官說,這個系統(tǒng)要求 10W 的 TPS。面試官立馬就有興趣了。如果,你能提供一個切實可行的解決方案。那么面試官對你價值,就十分認同了。
- 效果&復盤,效果要體現(xiàn)項目完成度,而復盤則體現(xiàn)了自我反思提升的能力。很多人對大廠說的潛力,不太明白。而自我反思提升的能力,就是潛力的一種表現(xiàn)。比如我實現(xiàn)了一個 10WTPS 的系統(tǒng),根據(jù)最后的落地效果。你認為哪里還有提升的空間,比如優(yōu)化某處的技術(shù)選型,可以降低成本等。又比如,如何設(shè)計架構(gòu),可以有效支撐業(yè)務后續(xù)的快速發(fā)展。
面試中的項目不是最重要的,最重要的是通過項目,展現(xiàn)自身的價值。所以項目不是越大越好,而是越能體現(xiàn)自身價值越好。不要混淆目的和目標。
面試過程中,面試官會通過一些問題,確認項目是否是真實的。
系統(tǒng)的整體架構(gòu)
面試項目,一定要會畫它的架構(gòu)圖?,F(xiàn)場想,容易犯錯,即便你很熟悉它。
這個部分就是上述自身貢獻的進一步深挖了。簡單來說,就是面試官想了解你設(shè)計能力。大廠社招,基本都是 p6 起步。套用大佬的話,編碼是基本要求。
那么從技術(shù)上拉開差距的第一塊兒,就是設(shè)計能力。
這里先說一些個人的粗淺認識,后續(xù)有機會,會展開的。
- 編碼 -> 核心編碼 -> 模塊設(shè)計 -> 應用設(shè)計 -> 系統(tǒng)設(shè)計(多應用復雜系統(tǒng))
- 模塊設(shè)計 -> 應用設(shè)計 -> 系統(tǒng)設(shè)計,其實都是方案設(shè)計,只是處理的復雜度是不同的。
軟件工程的架構(gòu)設(shè)計,本質(zhì)上是為了處理,軟件工程日益增高的復雜度。從這個角度,架構(gòu)設(shè)計可以分為時空兩個維度??臻g上則類似于架構(gòu)組成派,比如架構(gòu)圖。而時間上則類似于架構(gòu)演變的規(guī)劃。架構(gòu)的時空維度是果,而架構(gòu)決策派則是因。
這塊兒還是比較容易拉開水平差距的。最直接就是項目的復雜程度嘛。不過這個是我們自身難以決定的。所以我從個人解決問題的角度來談談。
最基本要說清楚多個關(guān)鍵點的決策理由,如這塊兒的設(shè)計重難點是什么、為什么采用策略模式、怎么實現(xiàn)策略模式等。
進一步要對整個方案的設(shè)計思路,有全局思考的整體觀念。比如秒殺系統(tǒng)的難點就是讀寫峰值高,還要保證用戶體驗。那么解決的要點是緩存、一致性等等。識別問題核心->解決思路->具體方案。
再進一步就是自身的方案要有方法論支撐。要從方法論中找到實際問題解決,再從實際問題回歸到方法論中。比如大到利用 DDD 解決業(yè)務領(lǐng)域劃分、識別核心領(lǐng)域模型等,小到二八原則落地到緩存方案中。
再往后,要么向上,考慮到業(yè)務,甚至商業(yè)模式等。比如支撐業(yè)務的快速擴張,以及商業(yè)模式的快速轉(zhuǎn)變等。要么向下,精細化每塊的設(shè)計方案,比如精準估算應用水位等。
準備面試的小伙伴,可以就上面的四條清單,提前準備啦。
主要的業(yè)務場景
面試項目中,需要清楚項目最終產(chǎn)品側(cè)表達,進而了解業(yè)務場景。
這里面試官一方面想要獲取對你項目的感性認知,進而發(fā)現(xiàn)興趣點(這個小伙子這個點,和我們團隊 xxx 相近,可以深入探討一下)。另一方面,也是看看你對業(yè)務的認識。畢竟產(chǎn)研的開發(fā),都需要對業(yè)務有足夠的認識,并且有足夠的敏感度。
這個部分的回答,主要分為三塊兒:
- 如何精煉地描述業(yè)務場景。 建議可以參照 5W1H 分析法。這樣有利于在準備階段就理清業(yè)務場景。實際面試往往由于臨場發(fā)揮等問題,表現(xiàn)還會縮水一些。比如門店效期管理平臺是面向運營同學,用于管理商品效期限 balabala。
- 明確“主要”的由來。 能夠說清楚真正主要的業(yè)務場景。并指導為什么它是主要業(yè)務場景。比如是歸屬業(yè)務價值流的生產(chǎn)鏈路。比如是直接關(guān)聯(lián)資金的業(yè)務等。
- 串聯(lián)各個業(yè)務場景。 能夠?qū)I(yè)務場景串聯(lián)起來,使之不再是一個個孤立的點。這需要小伙伴對關(guān)聯(lián)業(yè)務有足夠高的認識,有的還需要小伙伴了解公司相關(guān)戰(zhàn)役的始末。
這部分,作為面試項目的業(yè)務部分,需要提前準備。
如果有大佬幫忙梳理,就超贊了,比如之前的二級主管花費了不少時間幫我整理業(yè)務,真的是十分感激。
技術(shù)重構(gòu)
在面試過程中,適當展現(xiàn)自己的主觀能動性,是有必要的。
在大廠中,大部分主管還是比較喜歡有自我驅(qū)動力的同學的,更不會拒絕那些積極主動,熱衷思考并實踐的同學。
但是,如何展現(xiàn)出這一點呢?尤其一些小伙伴平時就有這樣的習慣,但是卻不知道如何展現(xiàn)。
我之前的工作中,每一個項目,我都會有文檔。文檔中包含項目管理、技術(shù)方案、總結(jié)、關(guān)聯(lián)內(nèi)容等部分。并且,作為 PM,我也有足夠的推動力。
當然,這都比不上,自主的技術(shù)重構(gòu)來得直接。畢竟,實現(xiàn)技術(shù)重構(gòu),需要包括思考、總結(jié)、自我驅(qū)動、業(yè)務等多方面內(nèi)容。
而且,技術(shù)重構(gòu)也很容易展現(xiàn)自身技術(shù)深度,思考深度。
由于在之前的工作中,我有主動推動過作業(yè)系統(tǒng)重構(gòu),并規(guī)劃了決策系統(tǒng)的重構(gòu)。
所以,我就向面試官闡述了痛點、日常思考、解決方案、團隊溝通、最終落地,以及最終的反思。
一定要有明確的重構(gòu)原因(提高開發(fā)效率,降低開發(fā)成本等),切不可為了重構(gòu)而重構(gòu)。
技術(shù)上的難點,以及解決方案
即使是偏向業(yè)務的開發(fā)崗位,也需要一些技術(shù)上的硬菜。
如果你的面試項目體現(xiàn)不出技術(shù)高段位水準,或者面試官沒有從你的表述中聽出來項目的高技術(shù)書準的體現(xiàn)。那么面試官大概率會有兩類問題:
自主系統(tǒng)設(shè)計 :簡單點的,將面試項目中的某個需求改一改,比如并發(fā)量從 100,到 100W。難一點的,直接讓你從零考慮某個場景。比如讓你設(shè)計一個秒殺系統(tǒng),或者設(shè)計一個火車訂票系統(tǒng)。
自問自答 :面試官讓被面試者談談項目中遇到的難題,以及解決方案。
前者,需要大家了解架構(gòu)設(shè)計,并對架構(gòu)設(shè)計中的最佳實踐(如秒殺系統(tǒng)、會員系統(tǒng)、搜索系統(tǒng)等)比較熟悉。
后者,則需要大家的面試項目中確實有存在技術(shù)難點,并有過思考與解決。就算是虛構(gòu),也需要有能夠進行技術(shù)嫁接的地方。
我在這個部分,主要討論了異步。
先是簡單討論異步的概念,然后闡述了 Java 的 FutureTask 框架&實現(xiàn)原理,最后就是應用了。
這一切都絲滑度過,結(jié)果 P8 大佬覺得沒有壓榨出我的極限,就可以玩花活了。
簡單來說,就是定量分析。在給出上游各個接口的延遲、并發(fā)量、以及各個接口間的依賴關(guān)系,要求我嘗試計算當前接口的最大并發(fā)量、最小延遲等具體數(shù)值。
后續(xù)還添加了 CPU 核心數(shù)、網(wǎng)絡延遲、內(nèi)部異常等各種條件,還各種修改前提條件。
最后由于兩個白板都寫滿了,條件都有些混淆了。
差不多二三十分鐘的狂轟濫炸,我也開始有些暈暈乎乎了。只好表示有點暈乎,記不住前提條件了,P8 大佬才收手。
末了,我問 P8 大佬,最后問題的最優(yōu)解是什么?P8 大佬表示他也不知道,他就想看看我的思路??粗麡泛菢泛堑模乙膊缓谜f什么...
項目管理
大廠的技術(shù)也需要懂項目管理。而且項目管理也是接觸管理的最佳入口。
大廠中,各種需求都是按照項目的方式進行推進的,而技術(shù)側(cè)是需要有人擔任技術(shù) PM 的。
而且擔任技術(shù) PM 是熟悉業(yè)務非常好的方式(個人成長小訣竅)。所以技術(shù)開發(fā)需要對項目管理有一定的認識,尤其是大廠開發(fā)。
如果可以,我推薦大家學習一下 PMP,至少可以買一本 pmbok 看一看。
而在落地過程中,最重要的反而不是什么項目管理的十大知識體系,而是裁剪這個只出現(xiàn)在 pmbok 開篇的概念。
如果每個項目都按照完整項目管理流程走,那么花費在項目管理上的資源,將遠超過花費在項目成果上的資源。
所以這就需要 PM 根據(jù)實際情況,對項目管理流程&工具進行適當?shù)牟眉?。說白了,追求項目管理落地的 ROI。
比如,我的項目管理文檔,一般分為:
- 項目背景 :簡單介紹業(yè)務背景,以及項目核心干系人(業(yè)務、PD、PM)等。
- 項目基線 :主要就是范圍、資源(多指人力資源)、進度三條基線。其中大廠的進度,并不需要甘特圖,里程碑就可以了。
- 項目風險 :主要針對可能存在的風險,以及對應解決方案。比如某個項目團隊成員是新人,可能存在工時判斷錯誤。那就需要判斷他負責的項目內(nèi)容是否在項目關(guān)鍵路徑上,項目活動時間是多少,是否需要額外的幫助。比如額外資源投入。并且可以通過每日確定進度,確保其個人偏差在接受范圍內(nèi),不會擴大影響面。
- 項目驗收 :這部分依據(jù)具體情況,可以收錄測試、產(chǎn)品、業(yè)務的驗收情況。并補充作為 PM,對項目上線的后續(xù)追蹤。
- 項目總結(jié) :對該項目過程中,遇到對問題、思考、總結(jié)都收錄在這兒。
- 附錄 :其中參考,則是整理項目相關(guān)的所有資料,如 PRD、技術(shù)設(shè)計方案等。
面試過程中,面試官往往會提出一些實際可能遇到的問題。
比如項目資源不足、項目進度很趕、PD 頻繁修改需求等。而這就需要各位就自己對項目管理的認識,給出自己的答案。
這其中沒有標準答案?;卮鸬倪^程,就是展現(xiàn)你對項目管理的認識。
比如項目資源不足(我的面試問題)。你可以有這些選擇:
- 通過對 PD、業(yè)務、TL 施壓,或者利用自身的影響力,嘗試獲取更多資源。這個部分可以簡單展開。比如個人影響力怎么來的(平時就有幫助別的團隊)。
- 通過與 PD、業(yè)務溝通,獲取更多的開發(fā)時長。這個就需要 PM 有較好的溝通能力了。溝通不好,打起來都可能。
- 通過關(guān)聯(lián)團隊協(xié)調(diào),交換項目資源,獲取在該項目更有經(jīng)驗的開發(fā)。這里涉及到項目組合管理。有點超綱了。但確實是解決思路。
- 通過與 PD、業(yè)務溝通,縮減項目范圍。這個對 PM 要求比較高。不過就算不成功,也可以為下一條鋪路(原因看《優(yōu)勢談判》)。
- 通過與 PD、業(yè)務溝通,對項目范圍內(nèi)的需求進行優(yōu)先級拆分。進而將整個項目拆分為多個階段進行。這個事兒,我在效期項目上就這么做過。
如果大家真的對項目管理不太熟悉,就直接面試官直言,也算是一種解決方案。畢竟不是每個人都有這方面的積累。
團隊管理
大廠的團隊管理占管理者考核的一半。
一般來說,大廠的 P7,以及及 P7+的面試,都會問到團隊管理。如果你只是面試一個 P6,卻被問到這個問題,那么不排除面試官把你看作預備役 P7。
我目前沒有接受團隊管理的專項學習&培訓。所以存在不足,希望大家多多包涵。也歡迎大家對我的想法提出意見。
我認為,管理是整合資源(人、時間、錢等),提高整體效率的方法論/學科。而團隊管理,則是利用團隊,通過一系列事務,達成特定組織目標。這其中會涉及團隊人員管理、目標拆解、團隊戰(zhàn)斗力提升等一系列模塊。
這里簡單就人員、事務、目標三者進行簡單闡述。
目標 :無論是政府、企業(yè)、團隊,還是個人,都會有目標。這里再次重申,有別于于目的,目標是完成目的的手段。在組織結(jié)構(gòu)中,目標會層層拆解下來,最終落地到執(zhí)行層面。身為 TL,一定需要明確自己的目標。如果目標整錯了,即使后面做得再好,對于公司而言,這個 TL 也是失敗的。但是,目標是為了目的而服務。如果對上層的目標拆解存在疑問,則需要積極進行溝通。目標確定前積極溝通,目標確定后積極執(zhí)行。
事務 :排除團隊戰(zhàn)斗力,為什么團隊間的產(chǎn)出依舊存在較大差距,就是因為目標拆解存在問題。類比而言,就是復雜系統(tǒng)在進行功能域拆解時,可以有多種拆解方式。可以按照組織結(jié)構(gòu),可以按照價值流、甚至可以按照字母順序(開個玩笑)。但是合理的拆解方式自然是追求高內(nèi)聚、低耦合,這樣可以使得不同功能域內(nèi)部更加自治、減少與其他域不必要溝通,進而降低協(xié)同成本等。另外,目標拆解還需要考慮到團隊成員成長。比如我在安排事情的時候,并不是完全按照完成事情去進行目標拆解。而是花更多的心思,考慮到團隊每個成員的當前能力、未來成長等。這是為了團隊長遠戰(zhàn)斗力提升。
團隊 :有別于項目管理,項目管理的核心是事、而團隊管理的核心是人。所謂“兵熊熊一個,將熊熊一窩”,團隊的戰(zhàn)斗力,很大程度上受 TL 的風格影響。團隊成員的成長、定位、忠誠都是需要 TL 去關(guān)注的。我之前帶過幾次團隊。核心理念就是真誠待人,懂得換位思考。這直接使得團隊文化就是大家比較真誠,懂得理解彼此,進而更好地進行團隊協(xié)作。優(yōu)秀的團隊協(xié)作,意味著團隊的高效產(chǎn)出。
小結(jié)一下 :優(yōu)秀的團隊可以提高內(nèi)部溝通效率,優(yōu)秀的目標拆解可以降低內(nèi)部溝通的總量,兩者結(jié)合就是團隊實現(xiàn)目標的高效。而正確的目標則可以提高團隊價值轉(zhuǎn)換率,配合前者則可以獲得團隊的高效價值產(chǎn)出(有別于高效產(chǎn)出)。
身為 TL,不要用戰(zhàn)術(shù)上的勤奮,去掩飾戰(zhàn)略上的偷懶。
身為 TL,經(jīng)常由于思想與行動的差距,造成兩種情況:眼高手低與無用努力。
前者多表現(xiàn)為整天談各種高端概念、名詞,但是缺乏落地,多出現(xiàn)在公司中上層管理。
這類 TL,我“有幸”接觸過,只能說挺心累的。真的上面拍個腦袋,下面跑斷腿,末了發(fā)現(xiàn)無法落地。
后者多表現(xiàn)為整天吭哧吭哧在忙,年底感覺忙了不少東西。但一擰,發(fā)現(xiàn)整年都是散彈槍,沒有聚焦點,或者聚焦點不夠強。這種情況多出現(xiàn)在公司中下層管理。
這類 TL,我也“有幸”遇到過。年底看看自己這一年做的,如果無法凝聚為有限的幾大塊兒,那說明就是這樣的情況。
閑聊人生
閑聊是溝通者三觀的碰撞,也是對面試者個人素質(zhì)(如潛力等)的重要考量。
說實話,面試聊人生一直是我最放松的環(huán)節(jié)。一方面是之前的經(jīng)歷中,經(jīng)常和公司 Boss、團隊一二級主管溝通,另一方面是自己平日里對自己是有不少反思&總結(jié)&規(guī)劃的。
更重要的,我可以通過這個環(huán)節(jié),去了解&借鑒那些大佬如何溝通、總結(jié)、規(guī)劃,并得到那些大佬對我思考&規(guī)劃的建議。這都是難得的學習機會,只能說很多人沒有充分利用上。
這個環(huán)節(jié),我基本都是臨場發(fā)揮。唯一需要注意的是說話要過腦子,明確什么話可以說,什么話不可以說,什么話要婉轉(zhuǎn)說。
簡單就面試而言,你需要表現(xiàn)出以下三點:
- 態(tài)度積極&樂觀 :很多人簡歷上寫著積極、樂觀、開朗,卻沒有任何有力支撐點。你可以在閑聊中表示喜歡和朋友爬山,平日里有在健身、遇到某些人生問題保持樂觀態(tài)度等。
- 巨大能力&潛力 :有些深層次能力,可能某些面試官沒有挖掘到,還有隱性的潛力等。這都需要你來主動展現(xiàn)(展現(xiàn)價值,才可以獲得更好認可)。比如你可以表示自己在解決某個問題時體現(xiàn)了解決問題能力,自己的體系化認識(專業(yè)、認知等)、自己的日常思考(業(yè)務、技術(shù)等)等
- 渴望公司&團隊 :面試官有千萬個應聘者選擇,你也同樣有千萬個公司選擇。你需要表現(xiàn)出你對該公司&團隊的向往。文化的傾向,意味著你在團隊的穩(wěn)定性、以及適應性等,并不是無用的。比如你可以主動咨詢目標公司&團隊的愿景、業(yè)務等,并進行溝通與認同等。
而這其中,又可以展開很多。不過因為閑聊人生環(huán)節(jié)而被拒絕的小伙伴比較少,這里就不再贅述。
P9 面
其實面試前,我已經(jīng)知道了大概的面試方向和問題。是的,有一位大佬真心帶你,就是這么爽。
不過,P9 面由于 HC 問題,一直卡著。我直到最后也沒有真正接觸與這位 P9 進行溝通,挺遺憾的。
這位 P9 大佬算是這些面試中最關(guān)心業(yè)務的 P9 大佬,所以我還是談談他的面試方向和問題,供大家參考。
當時的面試會有兩個方向,一個是新零售業(yè)務(因為當時目標團隊有這個痛點),另一個是業(yè)務穩(wěn)定性。這里就談談后者。
其實聊到穩(wěn)定性,大家都或多或少知道一些,比如最基本的高可用三劍客(限流、降級、熔斷)。但是如果強調(diào)技術(shù)之外呢?或者說只是技術(shù)側(cè)會不會太狹隘了?
拋開技術(shù),業(yè)務本身也有穩(wěn)定性需求,信息技術(shù)在這里只是實現(xiàn)手段。我們可以通過時間線來分析:
事前:核心是預防。業(yè)務&產(chǎn)品上的預防手段,可以是在規(guī)則發(fā)布窗口添加影響面校驗。技術(shù)上可以是高可用三劍客(涉及依賴分析,可以深入展開,體現(xiàn)技術(shù)造詣)。
事中:核心是監(jiān)控。業(yè)務&產(chǎn)品上的監(jiān)控手段,可以是現(xiàn)場數(shù)據(jù)大屏、業(yè)務指標監(jiān)控等。技術(shù)上可以是各類基礎(chǔ)監(jiān)控等。技術(shù)設(shè)計上可以有冪等&重試,以及超時。甚至可以是冗余(數(shù)據(jù)庫掛了,通過緩存提供繼續(xù)查詢能力)、N 版本程序設(shè)計等。
事后:核心是兜底。業(yè)務&產(chǎn)品上的兜底手段,可以是人工兜底方案、業(yè)務妥協(xié)方案等。技術(shù)上可以是資源隔離,進而降低影響面。
至于故障發(fā)生后的事后復盤,那是必須的,這里不再提及。
最后,業(yè)務優(yōu)先級 = 影響面 x 發(fā)生概率