技术解析

迫于面试要求 Go,请教下各位 Javaer 是否有必要学习 Go,未来职场收益如何?
0
2021-06-02 13:25:01
idczone

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


不会替代 java. 学了没坏处, 职场收益肯定是+++ .现在 go 的应用也比较广泛了
而且基础很简单. 你学一下就知道了

如果是为了应对面试,不需要特意准备。面试官可能 java 八股文比你还熟。

云,容器,会抛弃 java 。
会 java 的人学 go 也就几天吧,学学也没什么。。

有这个功夫 好好刷题不好吗 笔试不刷题都进不了二面

GraalVM 不是发展的挺快的吗?为什么云和容器会抛弃 Java ?还是你觉得 Java 真就比别的语言缺了云原生的大神?

战斗开始!

战斗开始!

战斗开始!

生态问题,,,就像 go 没办法掺和 java 那套东西一样,

Java 不会替代 Go,Go 也不会替代 Java,在他们各自的优势场景他们都有无可替代的地位。只不过当前看来 Go 的学习成本比 Java 低,而工程性价比又高于 php 、c++一众,因此会有很多创业公司或非 Java 系大厂逐步选择迁移到 Go,而原本的 Java 系公司我相信还是会坚持 Java 路线

go 的最终形态,将会极度像 java

go 项目常见例子:
每个子项目或者说子模块都是一个 main.go ,里面全是 gorm 写业务代码,然后通过 http 或者 rpc 提供对外或对内接口,部署时就是把每个模块都编译成一个可执行文件丢上去执行就行了,特别简单。
最多在最外面套个壳转发,
而前端或者说客户端自成项目与 go 无关。

其实没啥必要,go 的火热完全是国人吵起来的,世界范围内 go 并不热

再者,go 现在用来写业务很痛苦,并不一定比其他语言的发开效率高

的确,面了一个字节的 prek,八股味很浓,实际根本用不到。

用容器做开发环境体验差,k8s 远程调试一下需要本地 服务+容器 + telepresence 。。。
用了段时间感觉不好,写个脚本打包镜像+telepresence 启动才好一点,拖慢开发,提高调试成本。。。

说的没错。 我就没刷题,没进字节的二面。
但我是长期主意者,我觉得这些实在是垃圾面试题,一点不考验面试者工程能力。 算法或许还能考验数学基础。Java 八股很难考验出一个工程师是否靠谱。

感谢

经历过多次各式各样的技术栈的更迭, 看了下 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 的场景, 你的职业生涯很长, 很有可能过了几年看你已经集齐了十二星座了, 多学点没坏处的


emm 为什么用 k8s 调试,,,既然你已经预设立场了,再问就没意思了。

这篇文章 告诉你我刷题的原因
https://mp.weixin.qq.com/s/Av3wcmu3vUCT3QTi7luk2Q

完全不是生态的问题,而且如果你真的关注云原生就知道 Java 是非常愿意融入云原生的,Oracle 带头搞的 GraalVM,Spring 现在也 beta 了 Spring Native,相比较于换语言,这些顶级公司更偏向于实现一个新的虚拟机,或者说用另外一种方式来支持云原生。JVM 还在 Java 就不可能会被抛弃,目前来说看不到 JVM 被替换的任何可能……

我連 vb.net 都用過


我就是云原生从业人员,,,你这句“完全不是生态的问题”,完全是为了反对而反对。
顺便说一句,,你不觉得上云最大阻碍就是 jvm 么。。。


你那都 beta 呢。。。就别拿出来说了,,,,现在 k8s 都 1.21 了,,不知道 k8s 凉了之前还能不能等到 java 。。

收益由市场供求关系决定。据我观察,学 go 的人不少,不过需求也多

战斗开始!

K8S 就等于云原生?那你的这个定义也太狭隘了吧?而且有 K8S 就等于生态好? K8S 只是云原生里面的一部分实现而已。那 Cloud Native 里面不少实现都是用 Java 来做的,CI/CD 还有监控啥的……

说的不错,不过 C#也建议了解一下,你会发现很多优美的地方

你要分清楚云、容器、云原生的区别。云和容器,和任何语言都没有关系,任何应用都可以上云,都可以打包容器。至于云原生,是一套实践方案,目前来说大部分都是基于 K8S,但是这不能说 Go 的生态就好了,因为这里面还有很多都是别的语言实现的组件……

一年半前我也是做 java 的,转到做 go 的时间不长,但是从 go 中学到了蛮多东西。具体的学习分享可以看这里: https://www.luozhiyun.com/archives/tag/go


关于 k8s 是不是等于云原生,看看份额吧。不要自欺欺人。
业务上云才是真正上云,相比于甲骨文做了什么,我更期待阿里做点什么。。。
java 像蝗虫一样侵略就是好的么?干好自己适合干的领域,别硬上。java 南玻万?
说句题外话,java 有现在的地位不还是靠生态吗?难道是因为 java 是世界上最好的语言?完全否定生态的作用,那不是打自己脸吗。。。

