C++太散、Java太卷 后端自救之14天转go

观前提醒

写给谁:这个帖子是写给你已经有Java或者C++基础的同学,如果你发现C++后端岗位太少太散,或者发现Java太卷,那你可以尝试辅助Go甚至主Go,本人是24届C++后端,经投递反馈后迅速主Go上岸,希望可以给到你一些参考。

叠甲

  1. 本人情况为例子,仅为24届的情况,到25、26届谁知道是个什么鬼情况,说不定因为go人数太多也卷起来也不好说,最好是自己做做市场调研。
  2. 我个人的情况,只能作为参考,我肯定没法告诉你走哪条路好,只是从基本面上给你分析,一是咱俩学历不一样、卷的程度不一样、运气也不一样,有时候上岸大厂就是需要运气的。
  3. 14天这个时间仅供参考,是我个人的学习时间,说不定你比我还短。

个人情况

学历及层次:双非本

项目情况:MIT6.248 raft kv C++版

实习情况:大三暑期实习阶段,2月份中下旬投递,意向岗位为C++后端,三月初 滴滴offer,实习进去纯Go,三天学习Go语法,开始看业务代码。

秋招情况

由于在实习时,只是用来开发,没有深入学习八股和原理,所以投递时,还是C++后端辅Go。但我发现,

  • 大厂:只要有C++后端,就一定有Go后端,反之则不然。
  • 中厂:同时中厂一般只有Go,我投递下来,有非常多中厂都有go后端岗位(简单举例,知乎、联想、虎牙、BOSS直聘、金山办公、贝壳等等),而没有C++后端开发(C++后端我印象里头只有360,我还没进面)。
  • 小厂:更是不可能用C++做后端了。我面过的Go后端的小厂,云和恩墨、七猫小说、蜻蜓FM,还有些完全不知名的等等...

所以我立马补齐了Go的一些核心数据结构,比如channel、map、slice以及垃圾回收算法、GPM调度器等等原理、以及Go常见的八股。

后面,我会以亲身经历带你快速转Go

PS:这里快速转Go的意思是,你能够通过Go后端岗位的简历关和面试,后续Go的实际开发,一定是自己需要额外学习的以及在实践中积累的。

快速转Go

快速转Go分为三个部分

第一部分(约2天),是语法,主要是能够上手业务开发,这部分只需要能看懂代码就行了,也就是只需要过一遍语法即可;

第二部分(约10天),是原理学习,也就是我前面提到的,channel、map、slice以及垃圾回收算法、GPM调度器等等原理。

第三部分(约2天),是常见的坑和八股,后面我会简单列举。

语法

由于你已经其他语言的经验,那我不建议看视频完整走一遍,我推荐看示例的方式。

参考这个网站【牛客不让放外部链接,有需要大家可以私信我】注意,有些示例并根据业务情况不同,不是都能用上,所以不必要卡在某个示例上。

当然,如果有一些疑问,需要参考视频,那自行学习即可,怎么方便学习怎么来。

原理学习

这部分内容,我实在是没法展开,因为每一个原理都是一个章节,所以我这里只简单介绍下(注意,如果你时间不够,可以不都学,学了哪些,简历写哪些即可,参考后面的面试准备部分)。

  • slice、map、channel、sync.Map、context
  • GPM调度器、垃圾回收

你可以在我的博客下,找到golang的分类,在里头找到参考博客 【牛客不让放外部链接,大家可以私信我】,里头有推荐的资料

具体原理,需要你自行学习

具体原理,需要你自行学习

具体原理,需要你自行学习

常见八股

简单罗列一下,可以参考【牛客不让放外部链接,大家可以私信我】

