推荐学习书目
› 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
GreyChen223
V2EX  ›  Python

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

  •  2
     
  •   GreyChen223 · Mar 12, 2018 · 21305 views
    This topic created in 3158 days ago, the information mentioned may be changed or developed.
    比如你面试一个三年的 python 后端 大概会问哪些问题 或者觉得哪些东西非常重要呢?
    69 replies  •  2018-03-16 09:30:27 +08:00
    simple2025
    simple2025
    Mar 12, 2018
    1
    没有女朋友的都合格?
    jakobliao
    jakobliao
    Mar 12, 2018 via Android
    2
    hr ?
    xpresslink
    xpresslink
    Mar 12, 2018❤️1
    3
    只问你三道题,如果不百度能直接答上来你就是合格的三年后端。
    ( 1 )协程优点和缺点是什么?
    ( 2 )类定义中使用了 __slot__属性能起到什么作用?
    ( 3 )什么叫弱引用?主要的用途是干什么?
    IanPeverell
    IanPeverell
    Mar 12, 2018
    4
    @chenqh 没有女朋友怎么面向对象编程?怎么写 python ?
    Molita
    Molita
    Mar 12, 2018 via Android
    5
    @xpresslink 答不上来。。只有快一年。。
    huntzhan
    huntzhan
    Mar 12, 2018❤️13
    6
    问语言细节很没意思的,特别是 Python 这种瞎搞也不会爆炸的语言(

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

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

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

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

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

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


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


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

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

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

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

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

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

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

    ![]( https://imgs.bwangel.me/2018-03-16-012810.jpg)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2876 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 131ms · UTC 13:17 · PVG 21:17 · LAX 05:17 · JFK 08:17
    ♥ Do have faith in what you're doing.