为什么同薪,同样都是外包,有的就面试问的那么深?

216 天前
 miaeLKK
连 jvm 新生代老年代我都讲了,还问啥来着我也忘了,总之就是问的很深,没过,可能我学到的还是有些浅显。然后同样的另一个外包,只问问项目经验就过了,还比那边薪资高点

我们有必要了解这么深吗?这么多东西感觉根本学不了那么深啊,难道有人天天研究源码吗?不干活吗?封装出这些框架不就是为了降低大家工作量,专业的提高代码质量吗

所以就老有种感觉,感觉不学这么深就要被淘汰了。到底是哪错了?
2487 次点击
所在节点    职场话题
24 条回复
imokkkk
216 天前
几年前确定没必要问 现在可选的人太多了 再问基础的达不到筛选的效果
morgan1freeman
216 天前
@morgan1freeman 所以分代的好处,就是可以把这个 有向图 进行 切割,有些图的 节点就不用去算了,或者直接把老年代当做 GCRoots 也就是图的根节点 去分析,看看有没有可以清理的对象,这样可以减少图分析的时间复杂度,另外还有一些优化的地方,就是逃逸分析,变量没有多线程共享,可以只停顿这一个线程,对这个变量进行 图分析,看是否可以回收
morgan1freeman
216 天前
@morgan1freeman #20 另外怕你听不懂什么叫做实时性,举个简单的例子就是,你的代码 执行一段时间,然后会停顿下来(物理时间意义上的停顿,在你的程序本身看来 它是连续执行的),然后让 JVM 的代码接管,这个时候 它会去处理内存是否回收利用的问题

至于上楼所说的 safepoint 你可以参考这个
https://github.com/fqdeng/jvm-suspend-working-thread-mechanism
这是我写的例子,主要 JVM 是用了 mprotect 内存回调函数,当机器读内存取指令的时候 会触发一次回调,逻辑流会被 JVM 接管,JVM 接管后 处理完,才是你的 java 代码 开始执行

至于 safepoint 怎么实现,字节码的时候,就直接下 埋点,字节码跑到那里 就把逻辑流切到 JVM 看看是否要做清理动作,如果编译成了 二进制汇编码,就是上述的 mprotect 函数 进行埋点,等你的程序执行到位了,mprotect 就会接管你的 java 代码逻辑流,切换到 JVM 代码

早些年虚拟机代码 可能有些问题,有的地方 没下埋点,结果这 java 线程 跑到系统调用,没有在系统调用前 塞 safepoint 或者其它运算 一直 for 个不停,但是每次 for 里面{} 又没有塞 safepoint 的 这个时候,java 线程停不下来,JVM 没法进行图分析,现在基本上不用操心这个问题了,

前几年 golang 也出现过这个问题,貌似后面官方也迅速解决了,

总而言之,基础是图论算法,后续都是根据工程实践 延伸的知识
morgan1freeman
216 天前
@miaeLKK #12 另外说一句,懂这么多也没用,照旧也是 CRUD ,这是市场决定的,不是个人能力决定的,欧美的程序员 大多在公司也是 CRUD ,业余做一做自己开源项目为社区发电,我们是因为被压榨太狠,没时间搞而已,论技术能力跟工程实践,国内是不差的,开源做不起来 是社会资源分配问题,不是一个技术问题

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

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

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

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

© 2021 V2EX