架構(gòu)師:從分布式軟總線到多屏協(xié)同的實(shí)戰(zhàn)指南)
車載與鴻蒙項(xiàng)目的架構(gòu)崗這幾年確實(shí)越來(lái)越熱門。我見過(guò)不少?gòu)膫鹘y(tǒng)嵌入式、安卓應(yīng)用甚至后端轉(zhuǎn)過(guò)來(lái)的開發(fā)者都想往這個(gè)方向靠但真正搞清楚這個(gè)崗位做什么、怎么準(zhǔn)備面試的人并不多。很多人簡(jiǎn)歷上寫著“負(fù)責(zé)系統(tǒng)架構(gòu)”真到面試環(huán)節(jié)聊到分布式軟總線怎么拆、多屏互動(dòng)狀態(tài)下怎么保證狀態(tài)一致性立刻就露餡了。這篇文章不聊虛的就直接把車載鴻蒙系統(tǒng)架構(gòu)師的角色定位、技能樹、面試題庫(kù)和實(shí)操心得拆開講清楚。不論你是剛?cè)胄邢肓私夥较蜻€是準(zhǔn)備跳槽去面試又或者已經(jīng)在項(xiàng)目里被推著當(dāng)架構(gòu)師這篇文章都能給你一些可以直接用的東西。1. 角色定位車載鴻蒙架構(gòu)師到底在架構(gòu)什么1.1 三個(gè)核心維度的職責(zé)拆分車載鴻蒙項(xiàng)目里的系統(tǒng)架構(gòu)師跟普通軟件公司里的“架構(gòu)師”有本質(zhì)區(qū)別。普通架構(gòu)師架構(gòu)的是“業(yè)務(wù)邏輯服務(wù)端”而車載架構(gòu)師架的是“一整個(gè)移動(dòng)空間里所有設(shè)備的協(xié)同”。拆開來(lái)看日常要解決的問(wèn)題基本集中在三個(gè)維度設(shè)備維度車機(jī)中控、副駕娛樂(lè)屏、后排控制屏、儀表的顯示單元、抬頭顯示、后排平板如果接了的話、手機(jī)通過(guò)某種互聯(lián)協(xié)議、手表如果有適配的話。每個(gè)設(shè)備算力不同、屏幕尺寸不同、交互方式不同你要把它們當(dāng)作一個(gè)整體系統(tǒng)來(lái)設(shè)計(jì)而不是一個(gè)個(gè)孤立的應(yīng)用。系統(tǒng)服務(wù)維度內(nèi)容要從手機(jī)流轉(zhuǎn)到車機(jī)、應(yīng)用要支持多屏同時(shí)啟動(dòng)、語(yǔ)音指令要能跨設(shè)備下發(fā)、數(shù)據(jù)要能在車機(jī)本地與云端之間同步這些底層能力如果不在架構(gòu)階段定好規(guī)則后期開發(fā)一定是各改各的聯(lián)調(diào)一次崩一次。生命周期維度車載環(huán)境的特點(diǎn)是“高頻啟?!?。車一上電系統(tǒng)要在幾秒內(nèi)進(jìn)入可用狀態(tài)車一斷電所有進(jìn)程要在規(guī)定時(shí)間內(nèi)安全退出。架構(gòu)師必須定義好每個(gè)服務(wù)在啟動(dòng)、運(yùn)行、休眠、喚醒、銷毀這幾個(gè)狀態(tài)下的行為規(guī)范。1.2 架構(gòu)師在項(xiàng)目流程中的實(shí)際位置很多人誤解架構(gòu)師是個(gè)“畫架構(gòu)圖的”。實(shí)際上在車載鴻蒙項(xiàng)目里架構(gòu)師更像是“規(guī)則制定者問(wèn)題終結(jié)者”的結(jié)合體。在項(xiàng)目啟動(dòng)階段你要跟產(chǎn)品經(jīng)理確認(rèn)所有的交互場(chǎng)景比如“手機(jī)上的導(dǎo)航能不能一鍵流轉(zhuǎn)到車機(jī)”“副駕在追劇、司機(jī)要調(diào)空調(diào)兩塊屏幕會(huì)不會(huì)搶系統(tǒng)資源”。這些場(chǎng)景落到技術(shù)方案上就是一套完整的狀態(tài)管理規(guī)則、優(yōu)先級(jí)規(guī)則、資源分配規(guī)則。在開發(fā)階段你要面對(duì)的是鴻蒙的Ability當(dāng)前版本叫Ability新版本可能叫ExtensionAbility之類如何編排、線程模型如何設(shè)計(jì)、分布式數(shù)據(jù)如何同步。這些都不是業(yè)務(wù)開發(fā)同學(xué)自己能拍板的需要架構(gòu)師給出標(biāo)準(zhǔn)答案否則十個(gè)模塊十個(gè)寫法代碼review能給人看吐。在交付階段車載項(xiàng)目還面臨一個(gè)特殊問(wèn)題不同車廠對(duì)系統(tǒng)版本、芯片平臺(tái)、屏幕分辨率的適配要求都不同。架構(gòu)師必須設(shè)計(jì)出足夠靈活的配置層讓一套核心邏輯能在不同硬件上跑起來(lái)而不是每上一個(gè)新車企的項(xiàng)目就把系統(tǒng)推倒重來(lái)。1.3 與普通開發(fā)者和技術(shù)經(jīng)理的區(qū)別我把這三個(gè)角色的邊界理了一下方便你判斷自己想不想走這條路維度普通開發(fā)者技術(shù)經(jīng)理系統(tǒng)架構(gòu)師主要關(guān)注點(diǎn)模塊/頁(yè)面實(shí)現(xiàn)進(jìn)度、人員、風(fēng)險(xiǎn)全局技術(shù)決策、規(guī)則制定時(shí)間跨度當(dāng)前迭代當(dāng)前項(xiàng)目周期多個(gè)項(xiàng)目、平臺(tái)演進(jìn)核心產(chǎn)出代碼、聯(lián)調(diào)排期、協(xié)調(diào)架構(gòu)方案、技術(shù)規(guī)范、評(píng)審結(jié)論面對(duì)問(wèn)題怎么實(shí)現(xiàn)某個(gè)功能誰(shuí)來(lái)做、什么時(shí)候做完為什么這么做、這個(gè)方案能用幾年工具IDE、調(diào)試器甘特圖、會(huì)議記錄架構(gòu)設(shè)計(jì)文檔、原型驗(yàn)證、技術(shù)選型評(píng)估說(shuō)白了開發(fā)者解決點(diǎn)是“怎么把功能寫出來(lái)”技術(shù)經(jīng)理解決的是“怎么把人組織好”架構(gòu)師解決的是“為什么這套系統(tǒng)能長(zhǎng)期轉(zhuǎn)下去”。2. 技能體系拆解光會(huì)鴻蒙API遠(yuǎn)遠(yuǎn)不夠2.1 鴻蒙系統(tǒng)核心機(jī)制的深度理解這個(gè)必須放在第一位。車載鴻蒙架構(gòu)師如果對(duì)系統(tǒng)本身的理解流于表面設(shè)計(jì)出來(lái)的方案就是空中樓閣。首要理解的是分布式軟總線。在鴻蒙體系里多設(shè)備協(xié)同靠的不是TCP/IP自己搭一套而是系統(tǒng)層面的分布式能力。你要清楚設(shè)備發(fā)現(xiàn)、組網(wǎng)、數(shù)據(jù)傳輸?shù)逆溌肥窃鯓拥哪男﹫?chǎng)景走軟總線、哪些場(chǎng)景走傳統(tǒng)網(wǎng)絡(luò)、哪些場(chǎng)景必須本地直連。尤其在車上信號(hào)干擾、設(shè)備移動(dòng)性、連接穩(wěn)定性都跟手機(jī)場(chǎng)景差別很大你必須對(duì)分布式通信的失敗場(chǎng)景做設(shè)計(jì)而不是只在理想網(wǎng)絡(luò)下驗(yàn)證。其次是Ability生命周期與任務(wù)棧。車機(jī)上應(yīng)用啟動(dòng)模式跟手機(jī)上完全是兩回事。中控屏幕通常不鼓勵(lì)讓用戶頻繁切換應(yīng)用更多是卡片式任務(wù)切換、分屏共存、跨端續(xù)接。架構(gòu)師要設(shè)計(jì)清楚每個(gè)Ability實(shí)例怎么創(chuàng)建、怎么復(fù)用、前后臺(tái)切換時(shí)數(shù)據(jù)怎么保存、同類型Ability在多個(gè)屏幕上能否共存。我見過(guò)一個(gè)典型問(wèn)題應(yīng)用在手機(jī)上設(shè)計(jì)時(shí)假設(shè)一個(gè)Ability只有一個(gè)實(shí)例到了車機(jī)副駕屏和中控屏要同時(shí)顯示同一個(gè)應(yīng)用的同一個(gè)頁(yè)面這時(shí)候?qū)嵗芾砹⒖瘫懒恕5谌蔷€程與并發(fā)模型。鴻蒙的并發(fā)模型跟傳統(tǒng)Java開發(fā)有差異ArkTS對(duì)并發(fā)管控更嚴(yán)格當(dāng)前版本逐步在收緊不允許隨便用多線程共享變量你必須熟悉并發(fā)對(duì)象在不同線程間傳遞的規(guī)則避免在設(shè)計(jì)階段就把架構(gòu)建立在錯(cuò)誤的共享內(nèi)存假設(shè)上。我是基于主流HarmonyOS系列平臺(tái)的公開技術(shù)形態(tài)展開的不同版本API會(huì)有差異但架構(gòu)思路的基本盤是不變的。核心思路是你要把系統(tǒng)提供的底牌摸清楚再談分層和模塊化順序反了必踩坑。2.2 車載行業(yè)知識(shí)與技術(shù)棧車載項(xiàng)目架構(gòu)師不全是純軟件能力還要對(duì)汽車電子本身有感覺(jué)。車內(nèi)網(wǎng)絡(luò)與總線比如CAN、LIN、車載以太網(wǎng)。雖然架構(gòu)師一般不會(huì)去寫CAN報(bào)文收發(fā)邏輯但你設(shè)計(jì)應(yīng)用架構(gòu)時(shí)必須知道哪些數(shù)據(jù)來(lái)自車身總線車速、車門狀態(tài)、電量等哪些來(lái)自云端。走總線數(shù)據(jù)時(shí)對(duì)實(shí)時(shí)性和可靠性要求極高不能跟普通云請(qǐng)求混在一起。SOA架構(gòu)理念汽車行業(yè)正在全面轉(zhuǎn)向面向服務(wù)架構(gòu)把傳統(tǒng)的信號(hào)交互抽象成服務(wù)調(diào)用。你設(shè)計(jì)車機(jī)端軟件時(shí)要考慮哪些能力要對(duì)外暴露為服務(wù)接口比如空調(diào)控制、座椅調(diào)節(jié)、車窗開關(guān)。接口的粒度定粗了上層邏輯寫得不靈活定細(xì)了調(diào)用鏈連成蜘蛛網(wǎng)性能撐不住。多屏交互場(chǎng)景駕駛過(guò)程中安全第一。中控屏在行車中要限制某些交互操作副駕屏限制力度可以松一點(diǎn)后排兒童區(qū)域要考慮家長(zhǎng)控制。架構(gòu)層面要把這些策略做成可配置的動(dòng)態(tài)策略而不是把判斷邏輯散落在各個(gè)頁(yè)面里。另外對(duì)一個(gè)從純互聯(lián)網(wǎng)行業(yè)轉(zhuǎn)過(guò)來(lái)的人來(lái)說(shuō)最容易缺的是對(duì)車規(guī)級(jí)可靠性、功能安全基本概念的認(rèn)知。不是說(shuō)你要考出一個(gè)功能安全的證書但你得懂“系統(tǒng)掛死”和“App閃退”在車載場(chǎng)景下的后果完全不在一個(gè)量級(jí)架構(gòu)設(shè)計(jì)里必須有兜底和恢復(fù)機(jī)制。2.3 架構(gòu)方法論與軟技能這部分往往被技術(shù)出身的人低估。很多人在面試時(shí)講到技術(shù)方案兩眼放光一聊到“你怎么推動(dòng)跨團(tuán)隊(duì)對(duì)齊”就卡殼。架構(gòu)師需要掌握的方法論包括模塊化與分層設(shè)計(jì)怎么切分模塊邊界怎么定義接口依賴規(guī)則、擴(kuò)展性設(shè)計(jì)下一年加入新硬件平臺(tái)時(shí)架構(gòu)要保留多少擴(kuò)展位、演進(jìn)式架構(gòu)不是一步到位設(shè)計(jì)成宇宙級(jí)完美系統(tǒng)而是保證當(dāng)前夠用、下個(gè)版本可以平滑演進(jìn)。軟技能方面至少有兩件事是天天都要用的寫文檔和畫圖的能力。架構(gòu)決策記錄、接口規(guī)范、流程圖、時(shí)序圖、部署圖這些不是給別人看的是給未來(lái)所有人看的。你能想出合理方案但說(shuō)不清、寫不明方案落不了地。把“技術(shù)問(wèn)題”翻譯成“業(yè)務(wù)風(fēng)險(xiǎn)”的能力。跟項(xiàng)目負(fù)責(zé)人和高層匯報(bào)時(shí)說(shuō)“分布式數(shù)據(jù)同步方案存在腦裂風(fēng)險(xiǎn)”是沒(méi)人聽的。你要說(shuō)“如果這個(gè)方案不做處理用戶在高速上開著導(dǎo)航突然掉線重新連接后目的地丟失這屬于安全事故隱患我們必須留夠?qū)m?xiàng)時(shí)間解決?!蓖粋€(gè)意思不同表達(dá)結(jié)果完全不同。3. 面試指南從簡(jiǎn)歷篩選到總監(jiān)終面的完整攻防3.1 簡(jiǎn)歷階段的篩選邏輯面試官篩簡(jiǎn)歷看的就是“你到底做過(guò)什么遇到什么挑戰(zhàn)怎么解決的”。一個(gè)比較有吸引力的簡(jiǎn)歷描述通常包含這幾個(gè)要素項(xiàng)目規(guī)模多少塊屏、哪些設(shè)備協(xié)同、日活多少技術(shù)復(fù)雜度怎么解決多設(shè)備狀態(tài)同步、什么問(wèn)題是在實(shí)驗(yàn)室測(cè)試發(fā)現(xiàn)不了的個(gè)人角色是參與還是主導(dǎo)推動(dòng)了什么事落地量化結(jié)果崩潰率從多少降到多少、啟動(dòng)耗時(shí)縮短到多少秒、穩(wěn)定性提升了多少不要只寫“負(fù)責(zé)車機(jī)系統(tǒng)架構(gòu)設(shè)計(jì)”這種描述等于沒(méi)寫。要寫具體目標(biāo)“負(fù)責(zé)座艙多屏協(xié)同方案設(shè)計(jì)解決導(dǎo)航應(yīng)用跨屏流轉(zhuǎn)后狀態(tài)不丟失的問(wèn)題設(shè)計(jì)了一套分布式狀態(tài)下一次寫入/多點(diǎn)讀取的狀態(tài)管理規(guī)則流轉(zhuǎn)成功率從82%提升到99.6%”。這才叫關(guān)鍵詞和內(nèi)容一眼就讓面試官提高了預(yù)期。3.2 二輪與三輪面試中的高頻架構(gòu)題以我面試過(guò)的人來(lái)看車載鴻蒙架構(gòu)師面試的問(wèn)法比較固定大概分為三類。第一類系統(tǒng)設(shè)計(jì)題比如“如果讓你設(shè)計(jì)一套車載多屏娛樂(lè)系統(tǒng)你會(huì)怎么規(guī)劃應(yīng)用架構(gòu)”。這類題目考的就是你腦子里有沒(méi)有完整的架構(gòu)框架。高分答案通常包含物理設(shè)備與邏輯層次的劃分哪些是數(shù)據(jù)層、哪些是服務(wù)層、哪些是展示層狀態(tài)管理策略多屏各自獨(dú)立狀態(tài)與共享狀態(tài)要分開跨設(shè)備通信方式選型什么時(shí)候用分布式能力、什么時(shí)候走接口回調(diào)異常場(chǎng)景兜底斷連、重啟、數(shù)據(jù)沖突演進(jìn)規(guī)劃后續(xù)增加設(shè)備怎么擴(kuò)展關(guān)鍵在于寧可方案和面試官想的不一樣也不能只給一個(gè)模糊的方向。面試官最怕聽到的是“我先了解一下看情況再說(shuō)”。第二類問(wèn)題排查題“線上反饋有一個(gè)偶發(fā)性問(wèn)題副駕屏播放視頻時(shí)中控屏偶發(fā)卡頓。你如何定位?!边@一類的分析思路是先確定卡頓發(fā)生在哪個(gè)層面是主線程阻塞、CPU資源爭(zhēng)搶、還是網(wǎng)絡(luò)/IO抖動(dòng)。車載場(chǎng)景有特殊性同一時(shí)間多個(gè)進(jìn)程在跑系統(tǒng)調(diào)度策略、服務(wù)端把某些進(jìn)程優(yōu)先級(jí)調(diào)低了都會(huì)導(dǎo)致卡頓。你要展示的是排查路徑的清晰性以及你對(duì)“車載系統(tǒng)并發(fā)”特點(diǎn)的熟悉度而不是一股腦把所有排查工具列出來(lái)。第三類方案選型題“多屏互動(dòng)方案你會(huì)用狀態(tài)集中管理還是分布式綁定”這種題沒(méi)有標(biāo)準(zhǔn)答案考官想看你選型時(shí)的權(quán)衡邏輯。你可以從這幾個(gè)維度回答設(shè)備的耦合度要求、網(wǎng)絡(luò)穩(wěn)定性假設(shè)、實(shí)時(shí)性要求、異常容忍度、開發(fā)效率然后根據(jù)項(xiàng)目?jī)?yōu)先級(jí)做取舍。最后給一個(gè)可以落地的組合方案或者建議不要給一句絕對(duì)話。3.3 綜合面試別把“價(jià)值”講小了到了總監(jiān)或者負(fù)責(zé)人面這一輪技術(shù)細(xì)節(jié)會(huì)逐步減少更多是看你的整體判斷力和格局。有幾個(gè)問(wèn)題幾乎必問(wèn)“你負(fù)責(zé)過(guò)的架構(gòu)最失敗的點(diǎn)是什么”“如果重來(lái)一次你會(huì)怎么做”“你如何評(píng)估一個(gè)架構(gòu)方案的好壞”“在需求頻繁變化的情況下你怎么保持架構(gòu)穩(wěn)定”?;卮疬@類問(wèn)題的核心原則是有復(fù)盤、有歸因、有方法論沉淀。不要講“我們當(dāng)時(shí)技術(shù)選型錯(cuò)了”要講“我當(dāng)時(shí)對(duì)業(yè)務(wù)發(fā)展的預(yù)判是偏樂(lè)觀/悲觀的導(dǎo)致模塊邊界切大了/切小了后續(xù)重構(gòu)成本高。我現(xiàn)在做方案前會(huì)先做業(yè)務(wù)增長(zhǎng)方向的預(yù)演同時(shí)把模塊邊界設(shè)計(jì)成可合并/可拆分的中立結(jié)構(gòu)”。這種回答模式會(huì)靠譜很多。綜合面還有一個(gè)高頻觀察點(diǎn)你承不承認(rèn)架構(gòu)設(shè)計(jì)是有缺陷的。完美的架構(gòu)在復(fù)雜系統(tǒng)中不存在。堅(jiān)持自己的方案絕對(duì)正確的人團(tuán)隊(duì)協(xié)作風(fēng)險(xiǎn)極高。正視問(wèn)題并給補(bǔ)救策略是好架構(gòu)師的標(biāo)志。4. 實(shí)戰(zhàn)視角車載鴻蒙項(xiàng)目中的酸甜苦辣4.1 最容易翻車的三個(gè)設(shè)計(jì)決策這一節(jié)分享三個(gè)我踩過(guò)或者親眼見過(guò)別人踩過(guò)的坑希望給你提個(gè)醒。第一個(gè)坑把手機(jī)上的生命周期直接搬到車機(jī)上。有個(gè)項(xiàng)目初期團(tuán)隊(duì)照搬了手機(jī)應(yīng)用的典型生命周期設(shè)計(jì)應(yīng)用退到后臺(tái)就暫停資源加載回前臺(tái)時(shí)恢復(fù)。在手機(jī)上這個(gè)思路沒(méi)毛病。但在車上車機(jī)本地服務(wù)比如語(yǔ)音助手退到后臺(tái)后用戶喊“打開副駕車窗”服務(wù)響應(yīng)要在幾百毫秒內(nèi)完成。如果服務(wù)按“退后臺(tái)就?!钡倪壿嬜吒緛?lái)不及拉起。正確的思路是把高頻長(zhǎng)期服務(wù)拉起為系統(tǒng)級(jí)長(zhǎng)駐任務(wù)定義好前后臺(tái)切換時(shí)有選擇的資源調(diào)度策略。哪些服務(wù)必須立刻響應(yīng)、哪些可以延遲要在架構(gòu)文檔里定義清楚。第二個(gè)坑分布式能力被當(dāng)作“萬(wàn)能膠水”。車載場(chǎng)景里一個(gè)常見的錯(cuò)誤是一遇到設(shè)備聯(lián)動(dòng)就上分布式能力比如中控屏跟手機(jī)傳個(gè)文件、中控屏跟后排屏共享視頻流。實(shí)際上分布式能力引入的同時(shí)也引入了組網(wǎng)依賴、信道穩(wěn)定性依賴、以及更復(fù)雜的異?;謴?fù)邏輯。如果兩個(gè)設(shè)備物理上就挨在一起通過(guò)本地WLAN甚至有線通道能夠解決就不要非要走分布式。從底層原理來(lái)說(shuō)分布式把“設(shè)備管理”的責(zé)任從應(yīng)用層上移到了操作系統(tǒng)。好處是你不用關(guān)注底層調(diào)度壞處是你失去了對(duì)通信鏈路的精確控制。在車上這種強(qiáng)實(shí)時(shí)場(chǎng)景過(guò)度抽象是危險(xiǎn)的。架構(gòu)師必須判斷一條數(shù)據(jù)鏈路里各個(gè)環(huán)節(jié)真實(shí)走的是什么協(xié)議別被框架的封裝“騙”了。第三個(gè)坑狀態(tài)共享設(shè)計(jì)得過(guò)于“理想”。有一次評(píng)審一個(gè)方案設(shè)計(jì)師在文檔里畫了非常多狀態(tài)的實(shí)時(shí)同步兩個(gè)屏之間的UI狀態(tài)、滾動(dòng)位置、播放進(jìn)度全要實(shí)時(shí)一致??粗芗?xì)致實(shí)際上這種方案的網(wǎng)絡(luò)壓力、狀態(tài)沖突概率、實(shí)現(xiàn)復(fù)雜度都很高。我在評(píng)審時(shí)問(wèn)了三個(gè)問(wèn)題如果副駕屏斷網(wǎng)3秒這個(gè)狀態(tài)同步會(huì)不會(huì)死鎖如果中控屏本地狀態(tài)和副駕屏狀態(tài)沖突以誰(shuí)為準(zhǔn)如果兩個(gè)屏幕同時(shí)修改同一個(gè)全局狀態(tài)操作合并還是互斥這三個(gè)問(wèn)題問(wèn)完方案重新設(shè)計(jì)了一輪。最后落地時(shí)大部分?jǐn)?shù)據(jù)單向流動(dòng)只在特定交互時(shí)做雙向同步穩(wěn)定性和開發(fā)效率都提高了很多。4.2 從開發(fā)轉(zhuǎn)架構(gòu)師的成長(zhǎng)路徑參考如果你現(xiàn)在還在業(yè)務(wù)開發(fā)崗想往這個(gè)方向走我的建議是不要直接跳到“學(xué)一套架構(gòu)方法論”要從解決實(shí)際邊界問(wèn)題入手。比較好的路徑是第一步主動(dòng)承擔(dān)項(xiàng)目里的疑難問(wèn)題比如啟動(dòng)優(yōu)化、跨端聯(lián)調(diào)、閃退治理。這些問(wèn)題能逼著你接觸系統(tǒng)機(jī)制而不只是業(yè)務(wù)代碼。第二步把每次排查問(wèn)題后沉淀下來(lái)的知識(shí)寫成文檔。寫一段時(shí)間你自然會(huì)知道自己理解里有哪些空檔。第三步拿“提升團(tuán)隊(duì)交付效率”為目的做重構(gòu)比如把某個(gè)模塊的接口收斂、把業(yè)務(wù)狀態(tài)管理統(tǒng)一。重構(gòu)過(guò)程里你會(huì)體會(huì)架構(gòu)規(guī)則怎么設(shè)計(jì)才能落地。第四步在面試或者內(nèi)部晉升時(shí)有意識(shí)講“為什么這樣做”而不只是“做了什么”。這個(gè)習(xí)慣會(huì)推動(dòng)你逼自己把設(shè)計(jì)邏輯想深。4.3 一個(gè)被低估的實(shí)操能力原型驗(yàn)證資深架構(gòu)師有一個(gè)常被人忽視的習(xí)慣對(duì)大決策做技術(shù)原型驗(yàn)證。我做過(guò)最夸張的一個(gè)原型只是驗(yàn)證“同一時(shí)間三塊屏幕在播放不同視頻流系統(tǒng)資源是否夠用”。這個(gè)原型代碼只有幾百行但回答了“視頻解碼方案是否可行”“內(nèi)存占用會(huì)不會(huì)超標(biāo)”“GPU壓力分布如何”這三個(gè)決定整個(gè)系統(tǒng)選型的問(wèn)題。沒(méi)有這個(gè)驗(yàn)證方案會(huì)陷入會(huì)議室里無(wú)盡的爭(zhēng)論。有了數(shù)據(jù)誰(shuí)對(duì)誰(shuí)錯(cuò)一目了然開會(huì)節(jié)奏快10倍。這就是架構(gòu)師的實(shí)操直覺(jué)不要等到代碼寫完了、集成測(cè)試跑了才知道方案走不通。給一個(gè)不確定的大問(wèn)題寫一個(gè)小原型也許兩天時(shí)間就能避免幾周的重構(gòu)。5. 面試與試崗期的避坑指南5.1 高頻隱藏考察點(diǎn)清單面試不僅僅是技術(shù)知識(shí)問(wèn)答。幾個(gè)面試官常關(guān)暗察的維度不容易被候選人察覺(jué)你的設(shè)計(jì)是否具備可落地性方案里沒(méi)有任何一句說(shuō)明書式的話而是能落地的完整實(shí)現(xiàn)路徑。你是否尊重系統(tǒng)原有的限制比如對(duì)舊項(xiàng)目的兼容、對(duì)硬件平臺(tái)限制的認(rèn)知。如果有人一上來(lái)就要推倒重來(lái)通常會(huì)被扣分。你在方案爭(zhēng)執(zhí)時(shí)的溝通姿態(tài)你可以不退讓但要先承認(rèn)對(duì)方方案里的合理部分再講問(wèn)題。記住一個(gè)原則面試官在考察架構(gòu)師時(shí)大概率在想象“這個(gè)人來(lái)了之后能不能在我的項(xiàng)目里遇到問(wèn)題時(shí)自己找到答案”。重點(diǎn)不只是你會(huì)什么更是你是否表現(xiàn)出“遇到問(wèn)題不會(huì)慌、會(huì)沿著一條合理路徑逼近答案”的特質(zhì)。5.2 試崗期或試用期快速建立信任的實(shí)操路徑如果你是入職前三個(gè)月或者剛過(guò)一個(gè)月的狀態(tài)給你幾個(gè)可以馬上執(zhí)行的建議先別急著改架構(gòu)。任誰(shuí)看到新來(lái)的架構(gòu)師第一天就指出一堆要重新設(shè)計(jì)的點(diǎn)都會(huì)產(chǎn)生防御心理。先花兩周時(shí)間把現(xiàn)有代碼、接口、部署鏈路摸清楚。你指出的問(wèn)題里有些可能是別人已經(jīng)在權(quán)衡中接受了你直接指出只會(huì)顯得沒(méi)做功課。挑一個(gè)明確的小問(wèn)題解決掉。不要一開始就啃最大的硬骨頭。選一個(gè)“明確存在且解決周期不長(zhǎng)的技術(shù)債”解決掉把過(guò)程和結(jié)果寫成文檔。這是建立團(tuán)隊(duì)信任最容易的方式。跟一線開發(fā)同學(xué)聊需求痛點(diǎn)。架構(gòu)師最忌諱脫離一線?;ㄒ惶鞎r(shí)間坐在開發(fā)旁邊看他寫代碼時(shí)卡在哪里。這些卡點(diǎn)就是架構(gòu)改進(jìn)的發(fā)力點(diǎn)。5.3 最后的備戰(zhàn)建議看什么資料提升架構(gòu)能力架構(gòu)不是看一本書就能“開竅”的但我確實(shí)總結(jié)出了幾個(gè)確實(shí)有用的方向重讀鴻蒙官方文檔中關(guān)于Ability生命周期、分布式數(shù)據(jù)管理、后臺(tái)任務(wù)的部分注意它每個(gè)能力都附帶的限制與約束這是架構(gòu)設(shè)計(jì)的邊界前提。學(xué)一輛車做出行交互實(shí)體的系統(tǒng)設(shè)計(jì)邏輯。可以挑一個(gè)開源的車載交互項(xiàng)目來(lái)讀看它如何處理多屏布局、熱狀態(tài)監(jiān)控、進(jìn)程優(yōu)先級(jí)管理。找一個(gè)你熟悉的現(xiàn)有系統(tǒng)做架構(gòu)復(fù)盤畫出它當(dāng)前的分層結(jié)構(gòu)、依賴關(guān)系、單點(diǎn)故障點(diǎn)再問(wèn)自己“如果讓我設(shè)計(jì)哪些東西我會(huì)做得不一樣”。這比背一百個(gè)架構(gòu)設(shè)計(jì)原則更有用。我個(gè)人在帶人的時(shí)候最常強(qiáng)調(diào)的一句話是架構(gòu)師是個(gè)需要“回頭客”思維的崗位。你現(xiàn)在畫的每一張架構(gòu)圖、定的每一條規(guī)則最終都會(huì)被線下的開發(fā)、測(cè)試、運(yùn)維以及半年后的你自己回頭翻到。你希望半年后的自己看到這套設(shè)計(jì)的時(shí)候點(diǎn)頭還是嘆氣這才是架構(gòu)設(shè)計(jì)時(shí)的真正原動(dòng)力。如果你正準(zhǔn)備面試我把上面所有的面試問(wèn)題、設(shè)計(jì)思路、經(jīng)驗(yàn)總結(jié)分類整理成了可打印的自查清單按章節(jié)對(duì)照復(fù)習(xí)比臨時(shí)抱佛腳刷題要踏實(shí)得多。祝你早日拿到心儀的座艙架構(gòu)Offer。