求助一些关于 Python 开发的面试题

185 天前
 axin2023

领导布置任务,让我这个小小运维去搞一些 python 的开发面试题;求助一下广大的 V 友们,能出一些 py 开发人员面试题吗,还望附上答案;一经采用,奖励 10 铜币,哈哈哈哈 面试题与港美股量化交易开发类相关最好; 再次感谢!!

3058 次点击
所在节点    Python
25 条回复
Rebely
185 天前
看具体职责和期望职级啊, 应届和高级, 后端和数据分析问的问题能一样吗
Mianmiss
185 天前
把问题描述清楚,去问 chatGPT
EndlessMemory
185 天前
具体看工作用得到的东西吧
chi1st
185 天前
哪个公司?我先给你面试题和答案,然后我去面试😆
Leonooo13
185 天前
问下数据结构,pep8 规范,项目经历,web 框架? 异步任务,chatgpt
tomczhen
185 天前
基于运维的角度,我个人会问项目依赖管理和多版本 python 共存怎么管理这两块。

“我机器上是正常的”这种理由可太常见了。
chauncychan
185 天前
1. 港股美股的一些基本概念,深一点的量化交易,多因子选股等,模拟盘系统必须要有
2. 技术面如 Pandas 、Numpy 、TA-Lib 是必须的了,其它的看岗位补充吧
3. 策略的一些 MACD 、KDJ 等主流,重要的是要能自己写算法
4. 其它例如机器学习、深度学习、择时交易策略等等。。
Sawyerhou
185 天前
隔壁刚好一道数据处理题

https://v2ex.com/t/1050302#reply10
keakon
185 天前
基本上这 2 题可以筛掉绝大部分水货:
1. Tornado 是如何在没有 async 语法的 Python 2 时代实现异步的?
2. ORM 框架的 Model 类是如何实现定义类属性,就可以约束实例的属性类型的?
GeekGao
185 天前
“为何算法工程师更偏好使用 python 呢? 你是怎么看待网络上有部分人说 python 的性能表现问题的?”
“python 内存管理有了解吗,如果线上发现某 python 进程内存爆表,你会如何处置?”
LeeReamond
185 天前
@keakon 感觉有点茴字的四种写法。

1 题的考察范围过于古早,毕竟 asyncio 在 3.4 版本就被引入,那是 2014 年的事了。async 语法和基础 api 在 3.5 以后基本稳定,并作为异步建议实现,饶是我感觉自己经验已经不浅,你问我史前科技我也是不了解的。你叫我猜测的话,我可以说也许它是 gevent 的猴子补丁实现的,或者用生成器也能实现,唯一问题在于谁关心 tornado 的实现细节呢? fastapi 已经是 py 框架战争很后期的产品,以拿来主义著称(首先需要有东西给它拿),即使是它也已经发布七年了,问这种东西是嫌现在 aio 原理和生态都太浅是吧?

2 题考察元类倒是确实看上去既有强逻辑性,又涉及到设计模式,看似是不错的排除水货方式。但是应用类别太过于局限,起码我个人写了这么多年码从未见过除了 ORM 以外的场景需要使用元类的地方。所以考察这部分知识对于开发人员来说意义是什么,想必贵司未来准备开发 ORM 产品了才是。例如我个人来说,你要问我懂不懂元类,我可以告诉你 100%完全懂,但是你考我那我不会,因为在此贴看到该问题前我已经有十年从未使用过该特性,我唯一记住的是我以前写 ORM 库的时候完全懂。
noahlias
184 天前
@keakon 这种问题就像问你 cpython 的 str.find 是如何实现的 你没看过源码你知道吗
问这种问题的除非你是招要做这个框架相关的开发,要不然没啥意义,不过还有人用 tornado ?
InkStone
184 天前
@keakon 你这个问题 recall 太低了,完全可能把会用 Python 的人也一起筛掉。

这种 corner case 的问题真的很好提,比如如何给 Python 的 object 类新增方法。但出题不是为了筛人,而是为了考察对方的水平。
keakon
184 天前
@LeeReamond
@noahlias
@InkStone
统一回复吧:

