求职冲刺:五天准备计划与自我分析
3/17 晚更新:感冒恢复后重新整理计划。原计划因生病耽误一周。
核心策略调整:不再”学完了再面”,而是”边学边面,边面边补”。
今晚就开始行动,简历明天就投出去,前两场面试就是模拟考。
当前处境分析
我有什么
- 编程基本功还在,Go语法学过一遍(简介、变量已整理成博客),不是从零开始
- 云计算国赛二等奖——能证明技术能力的硬指标
- 半年实施经验——了解项目从开发到落地的全流程
- 有内推资源,目标岗位明确
需要正视的
- 脱离开发半年,手感需要恢复
- 项目经验需要重新构建——不是”回忆旧项目”,而是”做一个新的、能说得清楚的项目”
- 时间窗口极短,面试黄金期就在眼前
- 身体刚恢复,需要合理分配精力,不能硬撑到崩溃
心态校准
感冒耽误了一周,焦虑是正常的。但焦虑本身不产生代码,只有坐下来敲键盘才会。
**关于”怕背不出来”**:面试不是默写考试。面试官问GMP不是让你背hchan有几个字段,而是看你能不能用自己的话讲清楚。理解了的东西不需要背,说不出来的地方恰恰说明还没理解——早暴露比晚暴露好。
**关于”怕面试受打击”**:前两场面试就是拿来”废掉”的。不要当终面,当成带答案的模拟考。挂了之后你会清楚地知道哪里不会,这比闷头学高效十倍。每一场挂掉的面试都在帮你缩小复习范围。
求职方向
主攻: Go 后端开发岗位
兼顾: 有Go需求的云原生/基础架构岗位
放弃: Java方向、大数据方向——精力有限,不分散
冲刺总览(今晚启动,3/17 - 3/22)
| 日期 | 主题 | 核心产出 |
|---|---|---|
| Day0 今晚 3/17 | 启动 | Go语法热身 + 简历初稿 |
| Day1 周三 3/18 | Go语法 + 底层原理 | 语法恢复 + GMP/channel能讲清 + 简历投出去 |
| Day2 周四 3/19 | MySQL + Redis + 项目启动 | 数据库面试题能答 + 项目骨架搭完 + 开始约面 |
| Day3 周五 3/20 | 项目实战 + 网络编程 | GoChat-Lite核心功能完成 + 可能有第一场面试 |
| Day4 周六 3/21 | 项目收尾 + 面试 | GitHub项目能看 + 面试实战 |
| Day5 周日 3/22 | 查漏补缺 + 面试 | 根据面试反馈针对性补强 |
核心原则:简历第一天就投出去,面试从第三天开始穿插进行。
每日节奏: 08:00 开始,12:00-13:30 午休,23:00 停止。不熬夜——熬夜会让第二天报废。
Day0:今晚启动(3/17 晚 19:30 - 23:00)
目标:动起来。热身 + 简历初稿 + 投递准备。今晚不求多,求”已经开始了”。
19:30 - 21:00 | Go语法热身
- 打开Go Playground或本地IDE,写一个goroutine+channel的小程序
- 回顾自己写的golang简介和变量博客,快速进入状态
- 写一个带select+timeout的并发示例,确认手感还在
21:00 - 22:30 | 简历初稿
- 拿出现有简历,更新基本信息
- 技术栈写上:Go / Gin / MySQL / Redis / WebSocket / Docker
- 项目经历先写一个GoChat-Lite的占位描述(项目还没做,但方向已确定):
独立设计并实现基于WebSocket的实时聊天服务,使用Go+Gin+MySQL+Redis技术栈,支持多房间并发聊天、消息持久化、心跳保活,集成pprof性能监控。
- 实施经历表述定稿:
负责产品交付与客户技术对接,主导部署方案设计,参与系统架构的落地实施。
- 空窗期话术定稿:
离职后重新聚焦Go后端方向,系统学习并实践了Go并发编程、数据库优化、实时通信等技术。
22:30 - 23:00 | 明天的准备
- Boss直聘/拉勾/牛客账号登录,确认能正常使用
- 列出3-5个明晚要投递的目标公司/岗位
- 联系内推朋友,告知自己在准备中,近两天会发简历
Day1:Go语法 + 底层原理(3/18 周三)
目标:把Go语法恢复到能写的状态,底层原理能讲清楚。晚上简历投出去。
上午 08:00 - 12:00 | Go语法全量恢复
08:00 - 09:30 | 类型 + 控制流 + 函数
- 基本类型、变量声明、常量、iota
- 数组与切片:make/append/copy、扩容机制
- map:增删改查、并发不安全
- 结构体:定义、嵌套、方法(值接收者 vs 指针接收者)
- if/for/switch/select、函数多返回值、闭包、defer(LIFO)
09:30 - 11:00 | 接口 + 并发 + 错误处理
- interface定义、隐式实现、类型断言、type switch
- error接口、errors.Is/As/Wrap、panic/recover
- goroutine + channel(无缓冲/有缓冲/方向限制)
- select多路复用、超时控制
- sync包:WaitGroup / Mutex / RWMutex / Once
- context:WithCancel / WithTimeout / WithValue
11:00 - 12:00 | 关键字 + 指针 + 包管理
- 25个关键字快速过,重点:defer/select/interface/chan/go
- 指针、new vs make、值传递
- go mod、包可见性、init()执行顺序
下午 13:30 - 18:00 | Go底层原理(面试核心)
13:30 - 15:00 | GMP调度模型
- G(goroutine本质,初始栈2KB)、M(OS线程)、P(逻辑处理器)
- 调度流程:创建G → P本地队列 → M执行
- work stealing + hand off
- syscall阻塞时M与P分离、netpoller
- 能用自己的话讲清楚整个流程(不是背,是理解后复述)
15:00 - 16:00 | channel底层 + 内存逃逸
- hchan:环形缓冲区buf、sendq/recvq等待队列、lock
- 发送/接收流程、close行为、nil channel阻塞
- 逃逸场景:返回指针、interface{}、闭包、大对象
-
go build -gcflags="-m -l"验证
16:00 - 17:00 | GC + pprof
- 三色标记法 + 混合写屏障
- GC触发条件、STW、GOGC
- pprof:CPU/内存/goroutine profiling
- net/http/pprof集成方法
17:00 - 18:00 | Gin框架速通
- 路由、中间件、JSON绑定与响应
- 用Gin写一个最小CRUD API(半小时能跑起来就行)
- 项目分层结构:handler → service → repository → model
晚上 19:30 - 23:00 | 简历投出去 + 开始约面
19:30 - 20:30 | 简历定稿
- 基于今晚初稿,补充今天学到的技术细节
- 准备1分钟自我介绍(对着镜子说一遍)
- PDF导出,确认格式正常
20:30 - 22:00 | 投递 + 内推
- 内推朋友:正式发送简历
- Boss直聘/拉勾/牛客:投递5-10个目标岗位
- 主动打招呼,不要只是”投递”按钮
- 尽量约到3/20(周五)或之后的面试
22:00 - 23:00 | 当日回顾
- 标记今天没理解透的点
- 记录到每日日志
Day2:MySQL + Redis + 项目启动(3/19 周四)
目标:数据库和缓存面试题能答,项目骨架搭完。持续跟进投递回复,积极约面。
上午 08:00 - 12:00 | 数据库核心
08:00 - 09:00 | MySQL基础
- CRUD + JOIN + 聚合函数
- 用Go操作MySQL:GORM或sqlx基本用法
09:00 - 10:00 | 索引(面试必问)
- B+树:为什么选B+树而非B树或Hash
- 聚簇索引 vs 非聚簇索引(回表)、覆盖索引
- 联合索引 + 最左前缀原则
10:00 - 11:00 | 索引失效 + 事务
- 索引失效场景:函数/运算、隐式转换、LIKE %开头、OR、最左前缀违反
- EXPLAIN分析执行计划
- ACID、隔离级别(重点:可重复读+MVCC)、锁(行锁/间隙锁)
11:00 - 12:00 | 数据库设计 + 架构概念
- 三大范式 + 反范式
- 读写分离(binlog → relay log)、分库分表(垂直/水平)
- 慢SQL排查思路
下午 13:30 - 18:00 | Redis + 项目启动
13:30 - 15:00 | Redis
- 五大数据结构 + 使用场景
- 持久化:RDB vs AOF
- 缓存穿透/雪崩/击穿 + 解决方案
- 过期策略、内存淘汰(LRU/LFU)
- 分布式锁:SETNX + 过期时间
- Redis为什么快:单线程 + IO多路复用 + 内存操作
15:00 - 18:00 | GoChat-Lite项目启动
-
go mod init、目录结构搭建 - MySQL建表:users + messages(含联合索引)
- model定义 + repository层
- 用户注册/登录接口(JWT)
- Gin路由 + 中间件
晚上 19:30 - 23:00 | 网络编程 + 跟进投递
19:30 - 21:00 | WebSocket + 网络编程
- WebSocket握手流程:HTTP Upgrade → 101
- 心跳保活、长连接管理
- 消息推送模型:单播/广播/组播
- TCP socket基础 + 粘包处理
- 微服务概念速览 + 对象存储基本操作和场景
21:00 - 22:30 | 跟进面试
- 检查投递回复,积极回复HR消息
- 有面试邀约就约3/20下午或3/21
- 准备针对性的面试问题(查看公司技术栈)
22:30 - 23:00 | 当日回顾
- 记录进度
- 明天全天写项目,提前想清楚实现步骤
Day3:项目实战 - GoChat-Lite(3/20 周五)
目标:项目核心功能跑通。如果有面试,下午优先面试,代码晚上补。
上午 08:00 - 12:00 | WebSocket核心
08:00 - 10:00 | Hub + Client
- Hub结构:管理所有连接,负责消息广播
- Client结构:conn + send channel + 用户信息
- Hub.Run():select监听register/unregister/broadcast
- Client.ReadPump() + Client.WritePump()
10:00 - 12:00 | 消息收发 + Redis集成
- WebSocket升级接口 + 消息格式(JSON)
- 房间加入/离开广播、消息广播
- 消息异步持久化到MySQL
- Redis:在线用户Set + 最近消息List缓存
下午 13:30 - 18:00 | 功能补全(或面试)
如果下午有面试:面试优先,以下内容移到晚上或Day4补。
13:30 - 15:00 | 心跳保活 + 前端页面
- 读超时 + ping/pong机制
- 一个HTML页面:登录 + 聊天窗口 + 消息输入(原生JS,不求美观)
15:00 - 17:00 | 联调测试
- 完整流程:注册 → 登录 → 加入房间 → 收发消息 → 退出
- 修Bug
17:00 - 18:00 | 推送GitHub
- git init + commit + push
- 确认GitHub上能看到完整代码
晚上 19:30 - 23:00 | 面试复盘 + 项目补充
19:30 - 21:00 | 如果今天有面试
- 记录面试中被问到的问题
- 标记答得不好的点,针对性复习
- 这些”答不上来的题”就是你明天的复习重点
19:30 - 21:00 | 如果今天没有面试
- 继续完善项目功能
- 或复习Day1/Day2标记的薄弱点
21:00 - 23:00 | 项目README初稿
- 项目简介 + 技术栈 + 快速启动
- 简单架构说明
Day4:项目收尾 + 面试(3/21 周六)
目标:项目能拿得出手,面试持续进行。
上午 08:00 - 12:00 | 项目打磨
08:00 - 09:30 | 代码质量 + pprof集成
- go vet / golangci-lint检查
- 集成net/http/pprof
- 优雅退出:监听信号,关闭连接,等待消息落库
- 补1-2个关键单元测试
09:30 - 11:00 | README完善
- 项目简介(一句话说清楚)
- 技术栈 + 架构说明
- 快速启动指南
- 核心功能截图
11:00 - 12:00 | 最终推送
- 代码整理、最终commit
- 打tag v1.0.0
- 确认GitHub页面展示正常
下午 13:30 - 18:00 | 面试 + 面试题
有面试优先面试。没有面试就刷面试题。
面试高频题清单(未面试时刷):
Go:
- slice扩容 / map底层 / GMP / channel底层
- 逃逸分析 / GC三色标记 / defer+return
- context使用 / goroutine泄漏排查
MySQL:
- B+树索引 / 聚簇vs非聚簇 / 索引失效(5种以上)
- 事务隔离级别 + MVCC / 慢SQL优化
Redis:
- 五种结构+场景 / 穿透/雪崩/击穿
- RDB vs AOF / 分布式锁 / 为什么快
晚上 19:30 - 23:00 | 面试复盘 + 补强
- 记录今天面试中所有被问到的题目
- 每个没答好的题,写出标准答案
- 更新简历(如果项目已完成,去掉占位描述,写真实内容)
- 继续投递新的岗位
Day5:查漏补缺 + 持续面试(3/22 周日)
目标:根据前几天面试暴露的弱点针对性补强,持续面试。
全天策略
上午 08:00 - 12:00
- 复习前几天面试中答不好的题目(这是最高优先级)
- 如果项目还有未完成的功能,补完
- 模拟面试:对着屏幕讲一遍”项目介绍”(控制在3分钟内)
下午 13:30 - 18:00
- 面试(如果有约)
- 没有面试则继续刷面试题 + 投递新岗位
- 研究目标公司的技术博客或开源项目,准备针对性问题
晚上 19:30 - 23:00
- 面试复盘
- 五天总结:完成了什么、还差什么、下一步计划
- 继续投递,保持节奏
- 08:00准时开始,不等”状态好了再开始”——坐下来就是最好的状态
- 每个时间块结束时,在对应的checkbox打勾,不管完成质量如何
- 遇到卡壳超过30分钟,跳过并标记,晚上或第二天补
- 午休必须休息,不要”再看一会儿”——下午的效率取决于中午的休息
- 23:00强制停止,身体还没完全恢复,透支身体会让后面几天全废
每日记录
每天结束时在这里记录:完成了什么 / 没完成什么 / 明天需要调整什么
Day0(3/17 今晚)
Day1(3/18)
Day2(3/19)
Day3(3/20)
Day4(3/21)
Day5(3/22)
写给自己
你因为生病丢了一周,但你没有丢掉方向。
焦虑说明你在乎,但焦虑不写代码。
害怕面试说明你认真,但前两场面试本来就是拿来”废”的。你不需要准备到完美才开始面试。
没有人在第一场面试时是完全准备好的。
面试官问到你不会的东西——好,那就是你今晚的复习重点。
这比你自己猜”他们会问什么”高效一百倍。现在,打开IDE,写一个goroutine。
No reason not to start.





