架构面试说明

2022-07-17  本文已影响0人  小灰灰_5c75

研发工程师想提升面试竞争力,需要具备的三个技术认知:
1.架构设计认知
2.分析问题的认识
3.能力边界的认知

目标的转变:
现在:初级研发工程师 下个目标是中/高级研发工程师 最后是研发架构师

一、关于架构设计的问题一定要立足于点、连成线、扩散成面
例子:
一个研发工程师重构一个交易流程系统,将这个系统拆分为了三个子系统:订单系统、报价系统、促销系统,当时只有两个人负责开发,为什么考虑要进行拆分,而且拆分后系统复杂度也会增加,研发负责人是怎么考虑的?
负责人给出了拆分说明:
订单系统层面:由于订单系统相对来说业务稳定不存在很多业务需求,如果耦合在整个系统中在其他功能发布上线的时候会影响订单系统的稳定性;增加测试部门的重复工作等
促销系统层面:由于促销系统属于非核心系统,处于保障交易流程稳定性的考虑,在系统异常或资源紧张时能让促销系统有可降级的能力
报价系统层面:整个系统中最复杂和灵活的部分,出于专业化和快速迭代的考虑,目的就是为了快速响应需求的变化
复杂度评估层面:系统拆分虽然会导致系统交互更加复杂,在规范API的格式定义和调用方式后系统复杂度会维持在可控的范围内

上述回答很好地表达了应聘者对系统设计的思考和理解,因为他很好地说明了原有系统中关于订单、促销、报价系统耦合在一起造成的实际问题这是立足于点;从交易系统的角度做系统设计串联起三个子系统的拆分逻辑,这是连接成线;最后从复杂度和成本考量的方向夯实了设计的原则这是扩展成面。

架构就是拆分?
不理解架构拆分背后的深层原因!
底层设计逻辑:
1.为什么做架构拆分?
做系统解耦、子系统解耦、模块之间解耦
2.为什么做系统解耦?
使得原本复杂的业务逻辑能够有序得分布在各个独立的系统之中,使得拆分后的各个系统职责更为单一,功能更内聚
3.为什么做职责单一?
功能逻辑单一,迭代速度更快,会提高研发团队响应业务需求的速度即提高团队的开发效率
4.为什么要关注开发效率?
研发效率的提升是任何公司在发展中最为关注的问题,从某种程度上看架构拆分是管理在技术上提效的一种手段,甚至可以说架构的本质就是拆分

二、分析问题的认知
实际工作中,技术人员在做系统设计的时,需要与公司或部门的战略定位对齐才能让你的技术有价值。
对于系统设计和架构升级的问题,业务方、管理者、技术人员的关注点是不同的。
业务方在系统升级后,系统有能力迭代功能来满足市场需求,所以关注点在于系统能力。
管理者在系统升级后,系统研发团队的开发效能得到提升,所以关注点在于人效管理。
技术人员需要找到做系统设计的立足点,满足不同人对技术的诉求,这个立足点通常就是系统设计原则。
所以问题是针对系统现阶段业务发展带来的主要矛盾提出才会更有价值且被认可。

例如:
一个系统早期开发简单,研发人员少后来系统规模增加,开发人员也随之增加,导致系统的研发效率不能匹配业务发展速度并且单靠加人不能解决问题。此阶段的系统架构核心原则就不能随便定义为要保证高性能和高可用。
需要对原有系统进行合理的边界拆分,让研发人员有能力提速来快速响应需求变化,就需要架构师对业务领域和团队人员有足够的了解。
面试官一般关注系统的核心功能,不要一开始就是高性能高可用,这会让有经验的面试官认为你很初级。
总的来说,面试中研发人员回答系统设计问题的时候要根据所处阶段的主要矛盾来回答架构设计问题。
软件复杂性来源于两点:本质复杂度和偶然复杂度。所谓的开发工具、开发框架、开发模式以及高性能和高可用这些仅是偶然复杂度,架构最重要的是要解决本质复杂性,这包括人的复杂性和业务复杂性。

三、对能力边界的认知
高级研发晋升架构师的标准:全系统层面到某一领域层面

怎么能让自己快速成长?
在工作中养成归纳总结的习惯,总结自己的知识体系,建立自己的方法论,提高自己的认知能力,多争取驾驭系统边界的机会。

上一篇 下一篇

猜你喜欢

热点阅读