架構面試說明

研發工程師想提升面試競爭力,需要具備的三個技術認知:
1.架構設計認知
2.分析問題的認識
3.能力邊界的認知

目標的轉變:
現在:初級研發工程師 下個目標是中/高級研發工程師 最后是研發架構師

一、關于架構設計的問題一定要立足于點、連成線、擴散成面
例子:
一個研發工程師重構一個交易流程系統,將這個系統拆分為了三個子系統:訂單系統、報價系統、促銷系統,當時只有兩個人負責開發,為什么考慮要進行拆分,而且拆分后系統復雜度也會增加,研發負責人是怎么考慮的?
負責人給出了拆分說明:
訂單系統層面:由于訂單系統相對來說業務穩定不存在很多業務需求,如果耦合在整個系統中在其他功能發布上線的時候會影響訂單系統的穩定性;增加測試部門的重復工作等
促銷系統層面:由于促銷系統屬于非核心系統,處于保障交易流程穩定性的考慮,在系統異常或資源緊張時能讓促銷系統有可降級的能力
報價系統層面:整個系統中最復雜和靈活的部分,出于專業化和快速迭代的考慮,目的就是為了快速響應需求的變化
復雜度評估層面:系統拆分雖然會導致系統交互更加復雜,在規范API的格式定義和調用方式后系統復雜度會維持在可控的范圍內

上述回答很好地表達了應聘者對系統設計的思考和理解,因為他很好地說明了原有系統中關于訂單、促銷、報價系統耦合在一起造成的實際問題這是立足于點;從交易系統的角度做系統設計串聯起三個子系統的拆分邏輯,這是連接成線;最后從復雜度和成本考量的方向夯實了設計的原則這是擴展成面。

架構就是拆分?
不理解架構拆分背后的深層原因!
底層設計邏輯:
1.為什么做架構拆分?
做系統解耦、子系統解耦、模塊之間解耦
2.為什么做系統解耦?
使得原本復雜的業務邏輯能夠有序得分布在各個獨立的系統之中,使得拆分后的各個系統職責更為單一,功能更內聚
3.為什么做職責單一?
功能邏輯單一,迭代速度更快,會提高研發團隊響應業務需求的速度即提高團隊的開發效率
4.為什么要關注開發效率?
研發效率的提升是任何公司在發展中最為關注的問題,從某種程度上看架構拆分是管理在技術上提效的一種手段,甚至可以說架構的本質就是拆分

二、分析問題的認知
實際工作中,技術人員在做系統設計的時,需要與公司或部門的戰略定位對齊才能讓你的技術有價值。
對于系統設計和架構升級的問題,業務方、管理者、技術人員的關注點是不同的。
業務方在系統升級后,系統有能力迭代功能來滿足市場需求,所以關注點在于系統能力。
管理者在系統升級后,系統研發團隊的開發效能得到提升,所以關注點在于人效管理。
技術人員需要找到做系統設計的立足點,滿足不同人對技術的訴求,這個立足點通常就是系統設計原則。
所以問題是針對系統現階段業務發展帶來的主要矛盾提出才會更有價值且被認可。

例如:
一個系統早期開發簡單,研發人員少后來系統規模增加,開發人員也隨之增加,導致系統的研發效率不能匹配業務發展速度并且單靠加人不能解決問題。此階段的系統架構核心原則就不能隨便定義為要保證高性能和高可用。
需要對原有系統進行合理的邊界拆分,讓研發人員有能力提速來快速響應需求變化,就需要架構師對業務領域和團隊人員有足夠的了解。
面試官一般關注系統的核心功能,不要一開始就是高性能高可用,這會讓有經驗的面試官認為你很初級。
總的來說,面試中研發人員回答系統設計問題的時候要根據所處階段的主要矛盾來回答架構設計問題。
軟件復雜性來源于兩點:本質復雜度和偶然復雜度。所謂的開發工具、開發框架、開發模式以及高性能和高可用這些僅是偶然復雜度,架構最重要的是要解決本質復雜性,這包括人的復雜性和業務復雜性。

三、對能力邊界的認知
高級研發晉升架構師的標準:全系統層面到某一領域層面

怎么能讓自己快速成長?
在工作中養成歸納總結的習慣,總結自己的知識體系,建立自己的方法論,提高自己的認知能力,多爭取駕馭系統邊界的機會。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容