硅谷公司系统设计面试经验(二)
极客时间编辑部
讲述:初明明大小:4.11M时长:04:30
在上一篇文章中,我们分享了 Landing AI Tech Lead 何平洋总结的系统设计环节面试经验,包括如何思考问题,怎样定义系统的成功,系统组件设计需要注意哪些问题以及容量估算。接下来继续分享面试中的注意事项。
提出多种方案,利弊权衡,做出选择
首先,面试官应当鼓励候选人给出不同的解决方案,并询问每种方案的优缺点。在面试过程中,偶尔会遇到优柔寡断的候选人,面试官应该鼓励候选人做出最终决定,因为不选择的话往往要比做出错误选择的代价还高。
挖掘 T 型人才
T 型人才是指一个人的知识点既有深度又有广度,他对全栈的每个部分都有一定的了解,但是又对某一个或几个领域有很深的研究。T 型人才的深度可以帮助公司解决复杂的问题,广度可以让他们更好的与人合作。
要想找到 T 型人才,就需要在面试过程中深度探讨一些技术细节。面试官可以提前阅读候选人的简历,并找到候选人所熟知的领域,在面试的过程中可以花多一点时间讨论这些领域,深挖细节。不过也要注意避免因讨论过多的细节,没能给候选人足够时间设计出端到端的解决方案。
把握面试的节奏
如果面试时间是一个小时的话,何平洋一般这么分割:
0-5 分钟:问候选人是不是需要喝水上卫生间,简单的互相介绍一下,问问候选人之前的经历。从候选人熟悉的内容开始有助于缓解候选人紧张的情绪。
5-55 分钟:做题。这个时候你需要尽量收集候选人的信息。所以如果候选人卡在某个具体的问题上太久,你可以适当地给一些提示,如果在一个问题上花费太多的时间,他就没有机会把系统设计完整了。
55-60 分钟:回答候选人的问题。这个环节有两个事情需要做:第一是推销你的公司,第二是从其他方面了解候选人。候选人的问题很多时候都反映出了工作中哪些地方对他 / 她重要,比如公司文化、工作时长等。
如果面试时间是 45 分钟,何平洋会把中间做题的时间缩短,前后的十分钟保持不变。因为这两部分对面试十分重要,不能缩的更短了。
根据候选人的等级和岗位调整题目
对于初级工程师来说,OOP 设计比较合适。对于中级工程师的要求是可以做小型项目,所以可以问面向服务的架构设计。高级工程师则需要涉及到可扩展性、高可用、跨数据中心等问题。资深工程师在高级工程师的基础上还要从多方面考虑系统的操作,比如可测试性、安全性和可调试性等,对于系统中每个组成部分都要有比高级工程师更深刻的理解。
对于不同的岗位,系统面试的侧重点也应该不同。在选择面试题目和难度的时候都要根据工程师的级别和岗位做出相应的调整,否则既无法做出正确的判断,候选人的面试体验也很差。
建立系统设计面试官培训流程
系统设计面试的难点在于,问题通常没有统一的答案和标准。根据候选人申请的岗位、级别、背景不同,面试官要对题目进行调整,因此设立面试培训流程就很有帮助。
流程一般包括三步:培训,实例分析和面试观摩。培训的内容可以以本文做参考。实例分析中,经验丰富的面试官找一到两道真题,掰开揉碎讲给学习者听,通过例子告诉学习者哪里是考点、哪里是难点、如何给提示、如何评级等。面试观摩一般分为两步:观摩和反向观摩。观摩一般是去旁听有经验的面试官面试,反向观摩则是有经验的面试官去旁听学习者的面试,提出改进意见并且打分。对于新的题目,在拿来面试之前,一定要找同事来模拟,以保证题目的质量和评判标准的准确性。
俗话说:文无第一,武无第二。如果说编程题目是比武的话,系统设计就是比文了。系统设计没有正确的答案,只有适合不适合。面试官不应心存完美的设计,并要求候选人给出一模一样的答案。对于同一道题目,每个候选人都会给出不一样的设计。面试官要分析每一个设计的利弊。
以上就是何平洋对于系统设计面试的一些经验分享,希望给你带来参考价值。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论