背 JVM 的相关知识感觉很不实用,应该工作中很少用到吧?别的语言有没有类似的没用的八股?

2023-02-11 19:50:47 +08:00
 movq

JVM 的这些内容跟应用程序员来说有关系吗?似乎也轮不上普通程序员去写 JVM 的代码吧

至于 JVM 调优,这是部分专家负责的事情吧

不了解别的语言,C++技术栈有没有类似的华而不实的八股呢?

3034 次点击
所在节点    程序员
21 条回复
echo1937
2023-02-11 19:55:21 +08:00
说个语言无关的,有些公司会问 mysql 数据引擎,索引,索引的 b+树,页分裂啥的。

感觉和楼主说的属于同一类内容,就是问机制,问实现。
liveoppo
2023-02-11 20:49:12 +08:00
之前看过一点,一般似乎用不到。我觉得粗略了解一下即可。
letitbesqzr
2023-02-11 21:09:58 +08:00
GC 部分还是很重要。其余的简单了解下即可。
chenshun00
2023-02-11 22:55:18 +08:00
不是不实用,是基本上用不到,OOM 一般情况下 jstat ,jmap+mat 分析可以搞定。
如果真的是因为什么 YGC 导致了线上问题,说明公司业务很大,每个公司都有几个牛逼的人的,直接遥人即可。

不可能每个人都做到面面俱到的。 能解决常见问题即可。
ixiaohei
2023-02-11 23:02:02 +08:00
1. 纯八股文,在某些场景下可能投入产出比巨大,比如面试的时候;另外业务开发的时候投入产出比很小。但是有些基础知识是相通的,如果能理解和融会贯通还是有比较有价值的。
2. 工作 10 年,纯 java 工作 6 年。以前很喜欢钻 jvm 底层八股文,后面发现某些知识在工作中需要用的场景真的少,投入产出比很小,等到用到的时候也经常忘记细节需要回去补课,浪费大量时间;还不如拿这些时间去学习新的工具和语言,用这些工具和语言去解决他们专注和擅长的场景。
3. 对于 JVM 可能 gc 调优、内存泄露在碰到某些瓶颈问题下很有用。但是也可以通过其他不是很优雅的方式去解决。要综合对比,考虑投入产出比,不要因为自己对这些东西很擅长就只考虑这一种方案。不过在必须通过 jvm 原生方案解决的情况下比较有价值。
4. 不过理解这些东西在当下浮躁的面试风气真的很有用。很多面试官想了解一个候选人的深度的时候喜欢考察这些东西。另外就是面试官想通过这些东西来表现自己很高深(装逼)。
5. 以前碰到一个面试官想考察我 synchronized 底层锁升级策略,以前了解这方面的知识知道点细节。但是当我反问他了解这些东西有什么价值的时候,他回答不上来。
6. 后续反思学习这些东西对于我来说真的没多大价值:首先自己不是从事 jvm 开发,没必要投入时间了解这个东西,另外跟司内专门从事 jvm 研发的同事沟通过,他们也不会把精力投到这上面,一是因为这些东西很基础比较成熟了,被国外大牛已经优化到很高的程度了,他们没有那种能够打破这种方案再搞出更厉害的优化的能力;而且这些投入价值产出比很小,不足以支持他们的薪水所要产出的价值,所以他们( jvm 开发者)都不关注这些细节东西。另外了解这个东西对于某些到达单机同步场景瓶颈下,可能因为知道某些细节能有找出新奇的调优思路,但是我们可能更多的是从架构设计上使用分布式思路来解决这种瓶颈问题,没必要去追求极限的调优。
taogen
2023-02-11 23:06:36 +08:00
你就当面试是一个考试。类似高考,996 疯狂刷题,考上了之后就可以放肆地玩耍了。
ixiaohei
2023-02-11 23:07:17 +08:00
另外再补充一点心得:我后面又从事了 golang 、c++、js 等多语言开发(golang 偏多),但是对这些语言的理解深度都不够,能开发就行。但是发现 golang 岗位的面试就不会有太多八股文,甚至 golang 聊都不聊。这也是我后面比较喜欢投递 golang 的职位原因。
movq
2023-02-11 23:45:32 +08:00
@taogen 要是跳槽又要背一遍
Akitora
2023-02-11 23:53:49 +08:00
这两天狂背 JVM 八股,HotSpot 的算法细节实现这章真是看几遍都脑壳疼…
Promtheus
2023-02-12 10:58:44 +08:00
感觉这种八股的确用处不大,还不如多学习学习算法或者计算机基础夯实。但是没有办法。大环境就是要问。
TransAM
2023-02-12 11:27:17 +08:00
有啊,CPython 解释器原理啥的
wu67
2023-02-12 12:16:55 +08:00
前端 vue / react 的响应式核心原理...纯纯八股文, 涉及算法和吹牛逼两大哲学问题.
但工作中嘛, 哪个奇葩会去 hack 框架的核心逻辑, 有那功夫不如自己写了, 还引入什么框架...
hhjswf
2023-02-12 13:49:49 +08:00
@ixiaohei 那 golang 招人问什么
cyoking
2023-02-13 09:39:12 +08:00
@ixiaohei 大佬牛逼,让我醍醐灌顶,但是 juc 还是得好好学对吧
ixiaohei
2023-02-13 11:24:01 +08:00
@cyoking juc 属于 jdk 的东西,是 java 并发编程核心东西,对比其他编程语言在并发这快是排的号的东西,可以深入学习一下。jvm 一般指 java 虚拟机,大部分是 c++实现的; jdk 中很多 native 方法都是 c++实现的,需要去 jvm 源码看对应的实现。
ixiaohei
2023-02-13 11:31:40 +08:00
@hhjswf 几乎不咋问 golang 的基础知识; golang 语法比较简单,没啥问头。另外就是 golang sdk 一些底层,一般开发不会去关注,面试考察这个也没啥好的效果。
1. golang 虽然发展很多年,但是其生态某些方面来说还是很初期阶段。相比 java 来说很多的东西没有做大大一统的趋势。相比 java 的 web 开发,微服务开发,spring 和 spring cloud 都有绝对优势地位。
2. golang 开发人员使用框架很分散。具体考察框架细节,可能碰到候选人未了解和使用过过该框架的尴尬场面。
ixiaohei
2023-02-13 11:31:52 +08:00
接上:
ixiaohei
2023-02-13 11:33:41 +08:00
3. 所以我碰到的很多高级岗位面试都是问一些操作系统、网络、数据库比较深的基础知识。另外就是系统设计面试可能碰到的比较多。
1998wsc
2023-02-13 14:45:15 +08:00
@ixiaohei 前辈,你好,我是一个快毕业的应届生。想问下,进入职场后,为了升职加薪 or 跳槽之类,应该更关注于哪些方面的提升呢?学校时代,无论是老师还是学院,都给定了一些目标。但是,马上要工作了,后续对于自身提升没有什么思路。
ixiaohei
2023-02-15 10:43:59 +08:00
@1998wsc 入行之后先熟悉职业技能,我这里假设你是技术开发类,非管理、PM 类;前期需要了解的新东西非常多

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

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

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

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

© 2021 V2EX