java 转 go 其实语法看个两天就入门了,学不学其实也没多少时间成本,有需要就学一下


从概念上你当然可以说云原生是什么,容器是什么,k8s 是什么,
但当一个产品在一个领域处于垄断地位,这个领域就等于这个产品,这没什么好争的,
不承认云原生和 k8s 的关系,就像不承认 linux 是操作系统,gnu os 天下第一。。。这么杠有什么意思呢。。。


你不觉得你说这些很阿 q 吗,还总让我去看这个去学那个,
你就像 java 一样,,管好自己吧,,别管别人了。。

抱歉,现在 Java 就是 No.1 这个你要承认,至于云原生 https://www.cncf.io/projects/ Java 有现在的地位真是因为生态?那为什么起步更早的 C,C++,更简单的 Python 没有今天的地位?难道这几个语言没有大佬写框架提供生态? Java 能有今天的地位和设计初衷是有关系的,更健壮的工程性,少但是完全足够的语法糖,几乎没有破坏性更新,在 JDK1.5 以后相当不错的性能……这些才是大部分公司选择 Java 的原因,至于你所说的生态,有什么是 Java 生态独有的吗?大数据?大数据的论文 Google 开放出来可没有说用什么语言实现,纯粹就是人家用 Java 来实现的而已,至于为什么,我不清楚,但是我认为是 Java 的特性决定的……

有人不承认云原生和 K8S 的关系了吗?你一开始说的原话 就是莫名其妙好不好,什么叫云和容器会抛弃 Java ?云和容器和语言本来就没有关系……云原生的实现和语言有关系,这个大部分是用 Go 没有问题。你所谓和生态有关,我觉得没有啥关系,这是因为 Java 语言特性决定了不适合写基础设施。

个人觉得 java 和 go 使用场景重叠,不如学学 rust,c,cpp 之类


是是,你说的对,java 南玻万。

语言能不能发展起来,就是看语言特性,和大公司的推广……和生态没有一毛钱关系,生态不也是人家一行行代码写出来的?要是照你这样说,数据库领域哪有 Go 什么事情,哪有新语言什么事情,C 和 C++才是无敌的,那为什么现在这么多数据库都是用 Go 写的?


java 南玻万!!!!!

主力 java
但是偶尔需要写点工具 /折腾下路由器啥的,我会首选 go

推荐一篇周志明大佬(深入理解 java 虚拟机作者)的文章《云原生时代,Java 的危与机》
https://www.infoq.cn/article/RQfWw2R2ZpYQiOlc1WBE

看来是被 jvm 伤害过的人

对啊,Java 现在就是在朝云原生方向转变啊。只要 GraalVM 和 Spring Native GA,然后就可以考虑一步步迁了。结果那个兄弟好像看不起 Java 一样,觉得 Java 没生态就永远不行……谁家的生态还不是一行行代码敲出来的啊,更何况 Java 还有最多的开发者,更多的大公司支持……

u1s1,只要你 java 能力强 转 go 很容易,如果只是为了面试没必要,大部分其实都是在工作上转的

之前做了个个人项目用的 go,以后是不打算用了

面向工资编程,如果你想要这份工作的话

有钱的公司都在用 go,所以收益肯定很好。
主要是 go 的性价比很高,同样的业务,抛开开发人员的成本,服务器能省很多很多很多很多很多很多很多很多钱

怎么说呢,本人是从 c 、c++、java,然后现在到 go 一路都是用过来的
简单点就是,若有选择权,
1. 用过 c++/java 之后,就不会考虑用 c
2. 用过 go 之后,一样不会再考虑用 c/c++/java
当然,go 目前不足的地方就是企业类的框架还比较缺乏与不足,属于造轮子阶段
但对于大多数业务场景来说,已经是可以一战了

谢谢提醒,最近有看一本《深入理解计算机系统》的书,里面的例子是用 C 写的,并且历史上是使用 C 写操作系统软件,感觉更能理解计算机系统。

谢谢分享,我其实也在考虑写个人项目的时候用新语言,请问是遇到什么坑了吗?

那个卷的不厉害学那个。

语法不难学
主要是思想和风格不同
我除了 c 语言,第一门学的语言就是 java,现在写啥都一个 java 味,难定

值得学,但 go 不能替代 java,国内太热衷语言崇拜了,亲历过 scala, python, node 等编程语言流行热潮,每个新语言热门过后都局限在非常窄的专业领域上和比较少的就业机会,go 有可能是例外吗? java 这类通常的业务领域方面做的太务实也太啰嗦很难普遍被取代。

大佬,腾讯哪些 bu 用 go 比较多?

这种问题每次争了半天谁也不服谁,也没啥意思,我也不想说技术或者业务方面了。
我说点实际的,不一定对,能引发一些思考就是好的,最后觉得我说的不对我也无所谓:
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 。
如果套用美苏冷战思维看的话,某个时间的确两边实力差不多,但是双方发展的速度完全不一样,那么结局很可能已经注定了。

说得好
数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服