Golang Go语言中 现在 Java 转 go 是不是个好时机?

发布于 1周前 作者 ionicwang 来自 Go语言

目前一年 Java 开发经验,初中的时候入坑了 pascal 、python ,后来一直主学 c ,之前也一直瞧不上 Java ,认为是烂大街语言,会的人太多,什么杂七杂八的培训班机构都在教,但迫于就业压力,大四关在宿舍自学了一学期 Java ,从实习到现在都在做 Java 开发,但感觉还是变扭,看 Java 始终不太顺眼,不是我的“本命”语言,但如今再转嵌入式或者 c++也不现实,去年年底一些契机接触了 go (入坑的主要原因也是听说 ken Thompson 参与了 go 的设计)用起来感觉很对胃口,陆续读完了 go 圣经,平常摸鱼的时候也会看看 github 上的开源项目,平时会用 go 写写小工具来写协助开发(文本文件批处理、并发 http 请求之类的),主要现在 java 越来越卷,实在是不想背那些八股文
Golang Go语言中 现在 Java 转 go 是不是个好时机?


更多关于Golang Go语言中 现在 Java 转 go 是不是个好时机?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

61 回复

golang 一样八股文

更多关于Golang Go语言中 现在 Java 转 go 是不是个好时机?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


经历差不多,写了三年 C 后转 Java 找工作的~

转不转还是取决于你的个人发展意向,与语言无关,比如你想去字节之类的,那么 Go 的岗位多,你会用,而且顺手,那就转。

面试半年来的经验看,现在稍微牛逼点的公司,Go 面试也是造火箭(挺卷的),并且如果有 Java 经验,面试会对比提问的~ Java 能回答道多深,Go 就会对比问到多深。

一样八股文,我开始写程序的时候,Java 会 ssm 就有工作,懂点 Spring 源码就直接 OK ,JS 更是会 jq 就收,现在你看看这两职位八股多不多。

建议你面向领域编程,而不是面向语言。

我觉得首先要考虑的是你会不会一直在一线城市呆着,golang 岗位二三线太少了。
八股文其实都差不多。

难道学 go 的人就不用学 tcp 了吗?

转 Go 就不要背八股文了?遇到傻逼面试官,还是还是会问变态八股文啊,这个锅甩给 Java 不太合适吧?

烂大街,什么人都会? 你确定不是 Java 开发效率高,各种框架工具都非常成熟,bug 少,坑少,开发成本低,老板容易招人,产品上线速度快?毕竟开公司不是搞慈善,也不是拿经费搞科研,手下一帮人要吃饭的。按照这个逻辑,越小众的语言越好喽?你应该转 VB, delphi, matlab 之类的语言,没几个公司用…

建议转 RUST ,入门难,不会卷

已经做 Java 的不建议再转 Go 了,路走窄了。
Golang GC 夺命连环 11 问,各种八股面经早就全网都是了。
Go 也早就卷了,职位少很多,二线以下基本没有 Go 。

不建议,Go 做基础服务有优势但是做业务比不上 Java ,主要是没有 spring 等一系列框架这么完善的生态。
楼上有人说需求少,其实想想很简单,原来已有的业务不需要 Go 写,小公司也不需要 Go 去做基础服务。

本来有 Java & Go 两条道 为什么只走一条 楼主是科学家思维吧

个人认为 Go 的八股文还是比 Java 容易很多的,语言本身比较精简。Java 八股文要背的内容实在是太多了。

OP 的经历和我很像,我也是初中 Pascal 学起,大学开始学 Java ,工作先在南京搞了 3 年 Java (Android + Server) 之后跳槽去上海又搞了一年 Java ,之后顺利说服老板转 Go ,现在除了一些非常老的服务都换成 Go 了。

我的感觉是 Go 的代码理解起来心智负担要低一些,特别是看第三方代码的时候能节约不少时间。工具的升级成本相对于 Java 也要低一些。

对于 OP 的问题,我觉得如果年纪还轻就放心去试,等年纪大了就承担不起这个试错成本了。能找到匹配自己思维模式的编程语言,工作起来确实会轻松不少。

八股文这种东西跟语言没关系,关键看就业市场卷不卷,本来大家都是 CRUD ,你会 SQL 语法就行了,那点破数据量 根本不好意思谈索引优化 分库分表,但是只要有人开始卷了,就代表你要被迫加入这场八股文战争,这是用人市场决定的,不是你个人能决定的

我建议尽快转,不然以后用了 c# kotlin typescript 再写 go 就写不下去了(玩笑

不过不开玩笑的说,也是建议选择自己喜欢的东西,有兴趣才有学习动力,实际搬过砖能更好体会各个语言优缺点吧(我感觉 Java 是发展比较慢的,Go 除了 goroutine 也没有什么亮点。社区还把编译速度作为一项指标,我是怀疑未来会不会在语言特性上摆烂的。)

go 的语言特性就是不需要语言特性, 所以不用担心摆烂的, 因为没烂可摆

