技术面试-架构师能力考察2023
2023-02-22 11:39:37 0 举报
AI智能生成
架构师技术面试能力考察,全面剖析架构师需要具备的能力模型和能力图谱,需要掌握基础技术能力、架构能力、发展能力;同时针对面试地图提供了面试指导和面试流程指引。
作者其他创作
大纲/内容
面试题库
是我们的宝藏,是整个架构师团队在实际工作中提炼和积累出来的,大部分都是网上找不到的
能力模型
是我们对架构师的能力要求,或者说是考查的职责描述
包括一个核心两个基本能力
一个核心
德
这个是最基本的要求,主要包括诚信、担当和品格
两个基本能力
硬实力
硬实力是架构师的本钱,生存技能
精于此道,以此为生
软能力
非常之重要
架构师在研发团队中会同时扮演技术大咖和老师的角色
作为老师,你要让别人能很容易地听懂你的观点和思路,要形成技术影响力,这就需要具备较强的表达和展现能力
日常工作需要和研发同学紧密协作,保证技术轨道的有序与目标达成,所以协作能力也是至关重要的
总结
核心
诚信、担当、品格
硬实力
基础技术、架构理解、发展能力
软能力
沟通、表达、协作
面试地图
考查的是具体的知识和能力图谱
基本涵盖了作为一个架构师需要掌握或者具备的知识和技能
基础技术能力
架构能力
发展能力
面试是在能力模型的指导下,参考面试地图进行的
建议流程
从简历开始
先让候选人做个简单介绍
然后从他最近参与的项目或者说是他认为做得最好的项目出发
让他介绍下
项目情况
架构方案
可以要求他边讲边画架构图
考虑几方面
一是有助于自己理解
二是能比较好地考查他的架构理解力、逻辑性、条理性、结构化思维和表达能力
再就是有了架构图,接下来可以结合图考查更细的技术点
1、基础技术能力
考察技术能力
了解了项目情况,又有了架构图,接下来我会围绕整个架构方案,结合我们的面试地图一块一块深入挖掘了解候选人的技术能力
先从 OSI 模型的应用层开始
通过负载均衡方案考查他对 CDN、DNS、VIP、HTTP、LVS、HAProxy、Keepalived、Apache、Nginx 的理解和熟练程度
中间也可以穿插问几个技术细节来考查他的理解深度
比如 Nginx 高并发的技术原理
Nginx 和 LVS 分别工作在 TCP/IP 协议栈的第几层
考察Java基础技术
接下来可以根据各功能模块展开考查 Java 基础技术
不可能面面俱到,但一些关键技术点必须考查
比如容器、JVM、数据结构、序列化、异常处理、Socket、多线程 / 并发、NIO
在 Java 体系中
JVM 是最基础也是最重要的考查点
我们的系统最常出现的 OOM 异常都跟 JVM 有关
架构师必须深入了解 JVM 的内存模型、字节码、垃圾回收(GC)策略等原理
才能去优化 JVM 相关的性能问题,才能快速定位 OOM 类异常
常用框架和相关概念
比如 Spring、SpringMVC、Mybatis、ORM、IOC/DI、AOP
设计思想
接下来要结合候选人提到的某个功能模块,考查他在面向对象上的设计能力和建模能力
面向对象设计主要考查的是设计思想
例如
最基本的概念
类与类之间的关系
如果他对这些概念都很清楚
我会追问聚合和组合的区别
聚合和组合是都是特殊的关联关系,二者都是整体和部分的关系,最主要的区别有2点:一是整体和部分的这种关联关系,组合更强一些,聚合要弱一些;二是生命周期,对于组合,部分的生命周期不能超越整体,也就说部分不能脱离整体而存在,部分随着整体的创建而被创建,消亡而被消亡。对于聚合,部分的生命周期可以超越整体,整体消亡了,部分还可以继续独立存在。
一般能答上来的都是对面向对象理解比较深入的
面向对象的理解程度和领域建模能力
有了面向对象的概念和思想,还可以结合候选人的项目,让他详细说说某个功能模块的设计,画画 UML 设计图
领域建模能力对于架构师而言至关重要
业务域抽象得是否合理,是否高内聚,领域边界是否清晰
这些都是影响系统可扩展能力的关键要素
除了这些,我也会结合项目考查几个比较常用的设计模式
单例模式
工厂模式
策略模式
模板模式
存储层
考查存储架构、数据库选型、数据库调优
存储架构
要看候选人是否能根据系统的并发量和数据量的需求设计适当的存储架构
是否需要做数据库分片
分片的原则和技术方案
是否需要引入 KV 引擎
是否需要做读写分离
是否需要做缓存
缓存需要做几层
数据库选型
也是和具体的数据量和并发量有关
是用关系型数据库还是用 KV 引擎,还是要二者结合
考虑到我们的系统大多还需要强依赖关系型数据库,所以一般都会考查一些关系型数据库的基础技术点
比如 MySQL 的架构
存储引擎
索引的数据结构
事务隔离级别
索引最左前缀原则
数据库端的性能优化技巧
Explain 的用法
索引优化
SQL 语法优化
参数配置优化
数据模型优化
数据模型优化指的是领域模型优化,比如表结构是否合理,表和表之间的关系是否合理,各业务域是否高内聚,低耦合等
缓存优化
2、架构理解
这部分可以根据候选人提供的架构方案
重点考查高并发和高可用设计、服务设计、服务治理、缓存设计等方面
系统的高并发设计
涉及系统的应用层、存储层和网络层
从网络 IO 到数据库 IO、数据库服务器的负载,CPU 和内存使用情况
再到应用层的负载均衡、反向代理、缓存、事务和锁、并发防重
以及应用服务器的负载,CPU 和内存使用情况
高可用设计方面
重点考查他对负载均衡、SOA、微服务、服务治理的理解,所设计的服务接口其粒度、依赖、位置是否合理
服务是否设计了分组、动态管理、限流、降级和监控,整个架构方案中各模块之间的强依赖是否有降级方案
关于硬实力部分的考查
都是基于候选人的架构方案去展开挖掘的
所有的关键技术点都是随着方案的展开一点点带出来的
在整个过程中
我们可以通过候选人对一些开源组件的理解程度判断其对技术的热爱程度
一般对技术敏感、挚爱且有追求的架构师往往喜欢研究开源技术,时刻关注新技术并去实践
有的还会持续为开源社区贡献代码,这样的架构师是我们所喜爱的
优秀的架构师
应有自己的时间任务管理心得
懂得识别风险
控制范围
估算时间和成本
把控质量
以及擅长多任务并发的管理与执行
架构师还需要有一个清晰的自我认知和职业规划
十分清楚地认识到自己的优势和不足,能充分发挥自身优势,不断补齐不足,知道自己追求的“和”不那么重要的,认识到为了达成目标的关键路径应该如何管理
沟通表达能力
在他描述方案和回答提问的过程中,逻辑是否清晰,思路是否闭环,结构化思维是否完整,根据这些基本能判断出来
协作能力
一般会设计一些场景让候选人回答
比如他自己所负责的线上系统出现故障之后作为架构师应该如何处理
性能测试团队测试出系统某功能性能无法满足需求该如何处理
对于有协作精神、有担当的架构师
一定会回答主动去分析原因
分析原因过程中主动协同开发和测试同学
找到原因之后设计出解决方案
并指导开发同学实施落地
最终从根本上解决问题,而不是将问题甩给开发或者测试
回归到能力模型中的核心
诚信、担当、品格
在我看来,这是本质,硬实力和软能力再好,没有核心也是达不到我们的要求的
当问到一个候选人不是很了解的技术点时,如果是支支吾吾,想方设法找各种理由,那我认为他在诚信上是存在问题的
更喜欢不懂就不装懂,坦诚、谦虚的人
对于品格,可以从候选人的言谈、举止,或者一些细节之处窥得一斑,也可以通过 HR 面试等环节得到补充
项目的技术难点
解决思路
0 条评论
下一页