这几天看 Java 招聘需求的一些疑问

2021-02-03 23:14:50 +08:00
 rd554259440

最近被公司安排到只开发报表的咸鱼,完全不用写代码了,怕越待越废,而且公司管理有点问题,想着看看换个环境,看了一圈好像要求会分布式事务,分库分表经验的少了,还看到有些要求多线程编程,熟悉 JVM 调优的。我只在小公司和外包待过,做了有差不多 3 年了,工作中这些都没接触过,也感到很疑惑,多线程和 JVM 调优这些是具体应用在哪些场景下的,因为我觉得这些应该框架中就已经做了很大部分工作了,希望经验丰富的大佬们指教下,谢谢。(不知道发的版对不对,第一次发,错了的话,麻烦说一下,谢谢)

6223 次点击
所在节点    Java
23 条回复
thetbw
2021-02-03 23:40:01 +08:00
进去还是拧螺丝
young1lin
2021-02-04 01:24:50 +08:00
其实他们的要求就是:

看过《深入理解 Java 虚拟机》《 Java 并发编程的艺术》,并且能够讲出原理,背出来。

实际工作中,最多让你去生产环境看看是哪些代码造成的系统 Hang 住或者响应时间低。

如何优化,JAVA_OPTS 这个环境变量,比如根据实际机器内存大小调 Xms Xmx 一样大了,避免内存碎片,低版本的 JDK 调大永久代防止永久代 OOM 了。关闭偏向锁,开启逃逸分析了。

使用 JDK 自带的工具诊断线上环境。

其实不会让你真正干这些的,除非是小公司,这些运维帮你搞定了,但是你要了解原理。多线程那个就更悬了,平时可能根本用不到,最多用用线程池方面的,所以这个你讲清楚各个参数,流程,优化,以及拒绝策略这些基本 ok 了。还有 synchronized ( MarkWord,锁的升级与降级),volatile ( MESI 协议,Happesn-before ),JMM 这些八股文一般就行了。
trevis761923
2021-02-04 08:12:15 +08:00
多线程主要还是处理异步请求比较多吧.
xiaTianChiXiGua
2021-02-04 08:44:33 +08:00
进去会发现 狗屁多线程都没用上
uselessVisitor
2021-02-04 08:47:49 +08:00
没啥用,多线程一般都 MQ 了
idoggy
2021-02-04 09:04:06 +08:00
多线程的知识面很多的,工作中也要用的。
你做的项目可能真的是太小了,框架里的线程池 new 一个出来啥都不改直接用是会 oom 的。redis 刷缓存不上锁遇上高并发是会击穿数据库的。
像 volatile 这种你基本不会用但是也要知道,防止有新人写代码给你埋雷。
定时任务无论是 quartz 或是 spring 自带的你总得知道线程池的运行机制,不然任务某天不执行了都意识不到是队列阻塞了还在那儿瞎折腾。
mikael
2021-02-04 09:25:25 +08:00
其实这些都是 hr 发布的,hr 们都是从其他招聘信息里直接复制来的,具体的还得看用人部门的要求,而 hr 简历的筛选就是根据你简历中是不是有这些八股文的内容,拿到面试资格后,就是跟技术部门直接聊了,而聊的内容都是你简历上写的,所以,你简历上的写的内容先得过了 hr,然后你还得知道(万一问了你不知道,就尴尬了),所以这些八股文就背背好了。
lewis89
2021-02-04 09:36:55 +08:00
@young1lin #2 差不多就这样了,所谓的 JVM 调优 也是很菜的,一般不去改算法,很难做到 低延时 高吞吐量..
passerbytiny
2021-02-04 09:55:17 +08:00
国内招聘要求“都”是随便写的,别太在意。(你写得太精确,那是直接告诉竞争对手自己准备干啥)

即使是用人部门发得要求,也是随便写的(毕竟最后还是靠面试),因为用人部门跟 HR 之间也是不能脱光见面的。
fisher335
2021-02-04 11:24:15 +08:00
我看好多招聘都需要 jvm 性能调优,但是实际应聘来的连 jvm 是什么都不知道
hgjian
2021-02-04 12:29:07 +08:00
@passerbytiny 最后一句话啥意思啊?
hxndg
2021-02-04 12:57:53 +08:00
我个人觉得。。。。很多的线程同步的东西实际上底层都给你做了。。。。

类似什么 MCS,CLH,钟表锁之类的别说你不知道,面试官可能也不知道,但是知道了又能怎么样呢? TAS 和 TTAS 的性能为什么不同,底层 MESI 造成的后果这些都不会有人了解,除非你去做内核。

也就我们拿 C,有时候需要自己设计多线程操作的才会实现自旋锁之类的多线程,
有的时候我们抄 linux 内核的东西也得理解一些锁的操作等等。


所以你就多刷刷算法,和基础调优之类就够了

大厂内卷现在和高考差不多,都是不看工程能力,一套题目一把梭。
zzzain46
2021-02-04 13:27:41 +08:00
@hgjian 我猜 HR 容易带着东西跑路
Userh
2021-02-04 14:00:35 +08:00
@young1lin 学习了
FantaMole
2021-02-04 15:26:03 +08:00
对部分公司来说,多线程和 JVM 就是用在面试场景下的。反正这种东西也没什么好说的,会背就是了。

假设我是面试官,我想招人,想问多线程相关,就像楼上说的 volatile 。我就先问 volatile 有什么用?你回答个七七八八,那就算合格。

那我再问个,两个线程循环执行 x = x + 1, 变量 x 使用了 volatile 修饰,会不会出问题,为什么会出问题?你又回答上来了,我就比较满意了,知道你碰到这个不会踩坑。

最后我问,volatile 具有可见性为什么不能保证原子性?可能我作为面试官自己都拎不清。你要能详细答出来,只刷新缓存不刷新寄存器这一套机制。搞不好你的水平能当我的上司。

这就是部分公司的情况。实际上我很赞同楼上的说法,大部分公司招人,其实更应该看的是业务理解和工程能力,不是背八股的能力。
a719031256
2021-02-04 16:08:18 +08:00
@idoggy 目前在做一个全国 500 强的企业系统,被公司外派到母公司这边进场,三面,每次 4 个面试官,那阵仗被吓惨了,分布式多线程变着花样的问,然而现在在撸纯业务代码,毫无技术的项目。。。。
hgjian
2021-02-04 17:44:20 +08:00
@a719031256 会修航母吗?会。好,你被录用了;去拿个拖把,把甲板拖一下。
dengtongcai
2021-02-04 17:51:32 +08:00
哈哈哈 面试是面试 工作是工作
SuXinXing
2021-02-04 18:01:24 +08:00
我理解这些东西没必要全会,但是会的越多,你将来的薪酬还是有质的提升,比如现场出问题了,你可以利用这些技术去处理个问题,然后领导看到了,对于你以后的发展和工资还是有提高的。
a719031256
2021-02-05 08:43:50 +08:00
@hgjian 。。。。。。。一个小东西,都要拆分成 n 个模块,要开会三小时才能决定一个大概

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

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

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

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

© 2021 V2EX