毕业一年多从 Java 转 Go ,从小厂跳到了大厂

那面试的时候岂不是和一帮牛人竞争,既然会 RUST 的都是高手

嵌入式,驱动这类非常需要生成代码非常可控的地方,还是需要低糖的语言的,不过这类场景应该都是用 C ,
Go 现在的应用场景直接开摆不太合适吧…

go 是真简单啊,用起来心智负担很低,再学其他语言都有点不适应了,最近看 rust ,复杂得一匹

写代码就不存在什么转语言的事,用什么语言不是写?爱用什么写就用什么写,用什么语言好赚钱就用什么语言写。

永远面向工资编程,找一门工作日语言,找一门或几门周末语言即可。

现在是不是买房的好时机呢?

如果只是为了兴趣可以转。
默认你是后台方向。如果说因为 java 越来越卷不想背八股文,那这个完全没必要,跟 go 没啥区别。java 方向也可以找 go 方向的岗位,大厂的 go 岗位一般不介意候选人本身的语言方向。并且这两者八股文的重合度挺高的,除了语言基础外,都是 mysql 、redis 、mq 、rpc 等那一套。我本人是 java 方向的,一句 go 都没写过,java 和 go 岗位都面过不少,两个方向的面试官问的东西都差不多。

rust 就业机会多吗?

go 世界难道现在不是正在造 jvm 世界中的各种轮子?

Go 八股文翻来覆去也就那么几个方面,Goroutine 调度、GC 啥的,总结出来的八股文也不是非常成体系,面试官可能也不会很懂。不像 Java 光深入理解 JVM 这一本书就够面试官考的了。

想不卷就学点偏门的,比如 lisp 及其实现,Lisp in Small Pieces 。

感觉 op 对 Java 的怨念很深啊,我最开始的时候也不喜欢 Java ,后来上手后感觉还蛮爽的,首先"认为是烂大街语言,会的人太多,什么杂七杂八的培训班机构都在教",这不是表示入门门槛低吗?但是没有说上限也低啊,op 自己也说了迫于就业压力,自学了一学期 Java ,从描述里面看,只是自己用起来觉得很恶心。再说到八股,golang 的八股也只是现在相对 Java 比较少,也就是 GC ,并发,里面数据结构实现等等。那其他数据库 /操作系统 /网络等等不一样有?还不是一样要背?

我一开始也是看不上 Java.
上学时看汇编,C++.
emmm,然后工作不好找.
后来学 Android, 然后进了现在公司转 Java. 感觉, 真香.
不过最近感觉一些小服务增多了, 总体内存占用越来越高了. 开始学 Go, 把成本降降.

java 是最好找工作的,搞清楚你是为了什么去学一门语言

你才一年经验,谈语言的优点和缺点感觉有点资格不够,(当然我也不是说我资格就够了)先做三年再说吧。。。。转 go 也不是完全的抛弃 java 啊,同时学,反正技多不压身,看你工作经验短 应该是年轻吧,还有很多精力可以用来学习的

rust 是要有 cpp 的底吧,这和劝退没差别吧,哈哈哈

已经开始了就继续

再国内,业务场景来说,go 不比 java 差

我正考虑从 Go 转 Java 呢…

语言只是工具,关键还得看你自己的技术功底。就好比你如果是个小说家,你写小说用 word 用 md 还是用笔和纸都不重要,重要的是你的作品

我觉得我做的最睿智的一件事,就是大一大二看不起 web 开发觉得烂大街,整天学网安、汇编,之后又学人工智能,浪费了两年时间

go 拿来些写业务代码 crud , 感觉还不如 Java ,spring 全家桶 写业务代码爽的一批,go 的异常返回劝退多次。。国内接一些第三发 sdk 的话基本也没有。。

我从来没用 Java 写过项目,但最近甚至想去研究一下 Spring 的源码……Java 好东西多着呢。
当然,烂大街也是真的……

#35 没事,你再读个研读个博,相当于赢在起跑线(doge

算是不错的时机

主流语言写 web 没什么本质区别,当然 java 和 php 的生态更好一些,5 年经验以内的,我建议不要跳语言,好好把底层、网络、web 框架掌握了,最好熟悉一下 docker 和 k8s

转语言的意义是什么? 你要么转行 换战场,要么 就想办法往上面爬, 换个语言不还一样是程序员? 有什么改变吗?

那 CPP 要有什么底? 汇编吗? 汇编要有什么底? 机器码? 机器码要有什么底? 要学什么语言就直接学,要什么底啊?

现在是个语言就八股文来一套。转不转看你的应用场景。不过,Java 在找工作领域还是稳稳的龙头老大,同样都要背八股文,转不转都一样,还不都得科举考试?

为啥不能双修?

看想要做什么,就写业务来说目前 go 是一门很烂的语言

八股文不是语言的问题,是面试的问题。

