Python 开发应届生岗位
有的甚至还写的精通 Python
话说 Python 的精髓就是鸭子类型吧,有的直接说没听过
估计都是把 Python 当作面向过程来写了,怪不得觉得语法简单
我感觉 Python 并不简单。。
101
lusi1990 2021-11-19 17:11:06 +08:00
多年 python 程序员一脸茫然。 不知道还不能写代码了?
|
102
YvesX 2021-11-19 17:17:28 +08:00
这种设计得稀烂的语法就算常用我也不问,就跟考人 json 的逗号处理似的,略尴尬
|
103
twl007 2021-11-19 17:25:25 +08:00 via iPhone 1
大家诟病的只是把这种知道起来也没多少成本的问题看的如此之重罢了
这就跟去问 bash 脚本开头 set 后面跟的参数是啥意思一样 看一下 man page 大家不也都知道了 |
104
lozzow 2021-11-19 17:52:51 +08:00 2
茴,回,囘,囬
|
105
fgwmlhdkkkw 2021-11-19 18:12:53 +08:00 2
所以你的结论,就建立在你面试过的应届生之上。是吗?
那和他们相比,你确实是厉害呀!简直不要太厉害! 我吐了,直面龌龊的自己,好吗? 呸! |
106
RedisMasterNode 2021-11-19 18:20:45 +08:00 8
感觉楼主 append 的这段已经说得很好了,特别是“我们需要的是认同 Python 的设计哲学,热爱 Python 的人”,不能再赞同。
“而不是觉得 Python 简单,学点基础语法就能快速上岗的人”,说得更好。 应届生不管简历写什么,真正掌握和熟知的比例上来说还是少数,考察的时候由浅入深地考察也是个好的办法 |
107
binux 2021-11-19 18:39:15 +08:00 via Android 3
@twl007 真的是没有多少成本吗?
你知道 __new__ 和 __init__ 的区别吗? 知道 __hash__ 和 __eq__ 在 a==b 的时候调用那个? __getattribute__ 和 __getattr__ 有什么区别? 等等 |
108
tesorouo 2021-11-19 18:42:11 +08:00 1
@ampedee 过于真实,要注意
自己用 Magic Method:哇我真牛逼,Python 真牛逼,一线千万级并发的代码也就这个水准了吧? 别人用 Magic Method:培训班出来的吧,培训班电商项目都教这个,当谁不知道呢 |
110
twl007 2021-11-19 19:47:46 +08:00 via iPhone
@binux 假如就像你说的 面试的时候知道 你确定人家的知道跟楼主以为的知道是一个东西?我真不太相信按照楼主描述的用法一个应届真的能有那么“知道”
最后还不是看招进去之后如何培养 无论从意识也好还是代码风格也好 但是这些都不是应该在面试考察的内容 如果在面试阶段妄图从知不知道引申到代码风格是不是互相匹配 怕不是本末倒置了 |
111
bnm965321 2021-11-19 20:17:30 +08:00
这个是 python 文档第一章《 data model 》的内容。
不知道的确实有点过分 |
112
learningman 2021-11-19 20:29:09 +08:00
骂楼主的是不是不会用啊(
|
113
matrix1010 2021-11-19 20:34:55 +08:00
会魔法的人毕竟是少数🤫
|
114
Cooky 2021-11-19 20:50:53 +08:00
原来叫 魔法函数,这破名字一点不好听根本记不住
|
115
LeeReamond 2021-11-19 21:11:42 +08:00 1
magic method 翻译过来是魔术方法,不是魔法函数,LZ 你还是别面试别人了,在我这首先不合格。所谓 python 的精髓在鸭子类型,好一个 javaer 发言,只能说这是在往 py 迁移多态中产生的错误想法,py 的精髓跟鸭子类型也一毛钱关系没有。啥水平的还能面试人还能出来发帖吐槽?
|
116
Donahue 2021-11-19 21:26:19 +08:00
@fgwmlhdkkkw +1
|
117
khaki 2021-11-19 21:30:24 +08:00
真心问一下,需要什么样的编程水平才可以谈论“ Python 的设计哲学”?
写了很久 python ,也用过很多其它语言,但我现在依旧不敢说“认同”python ,当然更不敢说“不认同”,其实我现在甚至都不敢谈“设计哲学”😭。 |
119
hxse 2021-11-19 21:54:24 +08:00 1
几年不见, 这孔乙己长进了, 都能当面试官了
|
120
Vinceeeent 2021-11-19 22:14:44 +08:00
扣语言的语法细节意义不是很大,可能他不知道可以在 Python 的类里去修改或定义__add__(self, otherObj),但他肯定也会懂得去实现一个 add(self, otherObj)方法达到同样的目的。如果公司对这方面的编码风格有要求,进公司后告知一下,去看下文档就会秒懂的。
还不如问问应届生“怎么计算递归函数的时间复杂度”之类的问题。 |
121
shayuvpn0001 2021-11-19 22:26:57 +08:00 3
和这个主题无关的一点感想:“语言造出了是为了解决问题的,而不是用来被人研究的。”
|
122
auh 2021-11-19 22:47:55 +08:00 1
我曾经遇到一个技术总监,他面试过程非常简单,给一份题,然后针对这个题,简答问你几个问题。最后,不管你懂不懂,或者回答的怎么样,一概收下。但是,后期会试用一个月左右的时间。个别是因为组长不爽,找总监辞退的。但是,大部分是承受不了自己走的。因为,这个团队,不会主导于教人,而是,必须让你自己抗下所有。能坚持,你就留下,坚持不了,那是你的问题。任务不会因为你的能力不足或者新手同情你。
当时,我非常疑惑。原来总监是这种套路。但是显然,这是明智的套路。给机会,但是不会降低要求。潜能自然就知晓了。 |
123
f64by 2021-11-19 23:30:35 +08:00 1
LZ 问的还是太简单了,按照现在这个卷的程度,明年就可以问 metaclass 了
现在很多校招生简历吹得太狠,动不动就精通,自己写了精通难道不是意味着面试官可以随便问? |
124
abersheeran 2021-11-19 23:39:36 +08:00
@f64by metaclass 难道不是造轮子必备知识点吗?这个也不算难吧。
|
125
wlh233 2021-11-19 23:45:39 +08:00
这确实是基础了,今天刚学了个 a[0] = a = [0] 感觉才是魔法 2333
|
127
deplivesb 2021-11-20 00:11:16 +08:00 1
我很认同楼主的 append 内的内容
我同意楼主反对 “觉得 Python 简单,学点基础语法就能快速上岗” 现在 Python 已经被各大营销说感觉是个人就能上手,是个人就能一周拿到 10k+ offer 的人了,去 B 乎逛一圈全是这种营销广告,要不然就是《华为大佬吐血整理》《清华博士吐血整理》《掌握 X 个大类,X 个函数,X 方法,你也能学会 Python 》这种垃圾文章,但其实我作为一个从大二开始学,到现在工作 4 年一直在做 Python 开发的人来说,我越来越觉得 Python 一点不比有些语言简单,甚至去思考内部的设计,还觉得很不可思议。但就是被网上这两年灌输的,即使是科班出身的,也会觉得“我是科班出身的,虽然没接触过 Python ,但是看网上都说 Python 简单,那对我科班出身不就更简单了”,但是一旦有了这个思想,遇到问题就不去深究,不去究原理。 说一个例子,就我面试过的人(包括应届生,也包括一些社招所谓有 4 5 年 Python 开发经验的人) 70%的人都会认为 Python 里的 del 是删除一个对象,背后调用的是对象的 __del__ 方法。在我的印象里,因为这个问题而出的 bug ,已经不是一次两次了。甚至不乏有些人在公司的 title 是“高级开发” |
128
HankLu 2021-11-20 00:34:49 +08:00
不是大伙戾气重,而是我们也不懂什么是魔法函数,因为我们工作这么多年从来没用过魔法函数,你的意思就是瞧不起我们这些不懂魔法函数的人,你还想我们跟你好好说话?还同意你的观点?不骂你就好了
|
129
newtype0092 2021-11-20 00:59:15 +08:00 1
按这里的人的面试逻辑你就不该问任何问题。
问基础概念说八股文没意义 问系统架构说面试造火箭入职拧螺丝 问语言特性说茴香豆的写法没必要问 问算法说工作中都是调现成 lib 用不着知道 以后面试就问天气和星座,天气好星座也合适就要了吧。 |
133
YuiTH 2021-11-20 01:42:10 +08:00
@shm7 你应该用过。首先 torch.utils.data 的 Dataset 类需要实现__len__和__getitem__。如果你全程用的是 fairseq……那好吧你总是要 call super().__init__()的。总是要好奇一下这个是做什么用的吧。
|
134
oOoOoOoOoOo 2021-11-20 02:02:26 +08:00 via Android
可能他比我强 刚才我又去看了一遍 Python Object Inheritance
|
136
kuangwinnie 2021-11-20 03:02:58 +08:00
精通 python 连魔法函数都不知道真的不应该
|
137
pcslide 2021-11-20 03:46:12 +08:00 7
lz 应该不是计算机系毕业的吧?你应该问的是“python 里面如何实现 operator overloading”,而不是让人丈二和尚摸不着头脑的“魔法函数”。
|
138
2i2Re2PLMaDnghL 2021-11-20 08:57:53 +08:00
magic method 和 metaclass 的存在是因为 Python 没有宏。
—— 某 lisp hacker |
139
kuangwinnie 2021-11-20 08:58:42 +08:00
@pcslide
啊这,不就是把题面和题解换了个位置吗。 |
140
JeffGe 2021-11-20 09:26:24 +08:00 via Android 1
@pcslide ???
你在前排回复这个也就算了,都第二页了,你不看 append 的吗? lz 问的就是类似“如何实现 operator overloading”一类的问题啊 |
141
canwushuang 2021-11-20 09:31:50 +08:00
本身程序就是博大精深的,即便是一期期的 pep 新功能,都是一辈子需要学习的。精通只是面试的术语吧,大学 4 年学这学那,怎么可能全身心投入在解决项目和优化代码中?“精通”就当是基本会,“熟练”就是会安装和部署环境变量吧。。。
|
143
agagega 2021-11-20 10:42:08 +08:00 via iPhone 1
😅楼主说个魔法方法都要被某些人杠是孔乙己,那这些人看到 Scala 、Haskell 这类语言是不是要气得焚书坑儒?
|
144
amber0317 2021-11-20 10:47:22 +08:00 1
但凡正经学过 Python 的人,至少应该知道有“魔法函数”(魔术方法,whatever )这么个名词存在,而且至少应该知道它可以用来覆盖操作符或者 len 、str 这种内置方法的返回值。
业务中确实用得少,不会用完全可以理解,但完全不知道,应届生都不应该。我只能认为是根本没学过 Python 。 写 C with classes 的人不能说自己精通 C++吧,怎么到 Python 这里大家就宽容起来了呢 |
145
gengchun 2021-11-20 11:42:07 +08:00 1
这么多人回复。
就没有人告诉 OP 标准教程里面是没有 *魔法* 方法的称呼的。事实上官方翻译是 *魔术* 。而且 magic 的说法一般是和测试相关的文档里中的比较多。 Reference 里面介绍这个概念用的是 special 。 直接看英文文档,没有听说过这个词是很正常的事情。 对于个人译者不遵照官方约定来翻译这个名词,如果熟悉翻译的流程的话,这个也是很上火的事情。看到还有人用,更是上火。 即然只是面试程序员,而不是说布道者什么的。就不要太关心名词熟悉不熟悉。至少看一眼对方的代码。 如果特别关心对方对于这个概念的掌握程度,就让人直接手写一个 __repr__ 不就完了?自己事先打印一个 class ,让对方补齐一下,知道这个概念,也就五分钟的事情。 再说招人本来就是这样,就算招月薪五万的,这也只是说明你的招聘方法和你的预期不匹配,和劳动力市场的质量有什么关系? |
146
oakcdrom 2021-11-20 12:10:35 +08:00
这就是所谓的面试造火箭吧。。。一个实习岗位而已。。。能看明白代码就行了。。
|
147
sidkang 2021-11-20 12:23:45 +08:00
我们需要的是认同 Python 的设计哲学,热爱 Python 的人。
对于应届生来说,应该如何才会热爱一门编程语言呢?想想感觉真的很难啊。 |
148
arischow 2021-11-20 12:54:09 +08:00
不知道就是不知道嘛,不过到了 Python ,在这个社区就有很多人不愿意承认咯。而且还有很多人说 Python 有啥好学的呢,半天就能看完语法了~
我只能说希望 op 不要给某些人搞差。 |
149
arischow 2021-11-20 12:54:17 +08:00
* op 心情
|
150
Divinook 2021-11-20 13:00:38 +08:00 via iPhone 1
强烈同意楼主,这有什么好扣帽子的,既然写了精通 python ,面试的是 python 岗位,那连这些基本的特性都不清楚也太不应该了。
Python magic method, asyncio, monkey patch 都是实用且有效的,如果一点都没接触过,和脚本小子又有什么区别,上面老哥也说了,问八股文被喷,问算法被喷,现在连问实际应用都要被喷了吗? |
151
Divinook 2021-11-20 13:07:11 +08:00 via iPhone
@newtype0092 老哥说的太好了 233
|
152
WilliamYang 2021-11-20 16:13:27 +08:00
支持楼主,虽然我很少用 Python 了,但我很认同 Python 的设计哲学,另外招到适合自己团队的人,很重要
|
153
Mirage09 2021-11-20 16:26:02 +08:00
奇怪,我还从来没听过什么魔法函数。。magic something 总给我一种用奇怪的 hacking method 实现目的的感觉。。
另外纠结这些名词干什么。。还设计哲学,这些乱七八糟的入职以后看看 doc 看看 cr 不是一两个小时就能搞定了?你们不做 onboard 的么? |
154
Mirage09 2021-11-20 16:29:23 +08:00 1
以及我个人觉得,面试的时候是让你去引导,收集对方懂什么,而不是让你去发现对方不懂什么,除非你就是想 show off ,那没的说
|
155
37Y37 2021-11-20 16:42:02 +08:00 via Android
完了完了,我先声明下,这么多年我写的都不是 python
|
156
jusonalien 2021-11-20 19:15:25 +08:00
楼主要想清楚,你需要的究竟是
跟你思维价值观一致的人 还是能跟你一起互相成长并肩作战的人 |
157
yzbythesea 2021-11-20 20:09:53 +08:00
我当年作为应届生面试拿 offer ,有一轮 try catch exception 都没写明白,面试官当场还安慰我说学生应该很少接触这个。我遇到过的应届生,不会写 Java main 函数,collection sort 忘记怎么用的,甚至 import arraylist 忘了的,我都给过了。面试是去发掘一个人的才华和潜能,而不是去挑刺,去考察一些你比人家多看一眼的知识点。
|
158
vincexu 2021-11-20 20:11:28 +08:00 1
这帖子为什么到现在还能继续吵啊,帖子上的 `append` 不是写了并不是直接问的语法细节吗,而是问的应用场景啊。楼里很多人能不能别看到面试问题就开始高潮啊,就比如最简单的``__repr__`` 你写 python 怎么可能会用不到啊,不然你调试 print 打印啥,打印对象的内存地址吗。面试考察是个多维度的东西,当然狂扣语法细节是个非常傻逼的事情,但问题来了写 Python 写 web 确实会用到这东西,而且楼主问的也是使用场景,翻译我觉得并不会造成理解问题 ,但凡有正经学习过 python 的,都不可能不知道这东西。
|
159
gengchun 2021-11-20 20:23:16 +08:00
@vincexu 这个贴子本来就是因为使用了不恰当的名词翻译,所以才会吵到现在。当然是理解上的问题。再 append ,标题还是这个。一定会有人看到这个名词就觉得不爽。
而且另外一个问题,一个面试者,指责被面试的人水平太低,这个本身就说不过去。哪怕骂 HR 不会筛简历也比这样好。 |
160
semiwhale 2021-11-20 21:05:55 +08:00 1
说来惭愧,我一直把这些方法当成 Java 、C++中类的一些基础方法、操作符一样,不知道还有这么高大上的名字。
|
161
pcslide 2021-11-20 21:14:09 +08:00
@vincexu 每个人使用 python 的用途不同,不要总是自以为是。只用过 add ,invert ,iter 这种,从来就没用过 repr 大有人在。比如做图像处理,会需要 repr ?如果真需要什么,我用 iterator 把里面的数据读出来就可以,何须 repr ??
|
162
locoz 2021-11-21 00:37:28 +08:00
@auh #121 这种做法对于公司来说其实不太好,因为人员不稳定,而且水平有可能会差异较大,容易影响产出...小公司如果大家提前说好就是这种风格的话倒没啥,大点的就不合适了,徒增干扰项。
|
163
locoz 2021-11-21 00:42:26 +08:00
@canwushuang #140 所以其实本来就不应该写“精通”,真厉害的话这么写会显得这个人比较自大,不厉害的话这么写又会显得这个人没逼数,这个写法就是有些简历模板和 HR 带出来的坏风气😂。
|
164
neutrinos 2021-11-21 00:52:28 +08:00 via iPhone
赞成楼主,魔法函数是 python 里很重要的概念,合格的 python 工程师不应该不知道
|
165
fatigue 2021-11-21 02:57:41 +08:00
我 python 用的不多,听着像是和 Lua 中的元表和元方法差不多的东西?
|
166
DeWjjj 2021-11-21 04:01:07 +08:00
为什么 go 现在大行其道,不就是因为这些东西比 python 还要简易嘛。
|
168
nicevar 2021-11-21 11:13:21 +08:00
@vincexu 确实用不到,__repr__我写了 python 十几年都没用过,而且我还在几个大而且很重要的项目里面都没见过用这个的,语言就是个工具,有些东西用不上不关注很正常,比如 c++有些人写了一二十年,某些特性摸都没摸过,就好比塞班整个系统都是 c++写的,一堆 c++的东西都没用上
|
169
nikan999 2021-11-21 12:30:15 +08:00
如果是写库的人理应知道他这个库可以用到的一些语法来方便开发,比如元编程的一些语法。
如果是写应用的人就没必要知道那么细了,语法玩出天也比不上换 golang/rust 性能增加的多(几倍几十倍), 何必花大量时间纠结那些语法呢, |
170
RedisMasterNode 2021-11-21 16:18:23 +08:00
@nicevar 写了 10 几年读代码也从来没读过吗?难道平时开发都就一直平平淡淡写方法写对象写类吗,用到的框架、包没有需要点进去看看源码的时候?
感觉不太相信,我毕业头 2 年也是写 python 的,工作里面各种包的文档可能解释得不够清楚,点进去看很多都在用魔术方法实现功能,如果对魔术方法一点都不了解,难道不会好奇它在做什么,怎么实现的吗? |
171
shm7 2021-11-21 17:08:17 +08:00
@masterclock 是啊 python doc 也不是没翻过,这个叫法我真是一点印象都没有。
|
173
shm7 2021-11-21 17:15:57 +08:00
@conhost 我连 NLP 都学了,背了几本公式,我连个 init len 都不知道吗,我难道是傻子。看来的确是啊,学习的时候翻过一两遍 python doc ,连魔法函数这种名次都没有背下来...
|
174
shm7 2021-11-21 17:18:30 +08:00
不得不感慨,内卷为啥会持续存在呀,因为现在的主流生源慢脑子都是做题家的思维...
没治了 |
175
shm7 2021-11-21 17:51:32 +08:00 1
比起问魔法函数是啥,Python 高工们,不应该问 魔法函数是怎么起作用吗?
|
177
lizytalk 2021-11-21 23:24:17 +08:00 via iPhone
魔法函数很多只有在特定的场景下才会遇到,从来没遇到过对应的场景就不会知道吧
|
178
rm0gang0rf 2021-11-22 08:41:50 +08:00
没用过.....
|
179
saulshao 2021-11-22 08:45:34 +08:00
这个确实不知道啊,虽然我不是应届生,也谈不上精通 Python
|
180
jguo 2021-11-22 09:18:16 +08:00
我这个就大学第一门计算机课用过 python 的都知道__init__,__len__,找工作的不知道居然还理直气壮
|
181
arthurire 2021-11-22 09:51:32 +08:00
所有能在一分钟之内 Google 出来的问题,或者是能够在官方文档里面写明白的问题,面试的时候拿出来问,都是垃圾问题.
还整个 Python 精髓,好家伙不知道还以为 Python 你设计的. 用了两个破方法就精髓了...... 还有人在这杠什么如何 debug. 退一步讲,就算我不知道__repr__干啥,我一样能 import logging 把问题写到日志里面,我也能自己定义一个 def debug_func() 把所有需要的东西输出出来. 我下断点行不行啊?我直接看内存行不行啊? 所以这个问题有啥用呢? |
182
arthurire 2021-11-22 09:52:43 +08:00
|
183
conhost 2021-11-22 10:03:11 +08:00
@shm7 不知道你是具体做 NLP 哪个方面的,情感分析?对话系统?文本摘要?序列标注?亦或者文本生成,机器翻译?即使你调用现成的 transformers 包,你也要写 dataloader 吧,只要继承这个类,那你的__next__方法指定要重新实现,只不过没有探寻这类函数的名称定义而已,何必戾气这么重呢?
|
184
arthurire 2021-11-22 10:12:02 +08:00
@conhost 我觉得你也不用说人家戾气重,这个楼主没 append 之前就是这种内容
"你不知道这个定义所以你是哀思比" 那我都会用了我为啥要知道定义啊? 这就好像我们有个哀思比老师期末考试第一题是默写一个数学定义,一道题八十分.错一个字就给 0 分,全班挂科. |
185
VZXXBACQ 2021-11-22 10:14:46 +08:00
原来叫魔法函数啊。。。
我一直把__str__ __len__叫重载 len 和 str 函数,__new__ __init__叫定义构造和初始,哈哈哈......Python 自学没背过这些东西。 估计要被楼主挂掉了 |
186
yazoox 2021-11-22 10:36:24 +08:00
点进来之前,我也不知道啥是“魔法函数”。当然,我很少使用 python ,只是偶尔修改其它人写的脚本,用到过一点点。
另,“鸭子类型”,我也没有听说过...... |
187
offswitch 2021-11-22 11:30:09 +08:00
@jguo 我一个不做 python 的也知道,然而有什么卵用?这个楼主看他发帖,2020 年才 7k,一个工作一两年的人,天天在这大放厥词,认同 python 设计理念,工作时间长的人来看,真的觉得可笑。
|
188
cyrivlclth 2021-11-22 14:08:40 +08:00
@arthurire 楼主属于糖吃多了,就以为糖本来就该存在,以前我也写 python ,也觉得这些什么魔法方法概念屌的一匹,然后写代码也追求 pythonic ,直到后来面相工资编程,转了 go 告别动态,才认识到这些真是赚钱 /技术路上的细枝末节。
|
189
arthurire 2021-11-22 14:20:38 +08:00
|
190
nicevar 2021-11-22 19:12:17 +08:00
@RedisMasterNode 不是不知道,是不用,有些东西不用也没什么影响,这个就跟 Java 的 toString 一样,有的人就不喜欢用
|
192
aladdinding OP @offswitch 新开的部门去年还在实习怎么了?你非要以工资衡量的话 不也是五十步笑百步
|
193
shm7 2021-11-23 10:06:42 +08:00
@conhost 对不起,你可能要失望了,除了生成,这些我全都做过。所以做 NLP 就是只会调用下 transformer 吗?抱歉我写过的项目,用 transformer 的不到 10%。还是说您只会这个?所以 NLP 只需要做个 dataloader 就行了吗?
就这点小东东,天天拿出来摆。还要 diss 下记不得这个叫啥名字的。天天关注叫啥名字,也不问为什么会在语言里面设置这么个东东,人家说你八股你还不信了。 除了用 transformer ,有把 transformer 和 torch-lightning 的源码阅读过吗?里面包含你这 magic method 和 hook 的地方多了去了。这都是程序员的继续素养。别怪人家 diss 你,你这事情做的太 low 了。就像小学生会了乘法到处吹怎么这些人连乘号都不认识一样。 |
194
offswitch 2021-11-23 10:14:57 +08:00
@aladdinding ?莫名其妙?工资是你的几倍,啥五十步笑百步?
|
195
offswitch 2021-11-23 10:23:16 +08:00
@aladdinding 另外,我可不是 19 年毕业的,只是注册 V2EX 比较晚而已,已经工作六年了,你说的设计哲学,大学的时候也有这种中二想法,谈论 java 的设计哲学,不过毕业后就没了。为啥我也会知道 python 魔法函数,因为我大学也系统学过 python 。
|
196
O5oz6z3 2021-11-23 10:48:34 +08:00
面试里,鸭不懂魔不会,小小应届,可笑可笑!
|
197
aladdinding OP @offswitch 我也莫名其妙,都是打工的,没必要整些优越感。lz 小公司 拿拿分红而已,跟你这资力雄厚的大佬没得比。
|