为什么 Java 垃圾自动回收,面试的时候还要问垃圾回收机制?

2017-10-05 15:07:04 +08:00
 1536011373
Java 面试必问的就是垃圾回收,为什么 Java 垃圾自动回收,面试的时候还要问垃圾回收机制?
12030 次点击
所在节点    程序员
67 条回复
tscat
2017-10-05 15:10:59 +08:00
因为这个最基本的都没有动力去了解那么你就是个菜鸡程序员
cxbig
2017-10-05 15:11:28 +08:00
考察你对 Java 语言机制的理解程度
cuebyte
2017-10-05 15:13:04 +08:00
丢垃圾还要分类呢,又不是考你垃圾回收算法
EPr2hh6LADQWqRVH
2017-10-05 15:14:56 +08:00
看你需不需要被回收喽
takanasi
2017-10-05 15:15:03 +08:00
因为你是开发人员,这是基本知识
fwee
2017-10-05 15:23:52 +08:00
蛤蛤蛤,显得逼格比较高而已,实际工作中不需要。
说实话基础的算法数据结构和架构能力更重要。
但是很多面试的是垃圾回收算法、字符串 intern 等等,这种东西面试被试几乎都没实际用过实现过,只是道听途说。真的很讽刺
SoulSleep
2017-10-05 15:27:58 +08:00
这是调试 jvm 参数最基本的东西啊,如果脑子里没有这个意识,调内存时候怎么调啊...蒙吗?
SoulSleep
2017-10-05 15:29:44 +08:00
@fwee 实际工作中不需要 我觉得很需要...特别是 Java 这种语言..我们程序比较复杂,涉及到一些算法和比较高的 tps,硬件敞开着用,但是必须得达到性能指标。会调参数可以省很多机器。
Luckyray
2017-10-05 15:36:07 +08:00
虽然每次面试都尽力准备,但是工作两年生产环境和测试环境的 jvm 参数从来都没碰过……要么是不调,要么是高一级的 leader 写好了就不动了……
hantsy
2017-10-05 15:46:09 +08:00
实话说,我也忘记了。

对 JVM memory model,GC 这些,每个 JVM 版本都有差别,要仔细看过 JVM 规范都会有了解。

但对写 Java 的,不去了解 Java 语言本身的特性,不懂 Java EE 的规范我才觉得有问题,因为这些与日常开发几乎是相关的。

然而,国内没哪个公司会叫你去写 JVM。一般问这种问题的人,最大的可能就是哪个什么认证题上看的,拿出来问别人装 B。

楼上各位大神 @tscat , @takanasi,能不能借这个题讲讲 Java 8 与 Java 7 的 JVM 内存模型,垃圾回收上的差别。
eightqueen
2017-10-05 15:57:08 +08:00
这些东西你不清楚,上线一个应用应该分配多少内存,你有概念吗?那些说不需要知道的,估计你们应用 qps 只有几十。
Suddoo
2017-10-05 15:58:51 +08:00
最近秋招面试,有一家问了点垃圾回收的细节,回答得不好。
takanasi
2017-10-05 16:00:48 +08:00
@hantsy 我的 java 也就入门水平。我还以为是问有几种回收机制呢,这种细节问题确实太难。
changwei
2017-10-05 16:10:10 +08:00
面试造火箭,入职拧螺丝。
hantsy
2017-10-05 16:44:55 +08:00
@changwei 很多公司的确是这样。
hantsy
2017-10-05 16:45:43 +08:00
@eightqueen 请教一下我上面一楼贴出的问题。。。
hantsy
2017-10-05 16:51:11 +08:00
@fwee 嗯。是的,基础知识不是一般的重要。

对于招 Java 开发人员,Java Collection 下的接口和类的重点。对于 Java Web/EE,如果不懂 Servlet/Filter, JDBC 这些基础,写出来的程序基本上坑爹。
chinawrj
2017-10-05 16:53:27 +08:00
恩,看来 c 不用问指针
gam2046
2017-10-05 16:54:16 +08:00
@changwei 生动形象,初级乃至中低级程序员其实没有十分清楚的了解这些,知道有这么个东西了。真的需要 JVM 调参是不会让一个中低级码农去调的。但是以我所在的公司,我发现有些 Java 程序员,有这样一条脑回路

Java 有垃圾回收 + Java 垃圾回收是自动 = 无脑创建新对象即可

且不说 gc 会短暂暂停程序,那你好歹打开一个 Stream,也记得 close 啊。

就碰到过个别人写的东西,文件只管开,不管关。跑了一段时间,程序莫名其妙挂了,甩锅给运维,说服务器有问题。运维排查了两天,翻了能看到的日志,实在找不到原因。程序跑一段时间,就自己挂了。再丢回给程序,一审计.......也是绝了。每次都是系统句柄不够分类了,然后系统杀掉了程序。心疼运维五分钟。
LosLord
2017-10-05 16:56:05 +08:00
新发布的 java9 换成 G1 了,以前的知识又得更新了

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

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

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

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

© 2021 V2EX