工作和面试中的系统架构(上)
金三银四,跳槽和招聘旺季,分享一个程序员面试中经常被提问的问题:你所在公司的系统架构是什么样的?
想象一下,此刻你面前坐的是一位脸带笑意的面试官,他把一张空白的A4纸和一支黑色签字笔推到你眼前,"在纸上画下你们公司的系统架构吧。"
通常来说,大吹特吹系统架构多么高大上可能会被当场揭穿,觉得没啥可讲的敷衍了事必然被直接PASS。准备好了吗?这里分享一个简单易行的方法:按照由外入内,从大到小的顺序介绍系统架构。
"外"是指系统的外貌,即系统的行业背景、核心功能、主要用户和系统特点。注意介绍时讲话要简洁明了,每个点都力求只用一句话,绝不拖泥带水,给面试官留下一个"惊人的好印象",让他觉得眼前这个面试者属于有备而来,不是来讲废话浪费双方时间的。
"内"是指系统架构的组成,主要包含哪些模块,各模块使用的技术栈。有个技巧是按照数据流向来介绍:数据从哪里来(输入),最终到哪里去(输出),中间经历什么复杂的处理过程(处理)。无论是大型复杂系统还是简单的系统,都可以按照“数据的输入、处理、输出”的方法介绍清楚,当人们了解一个系统的输入和输出时,自然而然就会对数据是如何处理的发生兴趣。
介绍完系统的外貌和组成,接下来可以按照“由大到小”的顺序介绍整个系统架构中你所负责的模块了。
“大”是指模块的功能、定位,主要用到哪些技术,技术挑战是什么,对整个系统的价值是什么。从宏观角度对自己所负责模块做一个简明扼要的总结,向面试官证明你是一个头脑清醒的工程师,知道自己过去都在做些什么。
“小”是指具体的技术点,模块中用到的关键技术,当然是你最熟悉、掌握最好、理解最深,也最希望被面试官提问的技术点。对于大多数人而言,当被问到自己熟悉的领域和话题时都会回答的很好,但是一旦涉及平时很少使用的技术问题时,就会陷入慌乱,不知如何回答才好。所以在介绍系统架构的时候,面试者要主动发起“话题收敛”,把话题转移到自己熟悉的工作和技术上来,这可是一个关乎面试成败的小技巧。
一句话总结:使用“由外而内”的方法向面试官分享你对整个系统的业务和架构上的理解,运用“从大到小”的技巧证明你对所负责模块的技术掌控能力,主动抛出话题,以突出你的技术优势。
以上就是面试中如何回答系统架构问题的思路和方法了,标准化的问题就有标准化的答案,但是具体效果如何,还是依赖平日里的学习、思考和总结。
下一篇会向大家分享工作中的系统架构,也是我写这个公众号的动力和初衷之一:剖析后端系统架构组成和常用技术。
金句分享
这是一个最好的时代,也是一个最坏的时代;
这是一个智慧的年代,这是一个愚蠢的年代;
这是一个信任的时期,这是一个怀疑的时期;
这是一个光明的季节,这是一个黑暗的季节;
这是希望之春,这是失望之冬;
人们面前应有尽有,人们面前一无所有;
人们正踏上天堂之路,人们正走向地狱之门。
出自《双城记》,作者是英国小说家狄更斯。
解读:文豪就是文豪,写的句子百年不朽,不论国界。