面试者不是没接触过就不能答,比如「虽然我没用过 Tornado ,但是如果是我来设计,我可能会这么这么实现」。
面试官也不是纠结标准答案,可以根据反馈引导面试者或者降低难度。你心目中知道你出这个题涉及到哪些知识,你围绕着把相关知识点问出来就行了,比如「 generator 是如何模拟实现 coroutine 的,它们的差异是啥?」、「协程是怎么调度的?」。
我没见过哪个面试是拿一份考题依次往下问,面试者依次说「没用过,不知道」的。

有没看过源码正好是筛选候选人的重要标准。不过涉及的一般是他自己的简历里提到的库或者重要的官方库。如果既不懂原理,又不看源码,那和只会 CURD 的调包侠有什么区别?

面试官并不需要确保面试者回答正确,而是考查他了解到了哪一步。
比如面试者回答了「 Model 应该需要元类来实现,但我想不起具体细节了」,我还会引导去问问「设置类或对象的属性值时为啥会触发校验」来判断是否了解 descriptor 。

FastAPI 有用 Pydantic 来做参数校验,它也有 BaseModel ,这就是挺常见的一种 ORM 之外的场景。这个场景下,你还能问 「 Pydantic 是怎么识别出这些属性的 type annotation 的?」、「 BaseModel 会不会引入一些坑和限制?」
还有单例之类的场景也会需要用到元类。如果面试者有用过的话,可以问问和其他单例模式的实现有啥区别。或者更进阶一点,当需要让一个抽象类的所有子类都实现单例模式时,应该如何正确声明 __call__ 方法的参数和返回值类型呢?
lolizeppelin
184 天前
@keakon

你提到的那种触发校验的需求除了 orm,在接口用 json schema 之类的方式解决更好
我见过的值得学习的元类使用比如 openstack 里的 ovoo 、callbacks(neutron 的一个内部消息广播)、单例实现等
不提倡的比如 saltstasck 那个类封装工厂的元类写法简直有病
描述器我写 py 的时候也就实际用过一两次,大部分涉及元类的代码就和正则一样..写的时候花半天去折腾、写完基本就忘了

说实话 py 的元类大概知道就够了,绝大部分情况都没啥用,太过依赖 py 特性的代码尽量少用

我觉得我 python 水平至少不是水货了, 但是没后面的帖子我都不知道你第二个问题在问啥
nulIptr
184 天前
太离谱的,python 这种胶水语言有啥可问的,而且以我的面试经验来讲基本上都是业务+leetcode ,很少问语言特性。古时候在金蝶写 ironpy 算不算 py 程序员?调用的方法全是 clr 提供的。。。
enrolls
184 天前
我博客的文章 blog/post/python_interview_question
lttzzlll
184 天前
Python 没啥好学的,懂了基本语法,不炫技就很好。真正应该学的是后端。https://bytebytego.com/
keakon
184 天前
@lolizeppelin json schema 校验完,你拿到的是一个没有任何类型信息的 dict ,后续需要使用到它的字段时,你需要手写 key ,编辑器也无法判断 value 的类型信息。你愿意花 10 分钟了解一下的话,可能就不会喜欢这种远古的 Python 代码了。

鉴于这帖的沟通比较费劲,后续信息我就不再回复了。
deplives
184 天前
@keakon #9 这俩题目作为面试题,挺没水平的。
1. 完全依赖于是否看过 Tornado 的源码。你要说你是想考察怎么通过考奇技淫巧实现的,那和 Tornado 有什么关系呢?所以这个问题纯粹就是在问:是否看过古早的 Tornado 源码
2. 这不就是个简单的 metaclass ,看起来你想通过这个问题问的也是 metaclass 但是你的问题问的过于宽泛,因为 metaclass 能实现的东西太多了,上到最完整的 ORM 框架,下到 最简单的单例模式,都可以用到,所以完全不知道你是想问什么,看起来这个问题完全就是在问:是否知道 python 的元类
所以这两个问题作为面试题可以说是毫无营养

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1050072

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX