领导布置任务,让我这个小小运维去搞一些 python 的开发面试题;求助一下广大的 V 友们,能出一些 py 开发人员面试题吗,还望附上答案;一经采用,奖励 10 铜币,哈哈哈哈 面试题与港美股量化交易开发类相关最好; 再次感谢!!
1
Rebely 157 天前
看具体职责和期望职级啊, 应届和高级, 后端和数据分析问的问题能一样吗
|
2
Mianmiss 157 天前
把问题描述清楚,去问 chatGPT
|
3
EndlessMemory 157 天前
具体看工作用得到的东西吧
|
4
chi1st 157 天前 via Android
哪个公司?我先给你面试题和答案,然后我去面试😆
|
5
Leonooo13 157 天前 via Android
问下数据结构,pep8 规范,项目经历,web 框架? 异步任务,chatgpt
|
6
tomczhen 157 天前
基于运维的角度,我个人会问项目依赖管理和多版本 python 共存怎么管理这两块。
“我机器上是正常的”这种理由可太常见了。 |
7
chauncychan 157 天前
1. 港股美股的一些基本概念,深一点的量化交易,多因子选股等,模拟盘系统必须要有
2. 技术面如 Pandas 、Numpy 、TA-Lib 是必须的了,其它的看岗位补充吧 3. 策略的一些 MACD 、KDJ 等主流,重要的是要能自己写算法 4. 其它例如机器学习、深度学习、择时交易策略等等。。 |
8
Sawyerhou 156 天前
|
9
keakon 156 天前 1
基本上这 2 题可以筛掉绝大部分水货:
1. Tornado 是如何在没有 async 语法的 Python 2 时代实现异步的? 2. ORM 框架的 Model 类是如何实现定义类属性,就可以约束实例的属性类型的? |
10
GeekGao 156 天前
“为何算法工程师更偏好使用 python 呢? 你是怎么看待网络上有部分人说 python 的性能表现问题的?”
“python 内存管理有了解吗,如果线上发现某 python 进程内存爆表,你会如何处置?” |
11
LeeReamond 156 天前 3
@keakon 感觉有点茴字的四种写法。
1 题的考察范围过于古早,毕竟 asyncio 在 3.4 版本就被引入,那是 2014 年的事了。async 语法和基础 api 在 3.5 以后基本稳定,并作为异步建议实现,饶是我感觉自己经验已经不浅,你问我史前科技我也是不了解的。你叫我猜测的话,我可以说也许它是 gevent 的猴子补丁实现的,或者用生成器也能实现,唯一问题在于谁关心 tornado 的实现细节呢? fastapi 已经是 py 框架战争很后期的产品,以拿来主义著称(首先需要有东西给它拿),即使是它也已经发布七年了,问这种东西是嫌现在 aio 原理和生态都太浅是吧? 2 题考察元类倒是确实看上去既有强逻辑性,又涉及到设计模式,看似是不错的排除水货方式。但是应用类别太过于局限,起码我个人写了这么多年码从未见过除了 ORM 以外的场景需要使用元类的地方。所以考察这部分知识对于开发人员来说意义是什么,想必贵司未来准备开发 ORM 产品了才是。例如我个人来说,你要问我懂不懂元类,我可以告诉你 100%完全懂,但是你考我那我不会,因为在此贴看到该问题前我已经有十年从未使用过该特性,我唯一记住的是我以前写 ORM 库的时候完全懂。 |
12
noahlias 156 天前
@keakon 这种问题就像问你 cpython 的 str.find 是如何实现的 你没看过源码你知道吗
问这种问题的除非你是招要做这个框架相关的开发,要不然没啥意义,不过还有人用 tornado ? |
13
InkStone 156 天前
@keakon 你这个问题 recall 太低了,完全可能把会用 Python 的人也一起筛掉。
这种 corner case 的问题真的很好提,比如如何给 Python 的 object 类新增方法。但出题不是为了筛人,而是为了考察对方的水平。 |
14
keakon 156 天前
@LeeReamond
@noahlias @InkStone 统一回复吧: 面试者不是没接触过就不能答,比如「虽然我没用过 Tornado ,但是如果是我来设计,我可能会这么这么实现」。 面试官也不是纠结标准答案,可以根据反馈引导面试者或者降低难度。你心目中知道你出这个题涉及到哪些知识,你围绕着把相关知识点问出来就行了,比如「 generator 是如何模拟实现 coroutine 的,它们的差异是啥?」、「协程是怎么调度的?」。 我没见过哪个面试是拿一份考题依次往下问,面试者依次说「没用过,不知道」的。 有没看过源码正好是筛选候选人的重要标准。不过涉及的一般是他自己的简历里提到的库或者重要的官方库。如果既不懂原理,又不看源码,那和只会 CURD 的调包侠有什么区别? 面试官并不需要确保面试者回答正确,而是考查他了解到了哪一步。 比如面试者回答了「 Model 应该需要元类来实现,但我想不起具体细节了」,我还会引导去问问「设置类或对象的属性值时为啥会触发校验」来判断是否了解 descriptor 。 FastAPI 有用 Pydantic 来做参数校验,它也有 BaseModel ,这就是挺常见的一种 ORM 之外的场景。这个场景下,你还能问 「 Pydantic 是怎么识别出这些属性的 type annotation 的?」、「 BaseModel 会不会引入一些坑和限制?」 还有单例之类的场景也会需要用到元类。如果面试者有用过的话,可以问问和其他单例模式的实现有啥区别。或者更进阶一点,当需要让一个抽象类的所有子类都实现单例模式时,应该如何正确声明 __call__ 方法的参数和返回值类型呢? |
15
lolizeppelin 156 天前
@keakon
你提到的那种触发校验的需求除了 orm,在接口用 json schema 之类的方式解决更好 我见过的值得学习的元类使用比如 openstack 里的 ovoo 、callbacks(neutron 的一个内部消息广播)、单例实现等 不提倡的比如 saltstasck 那个类封装工厂的元类写法简直有病 描述器我写 py 的时候也就实际用过一两次,大部分涉及元类的代码就和正则一样..写的时候花半天去折腾、写完基本就忘了 说实话 py 的元类大概知道就够了,绝大部分情况都没啥用,太过依赖 py 特性的代码尽量少用 我觉得我 python 水平至少不是水货了, 但是没后面的帖子我都不知道你第二个问题在问啥 |
16
nulIptr 156 天前
太离谱的,python 这种胶水语言有啥可问的,而且以我的面试经验来讲基本上都是业务+leetcode ,很少问语言特性。古时候在金蝶写 ironpy 算不算 py 程序员?调用的方法全是 clr 提供的。。。
|
17
enrolls 156 天前
我博客的文章 blog/post/python_interview_question
|
18
lttzzlll 156 天前
Python 没啥好学的,懂了基本语法,不炫技就很好。真正应该学的是后端。https://bytebytego.com/
|
19
keakon 156 天前
@lolizeppelin json schema 校验完,你拿到的是一个没有任何类型信息的 dict ,后续需要使用到它的字段时,你需要手写 key ,编辑器也无法判断 value 的类型信息。你愿意花 10 分钟了解一下的话,可能就不会喜欢这种远古的 Python 代码了。
鉴于这帖的沟通比较费劲,后续信息我就不再回复了。 |
20
deplives 156 天前 1
@keakon #9 这俩题目作为面试题,挺没水平的。
1. 完全依赖于是否看过 Tornado 的源码。你要说你是想考察怎么通过考奇技淫巧实现的,那和 Tornado 有什么关系呢?所以这个问题纯粹就是在问:是否看过古早的 Tornado 源码 2. 这不就是个简单的 metaclass ,看起来你想通过这个问题问的也是 metaclass 但是你的问题问的过于宽泛,因为 metaclass 能实现的东西太多了,上到最完整的 ORM 框架,下到 最简单的单例模式,都可以用到,所以完全不知道你是想问什么,看起来这个问题完全就是在问:是否知道 python 的元类 所以这两个问题作为面试题可以说是毫无营养 |
21
lolizeppelin 156 天前
你这种做法完全为了自己 py 写得爽
json schema 或者 open api 这种前后端跨语言公用的东西才是正道 你用元类写完还要自己搞一套前端 api 文档生成 这玩意有现成的么?走 json schenm 和 open api 就有现成的 现在跨语言开发非常普遍,比如前端要重现一部分你的逻辑,你用元类实现,你让别人怎么抄 非必要尽量少用语言特性化写法,大部分地方折腾元类就是邪道 |
22
levelworm 154 天前
@keakon 我觉得还不如用 Python 实现一个 Python subset 的解释器。直接看思路和伪代码即可。
a subset of operators, while loop, if-else branch, function call 。就这些就行了。反正都是考用不到的东西,还不如这个更有意思一些。。。 |
23
levelworm 154 天前
@levelworm 想要难一些的话,要求生成 AST 。不过这玩意实在是没必要生成 AST ,直接在 parser 里 eval 就完了。
或者这样,给一个解释器的雏形,然后让他实现 break 功能。 |
24
luvHat1988 151 天前
@keakon 你是不是没玩过 Java 的 mybatis,或者 hibernate, 玩过之后就不会说出这么没意思的话术了
|
25
daishuge 137 天前 via Android
|