首页 > 数据库 > 数据库开发技术 > 架构师面试和晋升技巧
如何考察架构能力
面试和面评 - 三项能力

【判断能力】
是否能够准确的分析业务需求中隐含的复杂度问题。
【拆解能力】
是否有足够的技术深度或者技术宽度,能否设计合适的架构来解决复杂度问题。
【取舍能力】
是否能够挑选合适的落地方案,决策和取舍是否有逻辑,逻辑是否正确。
案例 - 印度板球赛事图文直播架构优化
【业务背景】
某公司印度资讯业务,有一个板球图文直播的系统,一个升P7的同学做了系统的性能优化,引入了 Redis 缓存优化架构,优化后性能提升10倍。
【判断能力】
1. 系统响应慢是表象问题,根因是什么?你当时是如何分析的?
2. 全流程的性能耗损分布大概是什么样的?哪个阶段是瓶颈?
【拆解能力】
你为什么选择了引入缓存?
【取舍能力】
为什么选择了 Redis 而不是 Memcached,或者其它性能优化方案?
如何展现架构方案 - 架构设计复杂度

【业务复杂度】
业务固有的复杂度,主要体现为难以理解、难以扩展,例如业务数量多(微信)、业务流程长(支付宝)、业务之间关系复杂(例如ERP)。
【质量复杂度】
高性能、高可用、成本、安全等质量属性的要求。
业务复杂度和质量复杂度是正交的。
案例 - 大数据平台架构优化
【业务背景】
某公司大数据平台架构优化,将存储服务器从80台降低到4台。
【技术复杂度】
日志压缩!
架构面评技巧有哪些?
STAR 方法

Situation:概括性的总结业务背景和挑战。
Task:介绍你负责的任务以及需要达成的目标。
Action:项目中你采取的关键行动,例如用了微服务拆分,引入了Flink、规则引擎,设计了整体异地多活方案等等。
Result:最终的架构方案,以及落地后的实际结果,一般三个维度以上,尽量用量化结果描述,例如日活、转化率、留存率等。
STAR 如何写/讲架构

STAR 案例 - 游戏异地多活架构 (1/2)

【Situation】
XX 业务1个月4次故障,持续时间n分钟,造成***万的损失,严重影响平台口碑。
【Task】
1. 攻坚项目负责人;
2. 总架构师。
【Action】
1. 成立研发、测试、运维、项目的攻坚团队;
2. 架构演进:第一个实现异地多活架构。
【Result】
1. 3分钟发现问题,5分钟恢复;
2. 可复用的运维平台;
3. 可复制的异地多活的方法论。
STAR 案例(3/3) - 异地多活设计方法论

如何回答面评/面试问题
关注“结果”,回答“事情 + 结果”。
1. 微服务拆分后研发效率有多大提升?带来了什么挑战么?
2. 你们的 Docker 容器一共有多少,大概的负载如何?
关注“过程”,回答“方法 + 步骤”。
1. 你们是如何拆分某某服务的?
2. 微服务拆分的时候数据库怎么处理?
关注“原因”,回答“原理 + 思考”。
1. 为什么选择 Redis,而没有选择Memcached?
2. Redis 相比 Memcached 有什么优势,有什么缺点?
如何回答面评/面试问题 - 典型疑问
【疑问1】
有人建议在答辩环节,为了防止问到自己不会的问题,在自己准备的问题上尽量多说,从而让面试官少问问题,这种方法可取吗?
答:不可取,面试官和评委不会因为你一个问题答得多就给你通过,评委会综合考察相关能力。事实上,我们评委经常会阻止晋升的人长篇大论,啰里啰嗦地讲,评委需要听到关键的技术点和分析。
【疑问2】
评委的问题我不太会,但是我掌握的一些技术可能与这个问题有关,应该尝试回答一下么?
答:不可,不要蒙,直接说不会,然后引导评委转向自己会的内容。例如:评委问了 Redis 的多路复用自己不会,可以说 Redis 的数据结构自己比较熟。
原文作者:二进制跳动;如有侵权,请联系管理员删除。