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
huisezhiyin
V2EX  ›  Python

三年左右的 Python 后端 , 大概要能到什么样到水平才合格啊

  •  2
     
  •   huisezhiyin · 2018-03-12 19:57:42 +08:00 · 19549 次点击
    这是一个创建于 2449 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如你面试一个三年的 python 后端 大概会问哪些问题 或者觉得哪些东西非常重要呢?
    69 条回复    2018-03-16 09:30:27 +08:00
    chenqh
        1
    chenqh  
       2018-03-12 20:04:14 +08:00
    没有女朋友的都合格?
    jakobliao
        2
    jakobliao  
       2018-03-12 20:04:20 +08:00 via Android
    hr ?
    xpresslink
        3
    xpresslink  
       2018-03-12 20:29:22 +08:00   ❤️ 1
    只问你三道题,如果不百度能直接答上来你就是合格的三年后端。
    ( 1 )协程优点和缺点是什么?
    ( 2 )类定义中使用了 __slot__属性能起到什么作用?
    ( 3 )什么叫弱引用?主要的用途是干什么?
    IanPeverell
        4
    IanPeverell  
       2018-03-12 20:45:14 +08:00
    @chenqh 没有女朋友怎么面向对象编程?怎么写 python ?
    Molita
        5
    Molita  
       2018-03-12 20:56:28 +08:00 via Android
    @xpresslink 答不上来。。只有快一年。。
    huntzhan
        6
    huntzhan  
       2018-03-12 21:08:07 +08:00   ❤️ 13
    问语言细节很没意思的,特别是 Python 这种瞎搞也不会爆炸的语言(

    如果实在要问,我大概会出这些题:
    1. 描述一下 type 与 object 的关系。
    2. 叙述以下 metaclass 的应用场景,给一个实现例子。
    3. 描述以下 package 的打包过程以及常见的坑。
    4. 谈一下你认为最好的 Pyhton based infrastructure 结构。
    5. 如果要你设计 Tensorflow Python Client 的实现,你会怎么处理?
    6. 谈一下 Python 的优势与劣势。
    7. (现场看你答得怎么样再随机出题)
    klgd
        7
    klgd  
       2018-03-12 21:51:01 +08:00
    一个也不会,python 入门一个月
    misaka19000
        8
    misaka19000  
       2018-03-12 21:58:05 +08:00   ❤️ 1
    @xpresslink #3 已经背下来了 我现在已经是合格的后端了😊
    welkinzh
        9
    welkinzh  
       2018-03-12 22:24:13 +08:00
    马克一下
    chenqh
        10
    chenqh  
       2018-03-12 22:37:06 +08:00
    @IanPeverell python 可是面向 pypi 编程啊
    dreampython
        11
    dreampython  
       2018-03-12 22:43:30 +08:00 via iPhone
    非程序员,但也学了一段时间 python,说下自己的看法,针对有工作经验的面试,难道不是问你都做了哪些项目的哪些功能,然后根据你的回答去找一些知识点去考察这个人的技术水平?协程等 python 高级知识点,没有用到项目上,有考察的必要?
    ilumer
        12
    ilumer  
       2018-03-12 22:45:55 +08:00
    @huntzhan 一题不会 gg
    okzpy9425
        13
    okzpy9425  
       2018-03-12 22:49:45 +08:00
    @xpresslink 我应届。这几个都会。。。
    okzpy9425
        14
    okzpy9425  
       2018-03-12 22:51:05 +08:00
    我看拉钩上面招聘的 python 向来都是要求精通的啊。。。三年怎么的也得能写出 flask 这种框架把。。 如果三年还搞不出来怎么好意思去大拉钩投简历呢。怎么好意思写精通呢。
    Mojy
        15
    Mojy  
       2018-03-12 22:57:49 +08:00
    @xpresslink 2 年 python,表示一个也回答不上来
    Mojy
        16
    Mojy  
       2018-03-12 23:01:24 +08:00
    我也在思考这个问题,工作快三年了,现在是 python django 方向,发现现在也就是一直增删改查,并没有什么提高,感觉这样下去迟早要被淘汰的,目前还没有想持续学习的方向,很着急,很害怕!
    tangyouze
        17
    tangyouze  
       2018-03-12 23:24:04 +08:00   ❤️ 14
    对于市面上普遍的 三年 python 后端 翻译一下大概就是能够实现一个比较抽象的任务 比如(独立完成实现一个登录系统)
    同时写好完整的测试 在需求迭代的时候能够持续的发布 保证代码的质量~

    对于这样的工作 语言的细节绝对不是考察的重点 换句话说 你百度 5 分钟就能搞明白的问题 都不会是我在面试的时候关注的重点 而且你的目的大约只是实现业务逻辑的话 其实用不到语言层面太多的特性的 (比如我们公司几十万行 python 后端代码 感觉从来都没用到过弱引用 __slot__ 连类的重载都很少用上~)

    毕竟 大部分人的工作都不是写 Flask 框架 写 requests 库, 不过说回来 你得时刻保持一颗学习的心 万一哪天 CTO 拉你去写公司内部的 requests 库了呢

    对于一个 3 年的后端, 我大致会考察以下这些点

    * 基本的算法 数据结构 和解构问题的能力 大约等于能不能写一个棋类(随便什么棋类)的模拟
    * 对代码的重构能力 (写出好的变量名称 /提取常用的组件)
    * 代码的结构能足够的清晰 简洁 (从而能写出足够清晰简介的测试)
    * 对框架的熟悉 (python 特有) 其实你本来用的别的语言 学学怎么用框架也是分分钟的事情 看两个 example 就上手了
    * 学习能力
    * 沟通能力
    TesterCC
        18
    TesterCC  
       2018-03-12 23:53:36 +08:00 via Android
    @Mojy 同样,目前虽然做过各种各样的小项目,但是重复度很高,业务也不算复杂,在市场上几乎没有竞争力,现在因不可抗力出来面试被各种被鄙视,一首凉凉送给自己。
    stonymoon
        19
    stonymoon  
       2018-03-12 23:54:16 +08:00 via Android
    @xpresslink 我刚学一年半,因为有学 Android 和写过协程爬虫,感觉都能答上来。(然而我后端很烂,觉得问题和后端没什么关系)
    di94sh
        20
    di94sh  
       2018-03-13 00:02:37 +08:00 via Android
    @xpresslink 初学者
    ( 1 )协程优点:相对于进程省资源,相对于线程,没有共享数据段,更安全。缺点。。。
    ( 2 )插槽,只能使用插槽里声明的变量,控制动态添加变量。。
    ( 3 )弱引用不会增加引用计数,用途。。。
    di94sh
        21
    di94sh  
       2018-03-13 00:08:16 +08:00 via Android
    我觉得问问流畅的 Python 里的知识,和 python 最佳实践里的问题应该没错吧。。
    wekw
        22
    wekw  
       2018-03-13 00:40:51 +08:00   ❤️ 1
    @tangyouze 对于 PHP 程序员来说独立实现一个登录系统是入门水平。。。。。
    mario85
        23
    mario85  
       2018-03-13 01:31:06 +08:00 via iPhone
    @okzpy9425 似曾相识
    lolizeppelin
        24
    lolizeppelin  
       2018-03-13 08:07:42 +08:00 via Android
    openstack 里没出现过__slot__ 所以这玩意没什么用

    弱引用 openstack 里单例模式里用来存锁 可以更快释放临时对象


    package 打包过程不是很熟 反正写好 setup 文件 就用 RPM 封包了


    metaclass 这种黑魔法用得少 一个是单例模式用到 还有就是接口类用到 继承接口类的就不能继承单例模式类了
    以前还在 saltstack 的类封装工厂里见过 完全没有可读性 233
    shlyren
        25
    shlyren  
       2018-03-13 08:30:01 +08:00 via Android
    @okzpy9425 来,键盘给你,你来敲个 flask
    zhangchioulin
        26
    zhangchioulin  
       2018-03-13 08:35:50 +08:00 via iPhone
    3 年左右应该不限与 python 了,后端方向除了该注重本职工作的,也应该对服务器的常用软件配置熟悉,数据库的优化等都要会吧
    KgM4gLtF0shViDH3
        27
    KgM4gLtF0shViDH3  
       2018-03-13 08:54:11 +08:00
    @wekw #22 入门都谈不上吧,自己搭个框架才是入门水平,可以用第三方的路由和模板引擎。
    MyDaLin
        28
    MyDaLin  
       2018-03-13 09:25:39 +08:00
    不敢吭声
    Paddington
        29
    Paddington  
       2018-03-13 09:31:10 +08:00
    @di94sh 嗯嗯,这个回答很 general..

    其实这些就是概念,我想那位兄弟想问得不是这层
    wcsjtu
        30
    wcsjtu  
       2018-03-13 09:34:37 +08:00 via Android
    py 的语法,也就元编程稍微难一点,其他都没什么好问的吧!后端主要不应该是除开语言之外的其他技能么?
    huisezhiyin
        31
    huisezhiyin  
    OP
       2018-03-13 09:43:53 +08:00
    @xpresslink 弱引用几乎没用到过 但是这三个问题大概都是语言上的问题吧
    huisezhiyin
        32
    huisezhiyin  
    OP
       2018-03-13 09:45:46 +08:00
    @tangyouze 难道不会问一些有关于设计和架构方面的问题吗
    huisezhiyin
        33
    huisezhiyin  
    OP
       2018-03-13 09:46:09 +08:00
    @huntzhan 肯定不限于语言的
    shellbye
        34
    shellbye  
       2018-03-13 09:47:31 +08:00
    正好最近也在思考这个问题,看了一圈,@tangyouze 的回答和我面试时的考察基本一致。
    那种教科书上才会提到的知识点我是不会考察的。
    bomb77
        35
    bomb77  
       2018-03-13 09:53:52 +08:00
    上面问的我都不会,瑟瑟发抖,我是不是要失业了
    okzpy9425
        36
    okzpy9425  
       2018-03-13 10:14:09 +08:00
    @tangyouze 看了一圈回答就这个靠谱。。 具体的知识点都是可以很快学会的。重要的是解决问题,拆分问题的能力。 但是现实是您这样子的人很少,就算楼主去面试也同样有可能被不懂的人给毙掉(被那些不懂的在一面的时候拿俩那种百度的垃圾问题给干掉。。。。)。
    okzpy9425
        37
    okzpy9425  
       2018-03-13 10:15:35 +08:00
    @shlyren 我是黑一下拉钩上的那些公司。。毕竟人家要求高的很。 让我搞个 flask 这样厉害的我是搞不出来,但是搞个可以用的还是可以搞出来的。
    soulmine
        38
    soulmine  
       2018-03-13 10:21:04 +08:00
    给你一门新语言 比如 lua 你觉得多久能上手 一个星期够么 还是有任务只能闲暇看看的
    wekw
        39
    wekw  
       2018-03-13 10:42:46 +08:00
    @bestkayle 自己搭框架还是太难了,不过有人写了系列文章照着做就不太难了。
    hasbug
        40
    hasbug  
       2018-03-13 10:51:35 +08:00
    想着学门后端,考虑过 go,但本地没机会;刚还看 Python 的,一看这么多 3 年的大佬只能干这些事,那么····
    zhuyao
        41
    zhuyao  
       2018-03-13 10:52:52 +08:00
    知乎即视感
    assad
        42
    assad  
       2018-03-13 10:57:16 +08:00 via Android
    想问刁钻的问题,怎么都能问出来!问实用的,没几个能问
    ioth
        43
    ioth  
       2018-03-13 10:59:18 +08:00
    线程啊、内存泄露啊,必须的,人家 java 都这样。
    可惜没有 jvm
    felinx
        44
    felinx  
       2018-03-13 11:03:02 +08:00   ❤️ 1
    __slot__ 真没见过几次实际运用的
    BlockBlockBlock
        45
    BlockBlockBlock  
       2018-03-13 11:04:31 +08:00 via iPhone   ❤️ 1
    @hasbug 本该一个月学完的东西,一用用了三年,所以你懂的
    hasbug
        46
    hasbug  
       2018-03-13 11:10:17 +08:00
    @BlockBlockBlock 好吧。。。
    shlyren
        47
    shlyren  
       2018-03-13 11:34:29 +08:00 via Android
    @okzpy9425 可以可以
    icheeringsoul
        48
    icheeringsoul  
       2018-03-13 11:46:36 +08:00
    @xpresslink 这么说我合格了,,
    scp055
        49
    scp055  
       2018-03-13 11:48:31 +08:00
    mark
    zhangsen1992
        50
    zhangsen1992  
       2018-03-13 13:03:37 +08:00
    m
    xpresslink
        51
    xpresslink  
       2018-03-13 13:06:15 +08:00
    面试的问题必须理论和实践相结合,目的是为了快速了解对方的水平,所以问题要精练、典型、有实效性。
    我问的三道题,都是后端开发非常需要的技术点。你不能把后端狭隘地理解为用 Django 和 Flask 开发个 web 后端主要的工作就是 CRUD。比如让你用 socket 直接写个几万并发用户安卓音乐 app 后端呢?

    ( 1 )协程优点和缺点是什么? -----对于 Python 实现并发的重要解决方案之一
    ( 2 )类定义中使用了 __slot__属性能起到什么作用? -----海量的同类实例大幅减少内存占用的方案。
    ( 3 )什么叫弱引用?主要的用途是干什么? -----自己写缓存组件时常用的技术点,进而要理解 GC 的工作原理。
    huntzhan
        52
    huntzhan  
       2018-03-13 13:38:00 +08:00
    @huisezhiyin 那直接出算法题...
    0Kelvin
        53
    0Kelvin  
       2018-03-13 13:51:23 +08:00
    emmm.才看过几天 python 的路过。我觉得面试官先问项目,然后根据项目问,项目是如何优化并发、如何优化的内存、如何优化缓存之类的会比较让人理解。毕竟大家使用的技术不会那么一致吧╮(╯▽╰)╭还可以一起讨论讨论有什么更好的方案什么的
    ylmyyyy
        54
    ylmyyyy  
       2018-03-13 14:23:37 +08:00
    mark
    tairan2006
        55
    tairan2006  
       2018-03-13 14:37:26 +08:00
    如果做业务,看工程能力…说白了大部分时候都是些业务代码,算法啥的知道就行了。语言细节也不重要,不记得不能搜么…

    好多人答题一把好手,写起代码气死人
    tflimon
        56
    tflimon  
       2018-03-13 16:16:31 +08:00
    m
    flowarmor
        57
    flowarmor  
       2018-03-13 16:40:23 +08:00 via Android   ❤️ 2
    我工作两年不到,年后开始找工作,遇到过的高频考察知识点主要这些吧:

    1.常见语法 GIL
    2.常用数据结构算法手写
    3.MySQL 索引 /锁 /事务实现原理,给查询会不会用到索引之类的问题
    4.Redis 数据结构的实现,持久化主从复制实现
    5.RPC ,这块接触很少,我只用过 Thrift,讲了一个自己实现的带有容错降级功能 Thrift 连接池,这部分基本就过了
    6.MQ ,Kafka 原理之类的
    7.上面说的协程考察过 gevent 的实现

    还有面试官问过服务发现相关的知识,没用过表示不知道。
    noai
        58
    noai  
       2018-03-13 17:13:34 +08:00
    谢谢各位
    quietin
        59
    quietin  
       2018-03-13 18:06:07 +08:00
    @xpresslink 协程优点是相比线程更省资源, 因为不像线程切换会陷入内核态;缺点是学习有一定成本, 并且有些协和实现不好 debug
    __slot__用得比较少;
    弱引用的话, 以前缓存用过;
    已经 2 年不搞 py 了...
    Eds1995
        60
    Eds1995  
       2018-03-13 18:12:52 +08:00 via Android
    @flowarmor gevent 为啥用起来有点火葬场的感觉😄
    Sherlocker
        61
    Sherlocker  
       2018-03-13 18:19:11 +08:00
    mark
    l1093178
        62
    l1093178  
       2018-03-13 18:23:46 +08:00
    语言特性没啥好考的,反正 Python 语法规范也不详细
    元类可以考一考,用的机会不多,但是读 ORM 和其他框架源代码的时候有可能看到,理解元类的话能帮你更好地了解框架实现
    Decorator 可以考一考,这个在实际编码中还是用得很多的
    数据库索引设计和优化的一些基本原则得考,这个大部分情况下都会用到
    简单的算法得考一考,一点算法都不懂的工程师写出来的代码有时候会让人很无语
    如果是 Web 后端的话,HTTP 协议得熟悉吧,常见的头常见的方法的语义得能准确说出来吧
    还有就是给一些简单的函数让被试者说说如何应该实现的单元测试(其实这个问题很多人都答不好)

    剩下的就是根据被试者的领域来决定如何问问题了
    ljcarsenal
        63
    ljcarsenal  
       2018-03-13 18:49:13 +08:00
    看楼主头像 我想起了跑步机
    iPhone8
        64
    iPhone8  
       2018-03-13 19:46:24 +08:00
    m,都是大佬
    rim99
        65
    rim99  
       2018-03-13 22:16:55 +08:00 via iPhone
    @xpresslink 我能说我有点思路嘛?自学一年 python 的路过
    Gatler
        66
    Gatler  
       2018-03-14 23:27:47 +08:00 via Android
    战略性 mark
    zhaodashu
        67
    zhaodashu  
       2018-03-15 15:42:35 +08:00
    大神 请教个问题 django 项目中 migrate 更新数据库之后 出现 "'2018-03-15 07:25:44.306389+00:00' value must be either True or False." 如果您见过的话 请指点一下 感激不尽
    bwangel
        68
    bwangel  
       2018-03-16 09:29:34 +08:00
    看到那个问 __slot__ 属性的,
    bwangel
        69
    bwangel  
       2018-03-16 09:30:27 +08:00
    妈个蛋,习惯按 Ctrl + enter 换行了,又重复发了。

    ![]( https://imgs.bwangel.me/2018-03-16-012810.jpg)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2957 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:18 · PVG 21:18 · LAX 05:18 · JFK 08:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.