开发时长一年半golang工程师应该具备什么样的技术能力?
所以不管是主动还是被动,都不可否认现在golang开发工程师在目前IT市场的前景是很可观的。问过身边的一些朋友,目前golang面试还不像Java、c/c++后端开发那样,有一堆的面试八股文需要你去记,核心就是考查一些语言基础,中间件以及技术在项目中的实际用法,还是会以经验为主。核心来讲,首先是要掌握语言编程基础以及中间件的相关技术,结合着一些项目实战的经验,就可以对应一般的技术面试,再进阶学习掌
一、为什么会有人选择golang?
其实无非是被动和主动。
**被动:**面试新公司后,被领导调岗现学golang,因为公司需要。
**主动:**觉得这个方向有前景,大厂有需求,学了可以升职加薪!
所以不管是主动还是被动,都不可否认现在golang开发工程师在目前IT市场的前景是很可观的。毕竟我们绝大多数人都是面向薪资编程,如果它好用,大厂需求量大,又简单易学,语言特性又好。尤其是当自己掌握了docker和K8S之后,升职加薪就不远了,这样的活谁不愿意呢?
愿意是自我意识,想学每个人都可以,但是
二、什么样背景的更适合去学习或是去转行去做golang呢?
1.科班毕业,有一定的语言基础,也初步学习过golang(这种普遍见于校招,公司招聘回去从零开始培养,从零开始搭建业务。)
2.有较强的Java、c/c++、PHP的技术底子,入职之后通过企业内训转岗golang,大厂较为常见。(这种在面试时就会考查你的自主学习能力,毕竟其他语言技术不差的朋友,学习能力都不弱,何况golang初学起来还是相对简单的)
3.本身就是golang开发经验丰富的老手,进公司熟悉之后就能接手项目。(这种薪资一般都不低!)
那如果你既不在这三种之中又正在学习golang的话,也能面golang开发岗吗?
当然是可以的。只是说上面的这三类人群在面试时会更具优势。
核心能不能面,我们首先要了解的是:一般大厂面试时都考查什么?
这里整理了一些互联网公司的考查面试题,数量太多就全部腾过来了。需要的朋友可以自行下载获取!
问过身边的一些朋友,目前golang面试还不像Java、c/c++后端开发那样,有一堆的面试八股文需要你去记,核心就是考查一些语言基础,中间件以及技术在项目中的实际用法,还是会以经验为主。所以如果目前你是有一些不错的项目经验,面试这个岗位来说还是相对容易的。
回归题目,作为一个一年左右的golang开发工程师,需要具备什么样的技术能力,以及往上再去提高自己的技术能力和薪资的话,应该往哪方面去努力?
三、golang开发工程师技术能力图
1、GO入门必备
①第一个golang程序
- main函数与main包
- 编译与运行
- 包与文件夹
- 包与访问修饰符
- go mod 依赖管理
②golang实现ping操作
- 命令行参数接收
- 创建ICMP连接
- ICMP校验和计算
- 发送ICMP请求和并接收响应
③课程管理系统
- 数据存储实现
- 数据访问层实现
- 对象工具方法实现
- 业务接口实现
④内存缓存系统
- 接口的实现
- 工具方法实现
- 通过协程清空过期缓存
- 单元测试与缓存系统调用
⑤文件读写
- 将日志写入到文件
- IO操作
- 第三方库解析yaml文件
- 字符串操作解析yaml文件
⑥mysql数据库读写
- mysql驱动引用
- 连接池初始化
- 增删改查基本操作
- 事务
⑦redis读写
- redigo的引用
- redis连接池的创建与使用
- redis面向对象的抽象
⑧生产者消费者模式
- 生产者消费者四种情形介绍
- 异步IO输出
- —对一模式
- —对多模式
- 多对一模式
- 多对多模式
⑨TCP文件传输
- TCP Server端
- TCP Client端
- TCP文件上传
- TCP文件下载
⑩UDP实现DNS请求
- DNS请求报文结构讲解
- UDP Server端
- UDP Client端
- 构建DNS请求数据
- 发送DNS请求并接收响应
- DNS响应报文解析
- DNS请求验证
2.Go编程基础与核心技能
①语法基础
- 错误处理
- 包定义以及导入
- 结构体定义
- 反射原理
- 闭包
- 值传递,引用传递,defer函数
②并发编程
- goroutine
- 锁(读写锁、互斥锁)
- 通道channel
- runtime 包解析
- context 使用原则
③网络编程
- tcp 编程
- udp编程
- http 实现
- websocket
④http编程
- post、get、head请求处理
- 简单web模板
⑤对象池
- 原理分析
- 应用和性能测试
3.Go后台中间件编程
①redis
- redis整体结构、存储结构
- string 命令及存储原理,对象存储、累加器、分布式锁、位运算应用
- list命令及存储原理,栈、队列、异步队列、阻塞队列、固定窗口记录应用
- hash命令及存储原理,对象存储应用
- set命令及存储原理,唯—无序应用、关系应用
- zset命令及存储原理,排行榜、延迟队列、时间窗口限流应用
- redigo基本操作,管道和事务,发布订阅、stream
②mysql
- OLTP、OLAP、体系结构、连接池、事务介绍
- 基本操作:表创建删除、数据表操作(CRUD)
- 表查询及案例:基础查询、聚合查询、分组查询、联表查询
- 索引:主键索引、唯—索引、普通索引、组合索引
- 索引与约束
- 索引实现-存储结构以及B+树
- 最左匹配原则以及覆盖索引
- 索引失效、索引优化、SQL优化
- explain分析以及慢日志查询
- 事务控制语句,事务的acid特性,事务隔离级别
- 锁以及mvcc原理:加锁流程、释放锁流程,当前读以及快照读
- 读异常、死锁原理以及案例分析
③mongodb
- mongodb bson解析
- mongodb crud操作
- mongodb 索引操作、复合索引查询、聚合查询
- mongodb 文档管理
- mongodb go driver操作
- mongodb 连接池实现
④kafka
- kafka介绍
- kafka体系结构以及读写机制
- kafka典型应用场景:异步处理、系统解耦、流量削峰、日志处理
- kafka 驱动包操作:生产者消息生产策略、生产者ack策略、消费者组rebalance机制
⑤etcd
- etcd v2与v3比较,etcd体系结构
- etcd APls:数据版本号机制、CURD、监听、事务、租约
- etcd索引以及B+树
- etcd读写机制以及事务ACID特性分析
- Raft共识算法:leader选举和日志复制,Raft 运行机理详解
- etcd go驱动包操作
- etcd典型应用:服务发现、负载均衡、leader选举、分布式锁
⑥elasticsearch
- es介绍:倒排索引、lucene、es-head以及kibana
- es集群以及原理:集群健康值检查、es索引操作以及文档操作、es读写机制
- es查询:匹配查询、范围查询、多条件查询、中文分词、聚合查询
- es应用: es go驱动包操作、索引以及文档操作、es高级查询: term、match、aggregation
⑦grpc
- grpc体系结构,grpc典型应用,protobuffer语法、生成编译、模板接口
- grpc关键特性:拦截器、超时控制,重试
- unary API细节处理以及应用场景
- client stream API细节处理以及应用场景
- server stream API细节处理以及应用场景
- bidirectional stream API细节处理以及应用场景
⑧http gin
- gin框架分析
- RESTful API实践
- URL参数查询
- query接收数组和Map
- 表单参数处理
- 上传文件
- 分组路由
- 中间件鉴权
- json、xml、yaml、protobuf序列化
⑨gorm
- 数据库连接
- 创建表
- 增删改查
- 事务
【点击领取】golang开发学习技术资源包
4.Go项目实战开发(解决方案)
①微信后台公众号实战
- 公众号开发逻辑
- 注册、权限处理、消息回复
- http get方法token认证
- http post方法处理消息回复
- 微信公众号签名验证方法
- XML解析、CDATA解析
- 交换协议、接收消息协议、被动回复消息协议
②流媒体网站开发
- 流媒体直播框架分析
- 前后端分离设计
- RESET API设计,包括用户、视频、评论处理
- 用户、评论、会话、待删除视频数据库设计
- meddleware handler机制
- 登录注册
- 视频上传
- 视频评论
- 流控算法
③OAuth2.0
- OAuth2.0协议流程分析
- 授权码、隐藏式、密码式、客户端凭证流程分析以及应用场景
- 授权码详细流程分析以及restful api详解
- go OAuth2.0第三方登录应用
④Admin后台管理系统
- Go Admin工程安装
- 架构分析和各模块精讲
- cobra命令行实战
- casbin权限管理
- RBAC实践、多租户实践
- 添加新应用
- 添加新模块
- 自动生成代码
- 配置权限
- swagger api
⑤分布式日志系统
- 传统elk解决方案及其弊端
- 日志收集服务开发
- etcd管理主要信息收集
- 配置文件热更新
- kafka日志收集
- elasticsearch日志分析
⑥goim千万级高并发推送
- 支持单个、多个、广播消息推送
- 心跳检测(应用心跳和tcp、keepalive、http log pulling)
- 接入层支持多协议(websocket,tcp,http)
- 可拓扑的架构job、logic模块可动态无限扩展)
- 基于Kafka做异步消息推送
- 注册发现服务
- 消息协议设计(基于protobuf)
- goim推送服务架构分析
- grpc客户端服务端编程
5.Go云原生
①Docker
- 基本架构、涉及概念、隔离机制
- 操作命令及案例:生命周期管理、容器运维操作、镜像及镜像仓库,负载均衡案例
- Docker镜像:镜像构建,Dockerfile
- 存储:数据共享、数据备份和还原
- 网络: bridge驱动、host驱动
- Docker Compose:操作命令、配置文件
- Swarm集群:集群管理、节点管理、服务管理、Compose Deploy
- 容器监控与Cl/CD:监控命令、监控工具,gitlab持续集成案例
⑤k8s
- 基本概念和术语、安装与升级
- kubectl命令操作:基本语法、基础操作、应用部署、集群管理、故障排除和调试命令
- Pod定义语法
- Pod中运行容器、Init容器、Pod中容器生命周期函数
- Pod中容器健康检查:存活检查、就绪检查、启动检查
- Pod的部署:Deployment部署Pod、DaemonSet部署Pod、静态Pod
- Service定义语法
- Service的四种发布类型:ClusterlP、NodePort、ExternalName、LoadBalancer
- 无选择符Service
- 无头Service:有选择符Service、无选择符Service
- Service发现机制
- Service TLS案例
- Ingress与Ingress Controller
- Ingress暴露Service:默认后端、扇出、基于名称的虚拟托管
- lngress TLS案例
- MetalLB与Service LoadBalancer、Ingress
- 配置:ConfigMap与Secret
- 存储: hostPath、emptyDir、ConfigMap、Secret、PVC
6.公有云项目实战
①短信服务
- 短信签名与短信模板
- 短信发送接口实现
- 验证码短信发送实现
②邮件推送服务
- 邮件及邮件模板
- ses邮件推送
- smtp邮件推送
③验证码
- 控制台操作
- 客户端接入
- 服务端接入
④对象存储
- 静态网站托管
- 图片压缩与图片样式
- web数据直传
- 私有读与CDN鉴权
⑤日志服务
- 日志服务控制台
- SDK方式采集日志
⑥云直播
- 域名配置
- 直播流管理
- 延播管理
⑦云点播
- 拉取上传
- 服务端上传
- 媒体资源信息获取
⑧文字识别
- 车牌识别
- 通信行程卡识别
⑨人脸核身
- 照片人脸核身
- 活体人脸核身
- 活体人脸对比
核心来讲,首先是要掌握语言编程基础以及中间件的相关技术,结合着一些项目实战的经验,就可以对应一般的技术面试,再进阶学习掌握docker、k8s这些大厂面试必备的技术点,就可以对自己的薪资会有进一步涨幅!
四、劝退
虽然golang这门语言目前还是新贵,各个互联网公司也是需要这方面岗位的人才。但是语言再好,也是有所缺点。所以golang它并不是目前还是零基础的同学选择的最合适的入门语言。如果你目前还只是编程小白或是对go语言的了解仅停留在互联网只言片语的信息了解上的话,还是谨慎选择。
五、资源分享
最后分享给大家一些学习过程中的一些资源,仅供参考。
1.电子书籍
2.文档与技术文章
3.视频源码资源
4.社区论坛及博客
5.系统进阶教程路线
更多推荐
所有评论(0)