研一深度学习一年后转 Go 后端开发:InterviewGuide 校招问答实录与 8 个月学习规划
研一深度学习一年后转 Go 后端开发:InterviewGuide 校招问答实录与 8 个月学习规划
本文整理自《InterviewGuide(阿秀的学习笔记)》学习圈中的一则真实问答:一位研一学生全身心投入深度学习与论文写作近一年后,决定在研二转向 Go 后端开发,并给自己设定了"8 个月后进入一二线大厂实习"的目标。文章完整还原了提问背景与阿秀的逐条回答——包括计算机基础如何补、算法/语言/基础三门功课如何统筹时间、Go 技术栈(Gin、Gorm、并发编程)如何进阶,并结合本仓库的 Golang 学习路线 与 基础学科导读 做纵深展开,为"科研转开发"群体提供一份可落地的时间规划与学习路径参考。
1、案例背景:为什么"研二就决定转开发"称得上明智
阿秀在读研时主攻数据库方向,研究方向与 北大邹磊老师的 gStore、华中科技大学袁平鹏老师以及东南大学漆桂林老师团队的产品比较接近,属于偏实践的研究方向——即便如此,研一期间为部署 gStore 也一度头疼不已、四处翻资料。
与之相对,很多从事机器学习/深度学习的同学,直到快研三才发现自己做的内容难以落地、手上也没有拿得出手的 paper,找工作拿不出手,再匆忙转开发时,与研一就下定决心转开发的同学相比几乎毫无竞争力。因此,阿秀对这位研一师弟的评价是"比较有先见之明"——没有等到研三打开简历发现自己空空如也、想转也转不了才后悔。
这一判断也与学习圈中另一篇问答《为什么我苦口婆心劝你不要找算法岗》相互印证:算法岗对 paper 档次(二区起步)、算法竞赛奖项(阿里天池、Kaggle 等)、学校背景均有硬性要求,普通双非背景、科研无法落地的情况下,尽早转开发是更现实的选择。
2、提问原文:一个"想清楚了"的转开发诉求
这位研一学弟在阿秀的学习圈中的提问非常完整——有前因、有后果、也有背景,值得每一位准备转开发的研究生参考。以下是提问原文的完整还原:
本人目前研一,本硕一线城市非 92 双一流,去年半跨考二战高分回本校计算机。考上之后接近一年的时间全心全意从零开始机器学习、深度学习和看论文做实验写论文,最近接近完成一篇论文并准备投 SCI 期刊(老板要求期刊)。目前计划投完论文后开始学 Go 后端开发。
个人基础如下:
- 数学功底还行;
- 计算机基础(408 + 数据库)考研初复试针对考试学习过,本科课程大多没学过;
- 本科阶段学过 Java 和 C++,但不深入,毕业设计用 Java 开发过一套服务器 + 安卓端系统(初级入门水平),准备考试复试的上机考试时用 C++ 在牛客网刷过 200 道左右编程题(大多是简单题,部分中等题)。
但最近一年都在搞深度学习和论文,之前学的东西感觉都快忘完了,目前打算从头开始学 Go,并且已经了解了一些基本语法,目标 8 个月后进一二线大厂实习。本人的时间安排是 955 作息,其他时间可学,实验室里也可摸鱼刷题,因为已经接近满足毕业要求了。
本次提问主要有两点疑惑:
- 计算机基础以前应试学过,但学得不全面、不深入,而且很多忘了,现在要不要从头开始啃书、啃视频系统学?
- 计算机基础、Go 的学习与进阶、力扣刷题,这三方面的学习顺序怎么安排、怎么统筹?如果有大体时间规划就更好,比如 xx 模块学 x 个月。
3、回答一:计算机基础怎么补?先过视频再系统看书,拒绝成为"八股文战士"
针对"要不要从头系统学计算机基础"这个问题,阿秀给出的结论是:要补,但方式要有取舍。按照这位学弟的规划,时间并不算宽裕,因此建议:
- 先过一遍视频,然后再系统看书。前期先把主流教学视频整体过一遍,建立知识框架;对一些重点、难点再落到书上细读,比如:
- 操作系统:进程与线程的区别与联系、调度、同步互斥等核心概念;
- 计算机网络:三次握手、四次挥手(原文"三握四挥")及其状态迁移。
- 多看看面经里这些问题是怎么回答的,对照自己的理解查漏补缺。
同时阿秀特别提醒:不要直接成为一个"八股文战士"——八股文式的背诵应付笔试或许可以,但在面试中经不起深挖,一问就露馅。基础知识的理解深度,决定了你在技术面中能否扛住追问。
这一建议与本仓库中基础学科导读的立场完全一致:计算机基本功被称作"计算机内功"的五大门——操作系统、计算机网络、数据结构与算法、数据库、计算机组成原理,其中除计算机组成原理在校招中考察较少外,其余四门基本属于必考;校招以考察潜力为主,不会过多要求即战力,基本功是否扎实直接决定面试表现。对应的系统学习路径可参考仓库内的 操作系统学习路线、计算机网络学习路线以及 基础学科快速学习路线。
4、回答二:时间怎么统筹?算法 30%、语言 35%、基础 35%
关于"计算机基础、Go 学习、力扣刷题三者如何排序",阿秀直接分享了自己当年的学习计划,核心是不追求严格的先后顺序与固定时长,而是按时间占比做动态分配:
| 板块 | 大致时间占比 | 学习方式 |
|---|---|---|
| 主攻语言(C++/Go) | 约 35% | 前期看入门书籍/视频,语言基础彻底掌握后转入进阶 |
| 算法刷题 | 约 30% | 前期周一到周五晚上刷题,刷累了换看视频或语言书 |
| 其余计算机基础 | 约 35% | 语言基础掌握后开始,后期主要时间都花在这上面 |
具体的执行节奏(原文经验):
- 前期(约两个多月):周一到周五晚上刷题——既然打算走 Go,就多用 Go 去刷,一举两得地同时练算法与语言;刷题累了就去看视频、看主攻语言的书籍(阿秀当年看的是《C++ Primer》)。
- 中期:当编程语言的书看得差不多、基础语法彻底掌握的时候,开始看其余的计算机基础课程。
- 后期:主要时间花在计算机基础上。
- 周末:白天基本看基础,晚上刷题,剩余时间看语言进阶内容。
这套打法还隐含了两个重要的统筹原则,在学习圈同期问答中有更充分的展开:
- 优先做性价比高的事:时间不够时,不必完整刷完 600+ 道力扣,优先刷 HOT 100 与剑指 offer 经典题;不必从头啃完大厚书,先看总结好的笔记与面经。详见《秋招准备时间不够?优先挑性价比高的》。
- 战前不换将:确定主攻语言后就别再摇摆。秋招招 Go 的岗位,学 C++ 基本都能投、也有面试机会;反过来招 C++ 的岗位,学 Go 就不一定能投。详见《秋招来临,我却打算换主攻语言》。
5、回答三:Go 技术栈怎么学?gin、gorm、并发编程是主线
针对这位学弟"从零开始学 Go"的现状,阿秀给出了明确的技术栈清单:
- gin、gorm 这一套要好好学:gin 是 Go 领域最主流的 Web 框架,gorm 是 Go 领域成熟的 ORM 框架,二者是 Go 后端开发的"标配组合"——就像 Java 后端逃不开 Spring + Spring MVC + MyBatis 一样。
- Go 的并发编程是面试高频:goroutine、channel、并发模型等是 Go 岗位面试问得最多的内容,需要重点掌握。
- 极客兔兔(geektutu)的 mini 框架教学系列值得跟:即 7DaysGolang 系列,代码量不大但"麻雀虽小五脏俱全",可以用 7 天时间从零实现 Web 框架、分布式缓存、ORM 框架、RPC 框架等。
本仓库的 Golang 求职版学习路线 对这条主线做了更完整的落地展开,可以对照使用:
- 语言基础:零基础/无其他语言经验看《Go 程序设计语言》;有 Java、C++ 等其他语言基础则看《Go 语言学习笔记》,入门后可用 learn-go-with-tests 做练习;
- 练手项目:starcharts(GitHub star 趋势图生成,能学到基本网络请求与解析)、wechat-go(模拟微信网页版的登录/添加联系人/在线聊天,支持多开、插件化);
- 进阶书籍:《Go 语言高级编程》(涉及 CGO、Go 汇编、RPC 等,建议选看、当工具书查)与《Go Web 编程》(围绕一个网络论坛示例展开,涉及请求处理器、多路复用器、模板引擎、存储系统等生产环境常用组件,建议细读);
- 框架项目(按优先级):Gin(必学,会用即可)、Gorm(必学,照官方文档敲一遍)、go-gin-example(必做,覆盖 JWT 身份校验、Swagger 文档、Nginx 部署等完整实践)、7DaysGolang 与 go-gin-api(选做,后者支持接口限流、异常邮件通知、跨域、Prometheus 指标、Swagger、链路追踪、pprof 性能剖析、zap 日志、viper 配置解析、代码生成器等企业级能力);
- 微服务(有余力再看):GoKit 与 Go-Zero 二选一,可参考《微服务架构设计模式》一书;进阶可了解斗鱼开源的 Jupiter 微服务框架。
按照该路线,学完"计算机基础 + 基础语法 + 进阶编程"前三个阶段即可着手找工作,微服务属于锦上添花。
6、题外话:保持运动与目标拆解
除了学习规划本身,阿秀还给这位师弟一个容易被忽视的建议——保持运动:
- 每天至少运动 30 分钟,跑步、打球都行;
- 理由是精力很重要:很多人学着学着就"中道崩殂",除了心气不足、不够坚定,还有一个常见原因是精力跟不上、没了那股心气儿;保持运动是维持精力与持续上进的好方法。
此外,阿秀反复强调的底层方法是目标拆解与长期坚持:把目标拆解到每月、每周、甚至每天具体要做些什么,然后去执行,剩下的就交给时间——"成功是一步一个脚印走出来,而不是一蹴而就,每天坚持一点,才能积少成多、聚沙成塔、水滴石穿"。临时抱佛脚永远不如早点准备,这一点在科研转开发这种需要"补课"的场景下尤为重要。
7、总结:科研转开发的一份可复制清单
综合这则问答,可以把"研一深度学习一年、研二转 Go 开发"的完整打法归纳为一份清单:
- 尽早决策:论文能投就投,不要像研一那样全身心投入;没有读博打算就尽早为自己想后路,别等到研三才发现简历空空。
- 基础补齐讲究顺序:先过视频建立框架,再针对操作系统(进程线程)、计算机网络(三握四挥)等重点看书深挖;多看面经但不要当"八股文战士"。
- 三门功课按占比统筹:主攻语言约 35%、算法约 30%、其余计算机基础约 35%;前期晚上刷题(直接用 Go 刷),语言基础彻底掌握后把后期时间主投在计算机基础上,周末白天看基础、晚上刷题。
- Go 技术栈走主线:gin + gorm + 并发编程必须拿下,7DaysGolang 等 mini 框架项目用于实战巩固,进阶可延伸至微服务。
- 身体与心态兜底:每天运动 30 分钟保持精力,把目标拆解到每天并坚持执行,剩下的交给时间。
这份经验沉淀在 InterviewGuide(阿秀的学习笔记) 的 学习圈问答板块 中,与基础学科导读、Golang 学习路线、校招八股文等章节相互呼应,构成了从"下定决心转开发"到"系统准备校招"的完整链路。
