由于业务的需要,最近面试了很多数据库候选人。发现很多候选人在面试准备时会有一些普遍的误区,借此机会展开聊聊我作为面试官的一些建议。这次主要讲四个误区:代码基础差、工程素养弱、沟通思维无、知识框架碎。
数据库是一个工程性极强的领域,因此代码是面试考察中非常重要的一个环节,可以说代码写得好,即使背景稍弱,也可能会通过面试;但反之则不然,遇到过一些候选人,分布式事务的一些细节可以说的头头是道,但却连链表等基础数据结构都写不太明白,这个情况就是想给过也有心无力。
说到代码,我们并不期望候选人要能做出多么难的算法题。反而,会更针对偏基础、偏工程的方向考察。
现代的数据库代码,动辄数十万行,如果没有良好的代码规范,会在项目演进过程中很快变得不可维护。因此如果候选人在写代码时能够比较注意代码风格、体现出工程素养,会非常加分;反之如果胡乱命名、没有基本的抽象和复用,则会很减分。
另一个很能够体现工程素养的点是:解决实际问题的思路。比如当面试官考察一些工程代码时,题目可能比较模糊、宏大。这时候候选人如果能:
其中,最后一点非常重要,因为面试时间通常都很有限,如果你很快陷入某一块的工程细节中,比如如何读写文件、如何取舍 buffer 大小、如何处理 offset ,轻则时间到了还写不完、重则由于紧张陷进去根本出不来。这时候一定要注意使用最小可用模型、自顶向下逐步求精等思想,因为这也是我们在实际工作中完成任务常见的思想,是非常能够体现工程素养的一个侧面。
本篇文章出自我的持续更新的小报童技术专栏:《系统日知录》,还剩下两小段,欢迎前往👉专栏订阅查看。点击最下面”跳转原文“也可以直接跳转。
专栏每周两更,专注分布式系统、存储、数据库方向,现有文章列表如下,欢迎订阅支持。
参考资料
[1]
排序算法: https://www.zhihu.com/question/51337272/answer/12538535