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

迫于面试要求 Go,请教下各位 Javaer 是否有必要学习 Go,未来职场收益如何?

  •  
  •   iceteacover ·
    sunjirepo · 2021-05-08 10:11:27 +08:00 · 8221 次点击
    这是一个创建于 1292 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人 Java 工程师,最近换工作,碰到字节和 B 站的后端岗位要求用 Go 。想问问各位 Java 或者 Go 工程师,现在是否有必要去学习 Go,未来职场收益如何?或者说 Go 会不会替代 Java,如果有 Java 转 Go 经验的大佬来谈一谈更好。

    68 条回复    2021-05-11 10:23:36 +08:00
    whitehack
        1
    whitehack  
       2021-05-08 10:14:59 +08:00   ❤️ 1
    不会替代 java. 学了没坏处, 职场收益肯定是+++ .现在 go 的应用也比较广泛了

    而且基础很简单. 你学一下就知道了
    whahuzhihao
        2
    whahuzhihao  
       2021-05-08 10:15:21 +08:00
    如果是为了应对面试,不需要特意准备。面试官可能 java 八股文比你还熟。
    hwdef
        3
    hwdef  
       2021-05-08 10:15:40 +08:00
    云,容器,会抛弃 java 。
    会 java 的人学 go 也就几天吧,学学也没什么。。
    e583409
        4
    e583409  
       2021-05-08 10:16:07 +08:00
    有这个功夫 好好刷题不好吗 笔试不刷题都进不了二面
    x940727
        5
    x940727  
       2021-05-08 10:17:15 +08:00   ❤️ 3
    @hwdef GraalVM 不是发展的挺快的吗?为什么云和容器会抛弃 Java ?还是你觉得 Java 真就比别的语言缺了云原生的大神?
    Mohanson
        6
    Mohanson  
       2021-05-08 10:17:54 +08:00
    战斗开始!
    sherlockwhite
        7
    sherlockwhite  
       2021-05-08 10:36:25 +08:00
    战斗开始!
    zppass
        8
    zppass  
       2021-05-08 10:39:56 +08:00
    战斗开始!
    hwdef
        9
    hwdef  
       2021-05-08 10:44:00 +08:00
    @x940727 生态问题,,,就像 go 没办法掺和 java 那套东西一样,
    linvon
        10
    linvon  
       2021-05-08 10:48:31 +08:00   ❤️ 2
    Java 不会替代 Go,Go 也不会替代 Java,在他们各自的优势场景他们都有无可替代的地位。只不过当前看来 Go 的学习成本比 Java 低,而工程性价比又高于 php 、c++一众,因此会有很多创业公司或非 Java 系大厂逐步选择迁移到 Go,而原本的 Java 系公司我相信还是会坚持 Java 路线
    angryfish
        11
    angryfish  
       2021-05-08 10:49:09 +08:00   ❤️ 1
    go 的最终形态,将会极度像 java
    zjsxwc
        12
    zjsxwc  
       2021-05-08 10:58:43 +08:00   ❤️ 1
    go 项目常见例子:
    每个子项目或者说子模块都是一个 main.go ,里面全是 gorm 写业务代码,然后通过 http 或者 rpc 提供对外或对内接口,部署时就是把每个模块都编译成一个可执行文件丢上去执行就行了,特别简单。

    最多在最外面套个壳转发,

    而前端或者说客户端自成项目与 go 无关。
    Rwing
        13
    Rwing  
       2021-05-08 11:09:32 +08:00   ❤️ 3
    其实没啥必要,go 的火热完全是国人吵起来的,世界范围内 go 并不热
    Rwing
        14
    Rwing  
       2021-05-08 11:10:46 +08:00
    再者,go 现在用来写业务很痛苦,并不一定比其他语言的发开效率高
    iceteacover
        15
    iceteacover  
    OP
       2021-05-08 11:20:29 +08:00
    @whahuzhihao 的确,面了一个字节的 prek,八股味很浓,实际根本用不到。
    iceteacover
        16
    iceteacover  
    OP
       2021-05-08 11:23:51 +08:00
    @hwdef 用容器做开发环境体验差,k8s 远程调试一下需要本地 服务+容器 + telepresence 。。。
    用了段时间感觉不好,写个脚本打包镜像+telepresence 启动才好一点,拖慢开发,提高调试成本。。。
    iceteacover
        17
    iceteacover  
    OP
       2021-05-08 11:26:56 +08:00
    @e583409 说的没错。 我就没刷题,没进字节的二面。

    但我是长期主意者,我觉得这些实在是垃圾面试题,一点不考验面试者工程能力。 算法或许还能考验数学基础。Java 八股很难考验出一个工程师是否靠谱。
    iceteacover
        18
    iceteacover  
    OP
       2021-05-08 11:28:20 +08:00
    @Rwing 感谢
    tcfenix
        19
    tcfenix  
       2021-05-08 11:34:25 +08:00   ❤️ 8
    经历过多次各式各样的技术栈的更迭, 看了下 tiobe, 前十除了 VB 和 C#基本已经集齐了, 就从两个方面来聊聊吧, 简单的说, 推荐去学一下

    1 职场使用
    目前你听过的大厂基本分几种, 阿里美团多多主要是 JAVA, 当然也有少数用 C++的部门, 比如搜索等, 目前也没有听说他们内部有什么要换技术栈的声音, 说实话也没必要
    百度应该还是 C++为主, 字节是 Golang 为主, 腾讯分不同的 BG, C++, Golang, JAVA 全都有
    所以从这个角度看, 三种语言其实都有去处, 你也不可能保证你去的地方一定就用什么语言

    2 学这肯定都是要学的
    作为一个后台开发, 一门为了几万人的巨型大厂的软件工程而设计的语言你不太能错过啊, 自带代码风格工具, 模块管理, 你用 JAVA, 在 MAVEN 这里 肯定也踩了不少坑了吧. 你看下 C++ 20 的更新, 看下 project loom, 在很多场景下, Golang 的代码是不需要思考异步的问题, 这样代码的维护成本马上降低一大截, Golang 的协程实现以及 GC 实现都很精彩, 你认真学习之后回头再看 JAVA, C++的类似功能也能让你触类旁通,反之也是一样

    我在 16 17 年的时候开始接触 Golang, 后来换了工作, 是几乎全 JAVA 的环境, 但是我还是坚持去学 Golang, 看优秀的项目, 看新出的特性, 之后又有了需要用 Golang 的场景, 你的职业生涯很长, 很有可能过了几年看你已经集齐了十二星座了, 多学点没坏处的
    hwdef
        20
    hwdef  
       2021-05-08 11:38:30 +08:00
    @iceteacover
    emm 为什么用 k8s 调试,,,既然你已经预设立场了,再问就没意思了。
    e583409
        21
    e583409  
       2021-05-08 11:43:28 +08:00
    @iceteacover 这篇文章 告诉你我刷题的原因
    https://mp.weixin.qq.com/s/Av3wcmu3vUCT3QTi7luk2Q
    x940727
        22
    x940727  
       2021-05-08 11:56:40 +08:00
    @hwdef 完全不是生态的问题,而且如果你真的关注云原生就知道 Java 是非常愿意融入云原生的,Oracle 带头搞的 GraalVM,Spring 现在也 beta 了 Spring Native,相比较于换语言,这些顶级公司更偏向于实现一个新的虚拟机,或者说用另外一种方式来支持云原生。JVM 还在 Java 就不可能会被抛弃,目前来说看不到 JVM 被替换的任何可能……
    roundgis
        23
    roundgis  
       2021-05-08 12:23:44 +08:00 via Android
    我連 vb.net 都用過
    hwdef
        24
    hwdef  
       2021-05-08 12:43:05 +08:00
    @x940727

    我就是云原生从业人员,,,你这句“完全不是生态的问题”,完全是为了反对而反对。

    顺便说一句,,你不觉得上云最大阻碍就是 jvm 么。。。
    hwdef
        25
    hwdef  
       2021-05-08 12:44:33 +08:00
    @x940727

    你那都 beta 呢。。。就别拿出来说了,,,,现在 k8s 都 1.21 了,,不知道 k8s 凉了之前还能不能等到 java 。。
    bleepbloop
        26
    bleepbloop  
       2021-05-08 12:53:22 +08:00
    收益由市场供求关系决定。据我观察,学 go 的人不少,不过需求也多
    moyuer
        27
    moyuer  
       2021-05-08 13:15:15 +08:00
    战斗开始!
    x940727
        28
    x940727  
       2021-05-08 14:05:17 +08:00
    @hwdef K8S 就等于云原生?那你的这个定义也太狭隘了吧?而且有 K8S 就等于生态好? K8S 只是云原生里面的一部分实现而已。那 Cloud Native 里面不少实现都是用 Java 来做的,CI/CD 还有监控啥的……
    Rwing
        29
    Rwing  
       2021-05-08 14:09:51 +08:00
    @tcfenix 说的不错,不过 C#也建议了解一下,你会发现很多优美的地方
    x940727
        30
    x940727  
       2021-05-08 14:18:44 +08:00
    @hwdef 你要分清楚云、容器、云原生的区别。云和容器,和任何语言都没有关系,任何应用都可以上云,都可以打包容器。至于云原生,是一套实践方案,目前来说大部分都是基于 K8S,但是这不能说 Go 的生态就好了,因为这里面还有很多都是别的语言实现的组件……
    luozhiyun
        31
    luozhiyun  
       2021-05-08 14:21:07 +08:00
    一年半前我也是做 java 的,转到做 go 的时间不长,但是从 go 中学到了蛮多东西。具体的学习分享可以看这里: https://www.luozhiyun.com/archives/tag/go
    hwdef
        32
    hwdef  
       2021-05-08 14:26:00 +08:00
    @x940727

    关于 k8s 是不是等于云原生,看看份额吧。不要自欺欺人。

    业务上云才是真正上云,相比于甲骨文做了什么,我更期待阿里做点什么。。。

    java 像蝗虫一样侵略就是好的么?干好自己适合干的领域,别硬上。java 南玻万?

    说句题外话,java 有现在的地位不还是靠生态吗?难道是因为 java 是世界上最好的语言?完全否定生态的作用,那不是打自己脸吗。。。
    stimw
        33
    stimw  
       2021-05-08 14:29:48 +08:00
    java 转 go 其实语法看个两天就入门了,学不学其实也没多少时间成本,有需要就学一下
    hwdef
        34
    hwdef  
       2021-05-08 14:29:57 +08:00
    @x940727

    从概念上你当然可以说云原生是什么,容器是什么,k8s 是什么,

    但当一个产品在一个领域处于垄断地位,这个领域就等于这个产品,这没什么好争的,

    不承认云原生和 k8s 的关系,就像不承认 linux 是操作系统,gnu os 天下第一。。。这么杠有什么意思呢。。。
    hwdef
        35
    hwdef  
       2021-05-08 14:31:20 +08:00
    @x940727
    你不觉得你说这些很阿 q 吗,还总让我去看这个去学那个,

    你就像 java 一样,,管好自己吧,,别管别人了。。
    x940727
        36
    x940727  
       2021-05-08 14:36:45 +08:00   ❤️ 2
    @hwdef 抱歉,现在 Java 就是 No.1 这个你要承认,至于云原生 https://www.cncf.io/projects/ Java 有现在的地位真是因为生态?那为什么起步更早的 C,C++,更简单的 Python 没有今天的地位?难道这几个语言没有大佬写框架提供生态? Java 能有今天的地位和设计初衷是有关系的,更健壮的工程性,少但是完全足够的语法糖,几乎没有破坏性更新,在 JDK1.5 以后相当不错的性能……这些才是大部分公司选择 Java 的原因,至于你所说的生态,有什么是 Java 生态独有的吗?大数据?大数据的论文 Google 开放出来可没有说用什么语言实现,纯粹就是人家用 Java 来实现的而已,至于为什么,我不清楚,但是我认为是 Java 的特性决定的……
    x940727
        37
    x940727  
       2021-05-08 14:45:15 +08:00
    @hwdef 有人不承认云原生和 K8S 的关系了吗?你一开始说的原话 #3 就是莫名其妙好不好,什么叫云和容器会抛弃 Java ?云和容器和语言本来就没有关系……云原生的实现和语言有关系,这个大部分是用 Go 没有问题。你所谓和生态有关,我觉得没有啥关系,这是因为 Java 语言特性决定了不适合写基础设施。
    beexu
        38
    beexu  
       2021-05-08 14:45:37 +08:00
    个人觉得 java 和 go 使用场景重叠,不如学学 rust,c,cpp 之类
    hwdef
        39
    hwdef  
       2021-05-08 14:46:33 +08:00
    @x940727

    是是,你说的对,java 南玻万。
    x940727
        40
    x940727  
       2021-05-08 14:47:38 +08:00
    @hwdef 语言能不能发展起来,就是看语言特性,和大公司的推广……和生态没有一毛钱关系,生态不也是人家一行行代码写出来的?要是照你这样说,数据库领域哪有 Go 什么事情,哪有新语言什么事情,C 和 C++才是无敌的,那为什么现在这么多数据库都是用 Go 写的?
    hwdef
        41
    hwdef  
       2021-05-08 15:05:16 +08:00
    @x940727

    java 南玻万!!!!!
    v2orz
        42
    v2orz  
       2021-05-08 15:06:40 +08:00
    主力 java
    但是偶尔需要写点工具 /折腾下路由器啥的,我会首选 go
    zardly666
        43
    zardly666  
       2021-05-08 15:06:52 +08:00   ❤️ 1
    推荐一篇周志明大佬(深入理解 java 虚拟机作者)的文章《云原生时代,Java 的危与机》

    https://www.infoq.cn/article/RQfWw2R2ZpYQiOlc1WBE
    yazinnnn
        44
    yazinnnn  
       2021-05-08 15:11:03 +08:00   ❤️ 1
    看来是被 jvm 伤害过的人
    x940727
        45
    x940727  
       2021-05-08 15:14:48 +08:00   ❤️ 2
    @zardly666 对啊,Java 现在就是在朝云原生方向转变啊。只要 GraalVM 和 Spring Native GA,然后就可以考虑一步步迁了。结果那个兄弟好像看不起 Java 一样,觉得 Java 没生态就永远不行……谁家的生态还不是一行行代码敲出来的啊,更何况 Java 还有最多的开发者,更多的大公司支持……
    vansouth
        46
    vansouth  
       2021-05-08 15:32:53 +08:00
    u1s1,只要你 java 能力强 转 go 很容易,如果只是为了面试没必要,大部分其实都是在工作上转的
    lancelock
        47
    lancelock  
       2021-05-08 15:54:52 +08:00
    之前做了个个人项目用的 go,以后是不打算用了
    windseekerjack
        48
    windseekerjack  
       2021-05-08 16:51:24 +08:00   ❤️ 1
    面向工资编程,如果你想要这份工作的话
    NCE
        49
    NCE  
       2021-05-08 17:14:29 +08:00   ❤️ 1
    有钱的公司都在用 go,所以收益肯定很好。

    主要是 go 的性价比很高,同样的业务,抛开开发人员的成本,服务器能省很多很多很多很多很多很多很多很多钱
    xsen
        50
    xsen  
       2021-05-08 17:26:03 +08:00   ❤️ 1
    怎么说呢,本人是从 c 、c++、java,然后现在到 go 一路都是用过来的
    简单点就是,若有选择权,
    1. 用过 c++/java 之后,就不会考虑用 c
    2. 用过 go 之后,一样不会再考虑用 c/c++/java

    当然,go 目前不足的地方就是企业类的框架还比较缺乏与不足,属于造轮子阶段
    但对于大多数业务场景来说,已经是可以一战了
    iceteacover
        51
    iceteacover  
    OP
       2021-05-08 17:30:00 +08:00
    @beexu 谢谢提醒,最近有看一本《深入理解计算机系统》的书,里面的例子是用 C 写的,并且历史上是使用 C 写操作系统软件,感觉更能理解计算机系统。
    iceteacover
        52
    iceteacover  
    OP
       2021-05-08 17:31:35 +08:00
    @lancelock 谢谢分享,我其实也在考虑写个人项目的时候用新语言,请问是遇到什么坑了吗?
    u823tg
        53
    u823tg  
       2021-05-08 20:52:02 +08:00
    那个卷的不厉害学那个。
    zxCoder
        54
    zxCoder  
       2021-05-08 21:44:41 +08:00
    语法不难学
    主要是思想和风格不同
    我除了 c 语言,第一门学的语言就是 java,现在写啥都一个 java 味,难定
    halo117
        55
    halo117  
       2021-05-08 22:08:57 +08:00
    值得学,但 go 不能替代 java,国内太热衷语言崇拜了,亲历过 scala, python, node 等编程语言流行热潮,每个新语言热门过后都局限在非常窄的专业领域上和比较少的就业机会,go 有可能是例外吗? java 这类通常的业务领域方面做的太务实也太啰嗦很难普遍被取代。
    ldimple
        56
    ldimple  
       2021-05-08 22:34:23 +08:00
    @luozhiyun 大佬,腾讯哪些 bu 用 go 比较多?
    namelosw
        57
    namelosw  
       2021-05-08 23:28:25 +08:00   ❤️ 8
    这种问题每次争了半天谁也不服谁,也没啥意思,我也不想说技术或者业务方面了。

    我说点实际的,不一定对,能引发一些思考就是好的,最后觉得我说的不对我也无所谓:

    1. 现在看 Java 更卷一些,而且用 Java 当螺丝钉的感觉更强一些,毕竟是很容易拆卸的「人件」,另外每年还有培训大军涌入。

    2. Go 在上升期,然后很多比较新锐的企业用 Go 的很多,以后逐渐会有一些发展成大厂。而且很多用 Go 的公司领导层也偏年轻,有一部分还是很有人文感的,不全像经历过特殊时期的中老年人老板除了钱啥都看不上,张嘴只讲福报。

    3. 如果你现在觉得 Java 和 Go 看起来差不多,那么以后 Go 会更好一些。

    4. 如果你现在转 Go,N 年之后就有 N 年经验,如果 N 年之后形式不好被迫转就很被动,看起来 PHP 社区很多人就面临这个境地。很多人以「语言没有好坏」作为心理安慰自嗨、不思进取,最后坑的是自己(讲真现在看 Java 贴有点六七年前看 PHP 贴的感觉)。

    总得来说 Java 最终肯定还是会有很多市场的,Go 肯定也不会完全替换 Java,但是应该多从未来从业者的求职角度思考(薪资,供需比,文化等),而不是纠结最后 Java 是不是还适合写业务,现在这几个大厂最后还用不用 Java,论写业务优秀吊打 Java 的语言有一打,但是对于题主的问题回归的是市场。

    如果上面说的不够直观的话,英文好可以搜搜 90 年代的 C++ 和 Java 之争,当时 Java 还是小众玩具,大部分业务还是 C++写的。C++党基本上以轻视为主,打击 Java 功能垃圾为辅。像这种帖子最常见的论点「场景不一样,不可能替代」虽然没错,但是并不能反应最后的市场走向,因为不仅其实大部分业务可以用 Java,到现在像网络游戏之类不适合 Java 的都在强行 Java 。

    如果套用美苏冷战思维看的话,某个时间的确两边实力差不多,但是双方发展的速度完全不一样,那么结局很可能已经注定了。
    pkwenda
        58
    pkwenda  
       2021-05-09 01:05:18 +08:00
    @namelosw #57 说得好👏🏻
    drackzy
        59
    drackzy  
       2021-05-09 05:22:20 +08:00
    已经做了几年 java 不建议转了。
    James369
        60
    James369  
       2021-05-09 08:22:26 +08:00
    不是革别人的命,或者被别人革了命。钦佩在编程领域不断前行的人,虽然前路充满了未知的凶险的坑
    darknoll
        61
    darknoll  
       2021-05-09 09:11:47 +08:00
    你做 java 的非要去找 go 职位的,然后还来问要不要学 go ?
    luozhiyun
        62
    luozhiyun  
       2021-05-09 11:15:34 +08:00
    @ldimple 你说的是 bg 吧,这个没有数据统计哦,你可以从招聘岗位大致看一下
    intmax2147483647
        63
    intmax2147483647  
       2021-05-09 22:55:15 +08:00
    说 JAVA no.1 的怕是只活在墙里,那个扯云原生,什么生态不生态的,没意思,GitHub 都被国内写 JAVA 的占领了,能不 NO.1 么
    Jelly97
        64
    Jelly97  
       2021-05-10 02:47:23 +08:00 via iPhone
    @Rwing 可是我们不都是在国内工作?
    iceteacover
        65
    iceteacover  
    OP
       2021-05-10 10:07:28 +08:00
    @darknoll 用 Go 的厂家一般不排斥 Java 背景,支持进去以后转。我理解这就说明转 Go 的代价不高,或者市面上没有这么多 Go 开发者,而现存 Java 工程师好转。

    心仪的厂子有需求说明市场有些变化,为什么要固步自封呢?身为研发,一半开发一半研究才好走的更远。
    x940727
        66
    x940727  
       2021-05-10 14:10:12 +08:00   ❤️ 2
    @intmax2147483647 不太清楚怎么贴图,这么说吧,你在 Google 趋势里面搜索 Java JavaScript Go 这三个语言,Java 的热度是 Go 的三倍,你说我活在墙里就过分了,无论墙里墙外,Java 程序员都是最多的……
    x940727
        67
    x940727  
       2021-05-10 14:16:02 +08:00
    DeWjjj
        68
    DeWjjj  
       2021-05-11 10:23:36 +08:00 via Android
    go 快,而且转 go 不费力。
    php 程序员死也死在不进步上,他们几乎就是 00-15 那段时间第一批老程序员了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1360 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 17:36 · PVG 01:36 · LAX 09:36 · JFK 12:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.