为什么面试官喜欢问某一门语言(比如 go 或者 Python )的内存回收机制?

2022-04-27 13:10:33 +08:00
 a523

我不明白的,如果不了解内存的回收机制,对写代码有什么影响吗?

我已经写 python 8 年了,也不清楚 python 的 GC 具体细节, 但是还没有碰到内存泄露的问题。 是不是有 GC 机制的语言,不会发生内存泄露?

或者面试官仅仅只是依此来判断某个人对某门语言花了多少心思?

16084 次点击
所在节点    Python
164 条回复
xsen
2022-04-27 15:48:32 +08:00
@fawdlstty #31 #2 架构并不需要很深的技术,只是需要某些方向很深入 + 技术广度
taogen
2022-04-27 15:48:39 +08:00
不是喜欢问,而是形成了问八股文的氛围。
为什么是八股文,而不是算法。因为八股文可以速成,算法不行。You know, 大学学不到啥,大家都是快毕业时速成过来的。问算法可能很多人找不到工作,很多公司招不到人。
HiShan
2022-04-27 15:55:16 +08:00
画家会知道他们用的颜料的具体成分是啥吗?具体的工艺流程吗? 应该不知道吧,这个也不重要吧? 底层设计和上层应用是两码事吧? CURD BOY 就不如底层工程师吗? CURD 工程师能把一个请求优化的很好 ,一个底层工程师能把系统设计的很好 ,不矛盾吧? 为啥非要比一比搞个鄙视链出来。
Biwood
2022-04-27 15:59:05 +08:00
我的天,内存回收可以说是一门编程语言核心中的核心,竟然不知道为什么。我一个没怎么写过 C/C++ 的人都知道内存管理有多重要,NASA 不就是因为内存管理问题直接禁用 C 语言的某些特性吗,这玩意儿直接关系到人命的。

不得不说现代程序员绝大部分都离底层越来越远,过于靠近业务以及过于重视开发速度而没来得及深入到技术本身。想想 V 站作为一个苹果粉丝爱好者论坛,大部分人应该都是喜欢开箱即用的东西,也可以理解。
LeeReamond
2022-04-27 16:02:58 +08:00
@ipwx 你这例子重复我之前的话啊,#5 原文 “一般开发能做到知道所有资源在哪里创建,在哪里释放就可以了”,你这又扯啥不知道释放,不知道谁笑话
bleaker
2022-04-27 16:07:34 +08:00
因为八股文和算法有标准答案,对的就是对,不对就是不对

很多人没能力去考别人 system design
anonymousar
2022-04-27 16:15:36 +08:00
写了 8 年 py 3 年前问出这种问题 “程序如何执行需要 sudo 权限的任务”。。
datoujiejie221
2022-04-27 16:17:16 +08:00
因为其他语言如果不懂得话 写代码会出很多问题
做 iOS 入门编程 当时如果不搞清楚内存管理 那么程序会经常崩溃 c++也是同理
java 如果不懂 那么 oom 问题也是很难很好的解决
总结一下 了解内存管理 有垃圾回收的语言 是为了好排查 oom 的问题 没有垃圾回收的 是好排查野指针的问题
hahadaxigua834
2022-04-27 16:20:19 +08:00
新人面试官表示,不知道问啥,只会挑一些经典问题
a523
2022-04-27 16:27:05 +08:00
@anonymousar 是, 我也对我以前问过的问题感到可笑,但不觉得是耻辱。光记得耻辱别人, 很快自己就会退步。
wu67
2022-04-27 17:01:15 +08:00
讲道理, 如果主要语言不是底层的, 那我关心他 GC 干卵? 相对‘高层级’的编程语言的一个特点就是屏蔽了开发者对垃圾回收的感知、规避直接内存操作啊? 还是说面试的是底层岗? 还是说公司有对‘开发环境’进行二次开发的环境项目?
gengchun
2022-04-27 17:25:51 +08:00
手动狗头一下。CPython 的 gc 机制难道不是重启吗?

我觉得 CPython 的 gc 研究可以用一行代码总结:

gc.set_threshold(0)
FakNoCNName
2022-04-27 17:35:58 +08:00
楼上这么多人发言,请问有几个人用到相关知识的时候不去查资料再确认一下或者看看细节的?说白了就是供大于求,用来淘汰人的,跟英语四六级证书一个样子。

大多数的知识都只需要了解个大概,保证遇到的时候知道有这么个东西,需要用的时候知道找什么。

对于上来问底层的面试官,你要是不爽可以摔给他一个你特别熟悉的领域里面有难度的问题试试,当然这么做面试大概率就挂了。。。
a523
2022-04-27 17:40:51 +08:00
@FakNoCNName 哈哈, 面试挂了, 不要紧, 选择也是双向的。
neutrinos
2022-04-27 17:42:07 +08:00
1. 在某些情况下需要暂时关掉 gc ,防止 gc 运行打断当前任务
2. gil 的存在和 gc 有关,如果愿意了解 gil 的话就会知道 gc 怎么工作
senhtry
2022-04-27 17:58:49 +08:00
不问 gc ,如果问你遇到内存泄露怎么办,这个可能更友好点? gc 可以背书,有套路的。问内存泄露,一定会问 gc ,为什么变量不 gc 呢,然后就可以展开了。
pigspy
2022-04-27 18:03:52 +08:00
国外这么问吗?有没有 run 出去的大佬说下?
dantangfan
2022-04-27 18:11:14 +08:00
虽然我会,但我依然认为这是卷、八股风气盛行的结果。
虽然我会,但是我是在遇到问题之后摸索和理解出来的,就好像上面的大多数理解 gc 的人,并不是自己纯去背诵就能理解的。
虽然我会,但我面试一般不会直接问这种问题,更喜欢问你遇到的难题、或者出个难题让你去排查或者解决。
总之,我也认为直接让面试者去背诵 gc 并不是什么好事,也不是什么优秀的面试官。
drackzy
2022-04-27 18:13:27 +08:00
筛掉 CURD 仔,看你平时爱不爱学习。
Suddoo
2022-04-27 18:23:15 +08:00
了解个屁,都是 crud boy ,api caller ,背几个八股文还有优越感了,有本事自己去开发一个语言让大家用啊,八股文背得滚瓜烂熟,人家一卡脖子就歇菜,有意义吗?再说了,你背的这些八股文,确定没有过时?

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

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

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

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

© 2021 V2EX