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

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

Python 开发应届生岗位

有的甚至还写的精通 Python

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

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

我感觉 Python 并不简单。。

17601 次点击
所在节点    Python
197 条回复
canwushuang
2021-11-20 09:31:50 +08:00
本身程序就是博大精深的,即便是一期期的 pep 新功能,都是一辈子需要学习的。精通只是面试的术语吧,大学 4 年学这学那,怎么可能全身心投入在解决项目和优化代码中?“精通”就当是基本会,“熟练”就是会安装和部署环境变量吧。。。
binux
2021-11-20 10:06:12 +08:00
@twl007 我说的有哪一个不在 python data model 里面?
agagega
2021-11-20 10:42:08 +08:00
😅楼主说个魔法方法都要被某些人杠是孔乙己,那这些人看到 Scala 、Haskell 这类语言是不是要气得焚书坑儒?
amber0317
2021-11-20 10:47:22 +08:00
但凡正经学过 Python 的人,至少应该知道有“魔法函数”(魔术方法,whatever )这么个名词存在,而且至少应该知道它可以用来覆盖操作符或者 len 、str 这种内置方法的返回值。
业务中确实用得少,不会用完全可以理解,但完全不知道,应届生都不应该。我只能认为是根本没学过 Python 。
写 C with classes 的人不能说自己精通 C++吧,怎么到 Python 这里大家就宽容起来了呢
gengchun
2021-11-20 11:42:07 +08:00
这么多人回复。

就没有人告诉 OP 标准教程里面是没有 *魔法* 方法的称呼的。事实上官方翻译是 *魔术* 。而且 magic 的说法一般是和测试相关的文档里中的比较多。

Reference 里面介绍这个概念用的是 special 。

直接看英文文档,没有听说过这个词是很正常的事情。

对于个人译者不遵照官方约定来翻译这个名词,如果熟悉翻译的流程的话,这个也是很上火的事情。看到还有人用,更是上火。

即然只是面试程序员,而不是说布道者什么的。就不要太关心名词熟悉不熟悉。至少看一眼对方的代码。

如果特别关心对方对于这个概念的掌握程度,就让人直接手写一个 __repr__ 不就完了?自己事先打印一个 class ,让对方补齐一下,知道这个概念,也就五分钟的事情。

再说招人本来就是这样,就算招月薪五万的,这也只是说明你的招聘方法和你的预期不匹配,和劳动力市场的质量有什么关系?
oakcdrom
2021-11-20 12:10:35 +08:00
这就是所谓的面试造火箭吧。。。一个实习岗位而已。。。能看明白代码就行了。。
sidkang
2021-11-20 12:23:45 +08:00
我们需要的是认同 Python 的设计哲学,热爱 Python 的人。

对于应届生来说,应该如何才会热爱一门编程语言呢?想想感觉真的很难啊。
arischow
2021-11-20 12:54:09 +08:00
不知道就是不知道嘛,不过到了 Python ,在这个社区就有很多人不愿意承认咯。而且还有很多人说 Python 有啥好学的呢,半天就能看完语法了~

我只能说希望 op 不要给某些人搞差。
arischow
2021-11-20 12:54:17 +08:00
* op 心情
Divinook
2021-11-20 13:00:38 +08:00
强烈同意楼主,这有什么好扣帽子的,既然写了精通 python ,面试的是 python 岗位,那连这些基本的特性都不清楚也太不应该了。
Python magic method, asyncio, monkey patch 都是实用且有效的,如果一点都没接触过,和脚本小子又有什么区别,上面老哥也说了,问八股文被喷,问算法被喷,现在连问实际应用都要被喷了吗?
Divinook
2021-11-20 13:07:11 +08:00
@newtype0092 老哥说的太好了 233
WilliamYang
2021-11-20 16:13:27 +08:00
支持楼主,虽然我很少用 Python 了,但我很认同 Python 的设计哲学,另外招到适合自己团队的人,很重要
Mirage09
2021-11-20 16:26:02 +08:00
奇怪,我还从来没听过什么魔法函数。。magic something 总给我一种用奇怪的 hacking method 实现目的的感觉。。

另外纠结这些名词干什么。。还设计哲学,这些乱七八糟的入职以后看看 doc 看看 cr 不是一两个小时就能搞定了?你们不做 onboard 的么?
Mirage09
2021-11-20 16:29:23 +08:00
以及我个人觉得,面试的时候是让你去引导,收集对方懂什么,而不是让你去发现对方不懂什么,除非你就是想 show off ,那没的说
37Y37
2021-11-20 16:42:02 +08:00
完了完了,我先声明下,这么多年我写的都不是 python
jusonalien
2021-11-20 19:15:25 +08:00
楼主要想清楚,你需要的究竟是
跟你思维价值观一致的人
还是能跟你一起互相成长并肩作战的人
yzbythesea
2021-11-20 20:09:53 +08:00
我当年作为应届生面试拿 offer ,有一轮 try catch exception 都没写明白,面试官当场还安慰我说学生应该很少接触这个。我遇到过的应届生,不会写 Java main 函数,collection sort 忘记怎么用的,甚至 import arraylist 忘了的,我都给过了。面试是去发掘一个人的才华和潜能,而不是去挑刺,去考察一些你比人家多看一眼的知识点。
vincexu
2021-11-20 20:11:28 +08:00
这帖子为什么到现在还能继续吵啊,帖子上的 `append` 不是写了并不是直接问的语法细节吗,而是问的应用场景啊。楼里很多人能不能别看到面试问题就开始高潮啊,就比如最简单的``__repr__`` 你写 python 怎么可能会用不到啊,不然你调试 print 打印啥,打印对象的内存地址吗。面试考察是个多维度的东西,当然狂扣语法细节是个非常傻逼的事情,但问题来了写 Python 写 web 确实会用到这东西,而且楼主问的也是使用场景,翻译我觉得并不会造成理解问题 ,但凡有正经学习过 python 的,都不可能不知道这东西。
gengchun
2021-11-20 20:23:16 +08:00
@vincexu 这个贴子本来就是因为使用了不恰当的名词翻译,所以才会吵到现在。当然是理解上的问题。再 append ,标题还是这个。一定会有人看到这个名词就觉得不爽。

而且另外一个问题,一个面试者,指责被面试的人水平太低,这个本身就说不过去。哪怕骂 HR 不会筛简历也比这样好。
semiwhale
2021-11-20 21:05:55 +08:00
说来惭愧,我一直把这些方法当成 Java 、C++中类的一些基础方法、操作符一样,不知道还有这么高大上的名字。

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

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

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

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

© 2021 V2EX