我感觉 OP 是喜欢 go 这门语言的,喜欢很重要,从事自己喜欢的工作能带来更多价值,楼上很多建议没有考虑到这方面。

我建议 go 可以业余继续玩着,能多学点就多学点。工作上有机会就说服 leader 接受你用 go 写某些小组件。
要正式转向 go ,我觉得必须要有开发过规模大一点的 go 项目的经验。从我面试过的 go 应聘者来看,如果只是业余写玩具小项目,太容易被问穿了。

另外在跳槽的时候可以有倾向性一点。即使不能找到合适的 go 的岗,也要考虑新公司的技术架构,例如他们又有 go 又有 java ,那你就很容易在团队内说,这个我想用 go 写……但如果这个团队里根本没有 go 的岗,你提出建议的时候领导就会考虑(那我们以后是不是还得额外招 go 工程师来维护这些代码?我们有没有这个资源去招 go ?)
像我在团队内是第一个开始用 go 写的,原因就是,我们产品使用微服务架构,中间都是 gRPC 调用,不关心某个服务的具体语言。所以我很容易跟 leader 讲,某个组件适合用 go 重写,给我一个月我把它写得更好。

所以我觉得你要是真的喜欢 go ,要考虑的是如何找到一个路径去向它靠拢。不需要像壮士断腕一样切断自己之前的经验和经历,重点还是你怎么提升自己 go 的能力,和怎们把它应用到工作中。

java 的行为太隐式了,好多运行时行为,实习的时候学了一个暑假感觉写吐了,还是 go/rust 舒服一些

不会。因为 go 都是 C/C++转的,你一个 java 转 go 干嘛 ?遇到 C++项目会么 ?

写业务的话不要转过来。。
新项目正考虑转回 Java 或者.NET 呢。

java 吃饭, 闲时玩 rust, 不好吗?

现在是不是面试都恨不得你能写一门语言出来,实际工作就是做下数据可的 crud

刚从 java 转 go 两个月,没有错误 stacktrace ,出了线上异常,日志里面信息少的可怜简直想掀桌子。依赖管理也是简单粗暴,上游的库都不带版本号,通通用最新的版本。go 为了用起来简单但是要管理好反而复杂了。

规模大一点的项目具体指多大呢 如果面试时我的 go 项目都是一些 github 上的项目,那问题大不大?

倒也没有一定之规,不会有人给你讲「代码行数>多少」、「依赖多到 xxxx 」就算规模大的项目了。
项目经历全是 github 也可以啊,重要的是你有深度参与有价值的项目,要形成一些自己的实践和理解。

举例来说,我面试会问 goroutine 开多了怎么确保不会出现竞争条件?
很多应聘者就说「既然在写多线程并发的程序,我当然会在数据使用上非常小心,避免写出这样的程序」
这就很废话,属于张口就来,不像是写过复杂项目的。
我个人认为更好的回答是:go 工具链中自带了竞争检测器,我只需要在 go run 或 go test 时加参数 -race ,编译器会插桩代码,所有代码在访问内存时,会记录访问时间和方法。同时运行时库会观察对共享变量的未同步访问。当这种竞争行为被检测到,就会输出一个警告信息。只要我的测试覆盖足够充分,就能在开发阶段消除掉竞争条件。

另一个例子,没用 go 写过守护进程的人是不会思考这种问题的:
https://v2ex.com/t/851071
但守护进程是多么常见的一种需求——对一个需要稳定在后台运行的程序,你多少都会接触到这样的思考。
有过这种思考的我就认为是写过复杂项目的。否则就只能说是会语法而已。

Go 自身八股可能比 Java 少一些,其他中间件、数据库、mq 、微服务其他的八股都一样的。
不建议做 Java 再转 Go , 路走窄了,职位数量少很多。二线城市一下基本没有 Go 职位。

怎么去转的 重新学一门语言 + 上手实践 + 项目经历需要很多时间吧🤣

针对“Java转Go是不是个好时机”的问题,作为IT领域GO语言方面的专家,我认为需要从多个维度进行分析。

首先,Go语言以其简洁的语法、高效的编译和执行速度,以及强大的并发处理能力,在高并发后台开发、微服务架构等领域展现出独特优势。随着微服务架构的流行,Go语言的市场需求持续增长,为Java开发者提供了转型的契机。

其次,Java和Go在生态系统、应用场景和思维方式上存在显著差异。Java拥有庞大而成熟的生态系统,而Go则更注重简约和高效。因此,转型过程中需要适应Go语言的并发编程模式和简约哲学,这可能需要一定的学习成本。

最后,是否选择转型还需考虑个人职业规划和技术积累。如果当前Java项目稳定且符合职业规划,转型可能并非必要。然而,若寻求在微服务、高并发等领域的发展,Go语言无疑是一个值得考虑的选择。

综上所述,Java转Go是否是个好时机,取决于个人职业规划、技术需求以及市场趋势。在做出决策前,建议深入了解Go语言的特点和优势,评估自身转型的可行性和必要性。

回到顶部