V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
axin2023
V2EX  ›  Python

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

  •  
  •   axin2023 · 9 天前 · 2156 次点击

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

    24 条回复    2024-06-23 12:33:43 +08:00
    Rebely
        1
    Rebely  
       9 天前
    看具体职责和期望职级啊, 应届和高级, 后端和数据分析问的问题能一样吗
    Mianmiss
        2
    Mianmiss  
       9 天前
    把问题描述清楚,去问 chatGPT
    EndlessMemory
        3
    EndlessMemory  
       9 天前
    具体看工作用得到的东西吧
    chi1st
        4
    chi1st  
       9 天前 via Android
    哪个公司?我先给你面试题和答案,然后我去面试😆
    Leonooo13
        5
    Leonooo13  
       9 天前 via Android
    问下数据结构,pep8 规范,项目经历,web 框架? 异步任务,chatgpt
    tomczhen
        6
    tomczhen  
       9 天前
    基于运维的角度,我个人会问项目依赖管理和多版本 python 共存怎么管理这两块。

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

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

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

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

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

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

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

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

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

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

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

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

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

    json schema 或者 open api 这种前后端跨语言公用的东西才是正道
    你用元类写完还要自己搞一套前端 api 文档生成
    这玩意有现成的么?走 json schenm 和 open api 就有现成的

    现在跨语言开发非常普遍,比如前端要重现一部分你的逻辑,你用元类实现,你让别人怎么抄
    非必要尽量少用语言特性化写法,大部分地方折腾元类就是邪道
    levelworm
        22
    levelworm  
       7 天前
    @keakon 我觉得还不如用 Python 实现一个 Python subset 的解释器。直接看思路和伪代码即可。

    a subset of operators, while loop, if-else branch, function call 。就这些就行了。反正都是考用不到的东西,还不如这个更有意思一些。。。
    levelworm
        23
    levelworm  
       7 天前
    @levelworm 想要难一些的话,要求生成 AST 。不过这玩意实在是没必要生成 AST ,直接在 parser 里 eval 就完了。

    或者这样,给一个解释器的雏形,然后让他实现 break 功能。
    luvHat1988
        24
    luvHat1988  
       3 天前
    @keakon 你是不是没玩过 Java 的 mybatis,或者 hibernate, 玩过之后就不会说出这么没意思的话术了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1263 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:35 · PVG 07:35 · LAX 16:35 · JFK 19:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.