C++太散、Java太卷 后端自救之14天转go
观前提醒
写给谁:这个帖子是写给你已经有Java或者C++基础的同学,如果你发现C++后端岗位太少太散,或者发现Java太卷,那你可以尝试辅助Go甚至主Go,本人是24届C++后端,经投递反馈后迅速主Go上岸,希望可以给到你一些参考。
叠甲:
- 本人情况为例子,仅为24届的情况,到25、26届谁知道是个什么鬼情况,说不定因为go人数太多也卷起来也不好说,最好是自己做做市场调研。
- 我个人的情况,只能作为参考,我肯定没法告诉你走哪条路好,只是从基本面上给你分析,一是咱俩学历不一样、卷的程度不一样、运气也不一样,有时候上岸大厂就是需要运气的。
- 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、微服务等框架,这部分,我个人认为这部分是加分项,不是必须项,一是不同公司的框架不一样,进去也需要再学习公司的框架。而是,很少有面试官问我这些框架(简历没写)