技术面试 - 评估系统架构设计能力
2023-02-17号
一. 在技术面试之中,需要避免常见的坑
- 面试官排斥候选人提出的不一样的思路
如果对方在技术思路上,和面试官已知的思路不一致,面试官可能产生排斥心理,过早下结论、打标签: 思路不正确,导致后续沟通困难进行。
例如对于,分布式事务的控制,候选人可能会用到不同的解决方案,如果面试官拒绝深入了解探讨候选人的思路,可能导致在这上面产生错误的判断
对于面试官不熟悉的解决方案,或者他候选人给出的其他的思路,可以引导,给出挑战,要求分析可能的利弊,对比其他的方案,以此讨论与互动,
- 跟候选人无意义的深挖细节,
例如候选人不是非常熟悉 http返回代码,如果候选人不是很清楚这些知识点,如果再进一步去深挖,301,302 这些区别,对收集信息判断候选人水准帮助不大
二 怎样考察候选人水平
- 考察候选人过往的典型工作案例
1.1)考察面试候选人的水平,请候选人讲一下自己最熟悉的做过的系统
对于候选人曾经做过最熟悉的事情,沟通讨论的时候,其实啊一方面是反映的是过往经验,考察真实性,做的技术难度和挑战性,其中的贡献,对技术方案的理解;另一方面也与候选人记忆准确性有关系。
1.2) 因为该种方法,是由候选人主讲其熟悉的系统,涉及的技术,遇到的挑战,克服的经历,
此种方法,对面试官有较高的要求,如果面试官经验缺乏,遇到不熟悉的领域,难以深入追问一针见血的问题,就没有办法获取到充分有说服力的评估证据,可能导致误判。
1.3) 考察分为宏观 微观
宏观是 系统解决的业务问题?架构?模块组件间交互?系统的瓶颈?问题?
微观是:选择几个点,挖掘到 具体是怎样实现? 深入的要求: 具体,细节
例如性能改进,技术的实现,性能度量?性能测试?系统并发,吞吐?瓶颈?
1.4) 这不是考察记忆,看是否流利背诵答案,而是确认候选人对其中的核心问题有清晰准确认识,
不是钻牛角尖,不是考察记忆
- 第二就是给出一个实际的问题,细化分析延伸成对系统的设计问题,
2.1) 给出一个模拟案例,迷你项目,给出问题,层层递进,逐步细化
延申成为系统架构设计,考察候选人
2.2) 要求候选人就,系统的用户角色,用例,系统的功能模块,澄清需求,理清思路,给出方案,
候选人可以画图作答
在候选人给出方案的基础上,进一步要求澄清,给出挑战
例如对实时、并发的挑战,给出方案,
要求 模块服务的合理拆分 等等
这个面试官可以预先设计案例场景,分层递进的挑战,熟悉可能的讨论方向及分支。把控考察的方向。不过对候选人不熟悉的场景,可能难以体现其实际水准。
== 摘引自 ==
技术面试官识人手册
https://time.geekbang.org/column/article/364712