最新《Go学习路线图》及就业准备

前言

下面是Go学习路线思维导图,我将整个roadmap分成了七个部分,由浅入深分别是:语法、日常开发、web、

分布式、其他组件、项目、就业进阶。

Go语法

和其他语言一样,Go也需要从基础开始,它的关键字比起其他语言的关键字少很多,一共只有23个。在接触完变量声明、流程控制、循环控制、各类数据容器之后就掌握了Go语言的基础。

之后可以从函数、方法、结构体开始深入学习,在接触标准库之后进行并发编程和网络编程的学习,尤其是并发编程需要深入理解与学习,因为Go本身就以并发方便著称,只需要一个go关键字就能开启一个goroutine。再学习Go的包管理以及测试相关的内容作为补充,整个学习路线就算是完成了。

就业还需要学习Go底层相关的内容,比如常问的各类包:反射、unsafesync、锁、slicemapwaitgroupchannelcontextgc、内存分配等等内容,一定要深入底层,深入源码级别的学习。

日常开发工具

  • Linux常用命令:因为后台开发人员通常都是使用的Linux服务器,所以常见命令必须得熟悉,学有余力的话还可以了解一下Linux的设计与实现,比如Linux中的进程线程调度、内存管理等等。
  • Git:分布式代码管理工具,多人协作开发通常都会使用到Git。
  • Markdown:一种简单明了的文本编辑语法,通常我们可以使用简单的工具例如Typora、语雀来编写Markdown文档。
  • 环境:一个方便的Go开发环境,推荐Goland

Web

首先要了解HTTP协议相关内容,比如几种HTTP请求类型,RESTFUL API风格、HTTP HeaderHTTP Body相关内容。然后通过原生的net/http编写简单的服务端代码。

完成以上步骤之后可以学习用途比较广泛的web框架:gin或者hertz,以及常用的orm框架:gorm,其他的常见第三方库可以按需学习,例如日志库zap,配置文件库viper等等。

分布式与微服务

Go语言以并发简单著称,所以面试中问及分布式的概率会比其他语言更多一点。入门分布式首先推荐了解一些分布式理论,如:CAP理论,PACELC理论,NWR理论,多数派理论等等,在了解完基础理论之后阅读Raft算法论文以及Gossip协议等分布式一致性算法,除此之外还可以学习MIT 6.824课程,这也是入门分布式最经典的课程之一。

分布式领域内容非常繁多,如分布式事务,RPC,分布式组件等等。推荐大家先从原生的net/rpc入手,了解什么样的方法才是Go语言中的一个合规的RPC处理方法。然后继续学习gRPC协议以及protobuf数据格式、以及Go的微服务库go-zerogo-micro等,相比之下go-zero使用的更多一点,它也不仅仅是一个微服务库,更像是一个工具库,内容庞大,功能繁多。

各类组件

存储

关系型数据库和非关系型数据库都必须了解,其中最具代表性的当属MysqlRedis,除此之外,根据需要还可以选学其他的数据库,如搜索数据库ES、文档型数据库MongoDB等等。

MQ

当前市面上也有着各种各样的MQ,用的最多的应该是Kafka,同时Pulsar作为新一代云原生消息队列,也具备自己的优势,例如数据冷热存储,死信队列等等机制。NSQ是一个由Go语言开发的轻量级消息队列,有需要的同学也可以进行学习。具体情况按需学习。

云原生组件

Docker:容器领域龙头,提到容器我们第一时间都会想到Docker

Prometheus:监控领域龙头,性能非常强大,能够支持各类常用指标以及自定义指标,通常配合Grafana看板进行使用,方便查看项目状态。

Kubernetes:容器编排领域龙头,用于管理成千上万的容器实例。

最关键的是这些云原生组件都是使用Go语言编写,Gopher能很轻松的看懂这些组件的源码,这也是Go语言被称为新时代云原生语言的原因,几乎所有的CNCF(云原生基金会)的项目都是由Go进行开发的。

项目

在校生推荐简历上放三个项目,web、分布式\微服务、轮子。

其中微服务项目可以是重构自己的web项目,然后加上上述提到的组件,比如MQDockerPrometheus等等,成为一个比较有竞争力的项目。

这部分之后我会在掘金同步自己最近做的项目,并且之后会使用微服务进行重构+接入DockerPromtheusKubernetes等等,想要跟做的朋友欢迎关注,每周大概两到三次更新。

项目预览

项目概述

本任务管理应用的目标是实现一个简单计划表(todo-list),使用户能够有效地管理他们的任务。

通过采用前后端分离进行开发,后端使用Gin+Gorm+MySQL的方式实现,前端通过Vue进行实现。

项目的主要面向对象是Go初学者以及其他语言转Go的开发者,以及想要往全栈发展的小伙伴们。

后续会使用微服务重构该项目,并加上Prometheus、Kubernetes等常见云原生组件,成为一个竞争力满满,可以写进简历里的项目,敬请期待,欢迎点击关注

功能描述

  1. 用户管理接口:
  2. 任务管理接口:
  3. 任务排序和分组:
  4. Markdown编辑器:

技术栈

学习收获

通过参与这个项目,学习者将获得以下技能和经验

  • Go语言的后端开发经验,包括API构建、认证和数据库集成。
  • 使用Vue构建灵活、响应迅速的前端应用。
  • Docker、Prometheus、Kuberentes相关知识,熟悉对应的云原生组件开发。
  • 配置管理和日志记录的实践经验,提高对生产环境的应用监控和维护能力。

这个项目将帮助学习者全面掌握前后端开发的基础知识,并为实际应用提供了一个完整的综合项目经验。

就业进阶

上述内容都是偏向工程、开发与实战的,即干活能力;但是就业不止要求这些能力,对底层知识的了解(八股文)也有要求。

数据结构与算法

算法在面试中的比例也在逐年提高,现在面试如果做不出算法,除非是表现的非常优秀,不然都是直接挂。这里推荐首先了解一下常见的数据结构,然后手动实现一遍,之后刷常见题库就行了,推荐力扣 hot 100codeTop

计算机基础

四大金刚:计组、计网、数据结构、操作系统。这些里面的知识最好是自己先学一遍,有自己的理解,在面试之前再刷一遍面试题,问题就不会很大。不推荐背八股,这样无法和其他候选人区分开,一定要有自己的理解

其他底层

简历中写到的组件的底层都得了解,比如简历上有MySQLRedisPulsar相关内容,那么这些组件的特性、底层实现都要进行了解,如果只知道皮毛不如不写到简历上。

结语

本文向大家介绍了Go语言学习路线与就业准备,后面会持续分享项目相关内容,感兴趣的朋友欢迎点赞、评论、收藏、订阅,您的支持就是我最大的动力。

#面试#
全部评论
大佬真的好强
点赞 回复 分享
发布于 2024-01-30 02:08 江苏
🐮
点赞 回复 分享
发布于 2024-02-03 01:04 福建
牛客还有内容运营呢
点赞 回复 分享
发布于 2024-02-05 23:38 北京
哇,谢谢大佬
点赞 回复 分享
发布于 2024-02-10 16:30 广东
mark
点赞 回复 分享
发布于 2024-12-06 20:50 北京

相关推荐

shopee 虾皮 数仓工程师 32k*15 +5w签字费用 本科985
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2024-12-12 09:05
已编辑
天翼云 数据仓库工程师 26*14 硕士985
点赞 评论 收藏
分享
2024-12-23 16:51
已编辑
门头沟学院 运营
字节 国电测开 n*15+1w
点赞 评论 收藏
分享
评论
24
157
分享
牛客网
牛客企业服务