@
LeeReamond @
noahlias @
InkStone 统一回复吧:
面试者不是没接触过就不能答,比如「虽然我没用过 Tornado ,但是如果是我来设计,我可能会这么这么实现」。
面试官也不是纠结标准答案,可以根据反馈引导面试者或者降低难度。你心目中知道你出这个题涉及到哪些知识,你围绕着把相关知识点问出来就行了,比如「 generator 是如何模拟实现 coroutine 的,它们的差异是啥?」、「协程是怎么调度的?」。
我没见过哪个面试是拿一份考题依次往下问,面试者依次说「没用过,不知道」的。
有没看过源码正好是筛选候选人的重要标准。不过涉及的一般是他自己的简历里提到的库或者重要的官方库。如果既不懂原理,又不看源码,那和只会 CURD 的调包侠有什么区别?
面试官并不需要确保面试者回答正确,而是考查他了解到了哪一步。
比如面试者回答了「 Model 应该需要元类来实现,但我想不起具体细节了」,我还会引导去问问「设置类或对象的属性值时为啥会触发校验」来判断是否了解 descriptor 。
FastAPI 有用 Pydantic 来做参数校验,它也有 BaseModel ,这就是挺常见的一种 ORM 之外的场景。这个场景下,你还能问 「 Pydantic 是怎么识别出这些属性的 type annotation 的?」、「 BaseModel 会不会引入一些坑和限制?」
还有单例之类的场景也会需要用到元类。如果面试者有用过的话,可以问问和其他单例模式的实现有啥区别。或者更进阶一点,当需要让一个抽象类的所有子类都实现单例模式时,应该如何正确声明 __call__ 方法的参数和返回值类型呢?