为啥好多面试 Python 的连魔法函数都不知道?

2021-11-19 10:38:08 +08:00
 aladdinding

Python 开发应届生岗位

有的甚至还写的精通 Python

话说 Python 的精髓就是鸭子类型吧,有的直接说没听过

估计都是把 Python 当作面向过程来写了,怪不得觉得语法简单

我感觉 Python 并不简单。。

18059 次点击
所在节点    Python
197 条回复
uni
2021-11-19 10:57:30 +08:00
很讨厌面试问名词的,我觉得更好的问法是给一个具体的场景然后问他怎么实现
fgwmlhdkkkw
2021-11-19 10:59:48 +08:00
但是我看你打的这段文字,我想给你一拳,栽种。
没有对人的基本尊重,“估计”……,闻道有先后而已,别看不起人。
ohwind
2021-11-19 11:00:13 +08:00
@ytmsdy C++ 这类问题反而更多......
bytesfold
2021-11-19 11:03:04 +08:00
不如说些问题看看有没有解决方案,非要把 Python 搞成像 Java 那样卷?
efaun
2021-11-19 11:03:27 +08:00
@ytmsdy #20 更大的问题是代码提示太差, 用 . 经常联想不出来, 或者联想错
wangxin13g
2021-11-19 11:05:00 +08:00
我一直没理解 duck typing 的意义在哪
为了彻底消灭继承么
duck typing 的工程化项目写的不多 理解错了见谅
learningman
2021-11-19 11:10:37 +08:00
原来__init__就算吗,我还以为说的是__code__
dangyuluo
2021-11-19 11:11:19 +08:00
不能怪应届生,因为 Python 这些魔法函数本来就是为了省事才存在的,而在大学里最不缺的就是时间。举个例子`__next__ `是为了能让 Class 支持迭代器,但是有很多其他代码长一点的办法来实现,所以大学生可能没有过接触。

我觉得面试,尤其是应届生面试的时候还是要考察对基础知识掌握是否牢固,而不是这种语法糖。
dangyuluo
2021-11-19 11:12:42 +08:00
@ohwind 因为学 C++的人没两步就能遇到 overload operator 了😅不需要等到工作后才知道
aloxaf
2021-11-19 11:22:38 +08:00
有句话怎么说的来着,人的知识就像一个圆,知道的越多,圈就越大,就越能意识到自己不知道的有多少。

大部分应届生的圈都很小,所以会产生「我已经精通了 Python 」的幻觉也无可厚非。
Osk
2021-11-19 11:22:48 +08:00
忘名了, 尴尬, 看标题也有点懵, 看下面的回复才明白...

__repr__ __str__ __eq__ __len__ 等运算和比较的用得多一点, 因为确实好用, 但已经忘了他们叫魔法方法了😭
skinny
2021-11-19 11:22:56 +08:00
乍看之下我还寻思难道又有我不懂的 Python 特性和语法,看下来我就无语了,你特么就不能说人话,你这就跟在 C++、C#、Java 面试里问别人知不知道魔法函数一样,构造函数就构造函数,操作符函数或方法就操作符函数或方法,你就不能说个实际需求,比如序列化、支持某些操作符、元编程具体场景?还让别人猜你这词什么意思,暗示来暗示去,我一旁观者看着都累。
sagaxu
2021-11-19 11:28:04 +08:00
@ipwx key 一律用作为 id 的 int 或者 string ,sort 每次自定义比较 lambda ,也不是不 work 。

序列号有 json ,一般不处理 state 也问题不大。

with 就更少用了,finally 中清理也不差,而且 with 跟 pypy 不兼容。

decorater 和 descriptor 就更加用不上了,学生大都从 C 语言入门,很多时候只是把 python 之类当做不用管内存而且内置数据结构更丰富的语言在用。
youngce
2021-11-19 11:31:39 +08:00
面试的时候尽量减少出现一些官方文档上提及比较少的名词,比如所谓的魔法函数,换一种问法:python 类的内置函数和方法你知道哪些?

再比如想考察一下面向对象的思想,让候选人讲讲常见的设计模式如何实践、SOLID 设计原则也是不错的选择

当然如果只是想找到能和自己对上暗号的候选人当我没说
locoz
2021-11-19 11:34:11 +08:00
还是得看具体领域和做的事情吧,如果没有什么深入定制化的需求,其实真用不上这些高级玩法,不会用很正常。

以爬虫领域为例,自己写框架的肯定会用上很多高级玩法来让使用起来更方便,但是单纯用框架去采集数据的就压根不需要用,那后者当然也就大概率不会去了解这些。
masterclock
2021-11-19 11:40:58 +08:00
原来 __init__ 这样的东西叫魔法函数啊
查了一下 python glossary
magic method
An informal synonym for special method.
windfarer
2021-11-19 11:41:59 +08:00
面试问语言细节没太大意思,还不如问问,假如你发现有个接口特别慢,怎么排查
ysc3839
2021-11-19 11:48:10 +08:00
@masterclock +1
原来 __init__ 这样的东西叫魔法函数啊,我都是叫 operator 的……
Juszoe
2021-11-19 11:52:02 +08:00
对应届生问这种工程细节其实没啥意思,基础好的稍微自学都能懂了,如何把“基础好”的应届生筛选出来或许才是更重要的
learnshare
2021-11-19 11:57:07 +08:00
针对程序员的面试,应该问问他的项目经验,然后考察问题的分析和解决能力
不要背书式的考察,不熟悉的东西他也讲不明白,临时准备的东西也背不出来

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

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

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

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

© 2021 V2EX