需要注意的是,这个帖子的八股好多我都没遇到过,我个人感觉有点为了出题而出题的意思。仅供参考

  • 进程、线程、协程的区别
  • make和new的区别
  • 数组和切片的区别
  • 空结构体struct{}{}占用空间吗:不占用,可以用unsafe.Sizeof(struct{}{} 算出为0,通常channel不需要传递数据就会采用空结构体
  • nil map和空map有什么区别
  • Go 语言函数传参是值类型还是引用类型?

避坑

  • 一定是你简历上写了,面试官才会问(当然面试官也可能异想天开问,这就是极少数情况了),所以简历上的点求精不求多。
  • 最好是问到了这个点,你就即有广度、又有深度的表达出来(开始吟唱,这里其实我也蛮有心得的,感兴趣的同学可以私信,也可以等我后续的文章)。
  • 很多的八股其实没必要,太偏了,大家真的经历过就会发现,面试官其实很忙,每天业务都做不完呢,哪还有时间研究新八股题,八股常见问题就那些,所以尽量在这些常见的问题上脱颖而出。
  • 框架学习:gin、gorm、微服务等框架,这部分,我个人认为这部分是加分项,不是必须项,一是不同公司的框架不一样,进去也需要再学习公司的框架。而是,很少有面试官问我这些框架(简历没写)
#Java##C++##C++后端##Java后端##Golang学习路线#
全部评论
爱了爱了,学长我现在26届有意向找暑假日常实习,然后按c++的进度来的话,刚好赶的上投递,并且八股也能准备,但是如果转go 的话,进度跟不上怎么办
4 回复 分享
发布于 2024-05-05 15:18 江西
大佬太强了吧
2 回复 分享
发布于 2024-05-06 19:24 广东
大佬加油
1 回复 分享
发布于 2024-05-06 20:12 安徽
go有什么项目
1 回复 分享
发布于 2024-05-07 00:41 广东
出了go八股,大家可以进我主页看😠😤
1 回复 分享
发布于 2024-05-08 20:28 重庆
还是看bg吧 双非挺难的
点赞 回复 分享
发布于 2024-05-06 13:02 广东
请问go可以走什么方向呀,像Java一样的后端开发?还是数据库、分布式这些?
点赞 回复 分享
发布于 2024-05-06 23:28 陕西
学长你的6.824是直接用C++写的吗?我记得课程里面的框架好像都是Go,你是直接都给翻译成C++了吗
点赞 回复 分享
发布于 2024-05-08 18:50 山东
m
点赞 回复 分享
发布于 2024-05-19 16:52 黑龙江
用Go辅助的话,那项目当中还需要做一个Go的项目吗?
点赞 回复 分享
发布于 2024-05-22 11:09 陕西
学长我25找暑期实习 go的raft kv 加基于gin实现的web框架 加一个实现的orm 投了20多家就约到一家面 双非约不到,还是我应该做一个大点的后端项目放上去
点赞 回复 分享
发布于 2024-05-26 13:01 四川

相关推荐

03-16 16:25
门头沟学院 Java
艰难学习Java的鼠鼠:小林coding的解释: GET 和 POST 是 HTTP 协议中两种常用的请求方法,它们在不同的场景和目的下有不同的特点和用法。一般来说,可以从以下几个方面来区分二者(重点搞清两者在语义上的区别即可): 语义(主要区别):GET 通常用于获取或查询资源,而 POST 通常用于创建或修改资源。 幂等:GET 请求是幂等的,即多次重复执行不会改变资源的状态,而 POST 请求是不幂等的,即每次执行可能会产生不同的结果或影响资源的状态。 格式:GET 请求的参数通常放在 URL 中,形成查询字符串(querystring),而 POST 请求的参数通常放在请求体(body)中,可以有多种编码格式,如 application/x-www-form-urlencoded、multipart/form-data、application/json 等。GET 请求的 URL 长度受到浏览器和服务器的限制,而 POST 请求的 body 大小则没有明确的限制。不过,实际上 GET 请求也可以用 body 传输数据,只是并不推荐这样做,因为这样可能会导致一些兼容性或者语义上的问题。 缓存:由于 GET 请求是幂等的,它可以被浏览器或其他中间节点(如代理、网关)缓存起来,以提高性能和效率。而 POST 请求则不适合被缓存,因为它可能有副作用,每次执行可能需要实时的响应。 安全性:GET 请求和 POST 请求如果使用 HTTP 协议的话,那都不安全,因为 HTTP 协议本身是明文传输的,必须使用 HTTPS 协议来加密传输数据。另外,GET 请求相比 POST 请求更容易泄露敏感数据,因为 GET 请求的参数通常放在 URL 中。 再次提示,重点搞清两者在语义上的区别即可,实际使用过程中,也是通过语义来区分使用 GET 还是 POST。不过,也有一些项目所有的请求都用 POST,这个并不是固定的,项目组达成共识即可。
点赞 评论 收藏
分享
评论
70
325
分享

创作者周榜

更多
牛客网
牛客企业服务