V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rd554259440
V2EX  ›  Java

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

  •  
  •   rd554259440 · 2021-02-03 23:14:50 +08:00 · 5915 次点击
    这是一个创建于 1149 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言  ·  2021-02-04 09:35:08 +08:00
    嗯嗯,感谢各位大佬们的指点,这边咸鱼技术渣做的都是一些公司内部的项目,没啥高并发,没有做过互联网的项目,遇到的比较少吧,多线程的话基本像定时任务那些也是用的 spring 框架的,发发邮件定时处理些数据啥的,JVM 的话就没缘碰到过了,感谢大佬们的解答,那我到时再好好背背这些,再出去试试。
    23 条回复    2021-02-05 12:06:29 +08:00
    thetbw
        1
    thetbw  
       2021-02-03 23:40:01 +08:00 via Android
    进去还是拧螺丝
    young1lin
        2
    young1lin  
       2021-02-04 01:24:50 +08:00   ❤️ 16
    其实他们的要求就是:

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

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

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

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

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

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

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

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


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

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

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

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

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

    这就是部分公司的情况。实际上我很赞同楼上的说法,大部分公司招人,其实更应该看的是业务理解和工程能力,不是背八股的能力。
    a719031256
        16
    a719031256  
       2021-02-04 16:08:18 +08:00
    @idoggy 目前在做一个全国 500 强的企业系统,被公司外派到母公司这边进场,三面,每次 4 个面试官,那阵仗被吓惨了,分布式多线程变着花样的问,然而现在在撸纯业务代码,毫无技术的项目。。。。
    hgjian
        17
    hgjian  
       2021-02-04 17:44:20 +08:00 via Android   ❤️ 3
    @a719031256 会修航母吗?会。好,你被录用了;去拿个拖把,把甲板拖一下。
    dengtongcai
        18
    dengtongcai  
       2021-02-04 17:51:32 +08:00
    哈哈哈 面试是面试 工作是工作
    SuXinXing
        19
    SuXinXing  
       2021-02-04 18:01:24 +08:00
    我理解这些东西没必要全会,但是会的越多,你将来的薪酬还是有质的提升,比如现场出问题了,你可以利用这些技术去处理个问题,然后领导看到了,对于你以后的发展和工资还是有提高的。
    a719031256
        20
    a719031256  
       2021-02-05 08:43:50 +08:00
    @hgjian 。。。。。。。一个小东西,都要拆分成 n 个模块,要开会三小时才能决定一个大概
    superBearL
        21
    superBearL  
       2021-02-05 11:45:06 +08:00
    同小公司大部分是做内部项目,接触不到高并发,目前狂补这部分知识,感谢楼各位上大佬的指点
    superBearL
        22
    superBearL  
       2021-02-05 11:50:38 +08:00
    同时想问下有没有熟悉 Java 面试的小伙伴,最近面试的侧重方向大致是啥?知识点太多了看不过来。
    比如说:JVM 、多线程、SQL 、NoSQL 等方面?
    分布式方面的 zookeeper 、kafka 、k8s 等问得多不多?
    Takamine
        23
    Takamine  
       2021-02-05 12:06:29 +08:00 via Android
    JVM 调优问题是面试专属我信。多线程也只是当八股文去背,确定不是在给人埋坑吗。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1042 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 22:38 · PVG 06:38 · LAX 15:38 · JFK 18:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.