17-飞书专项突击计划 (Go 语言版)
💡 现状分析: 基础不错(网络/OS/Go 基础),弱点主要在:
- Redis 实战:穿透/击穿/雪崩/持久化等场景题不熟。
- 分布式理论:CAP/BASE 比较虚,停留在背定义。
- 项目经验:缺乏拿得出手的微服务项目(被问到 Kaggle 说明简历上的 Go 项目太单薄)。
- 底层原理:如浮点数精度等计算机组成原理知识。
📅 第一周:Redis & 分布式死磕
目标:把 Redis 从”没用过”变成”精通”,能够自信回答所有缓存异常问题。
Day 1-2: Redis 核心大图
- 数据结构:String, List, Hash, Set, ZSet (跳表原理)。
- 持久化:RDB vs AOF(优缺点、重写机制)。
- 过期策略:定期删除 + 惰性删除(为什么不用定时删除?)。
- 淘汰策略:LRU, LFU, Random(手撕 LRU 是加分项)。
Day 3: 缓存异常实战(重中之重)
- 缓存穿透:布隆过滤器原理。
- 缓存击穿:互斥锁(Go
singleflight)、逻辑过期。 - 缓存雪崩:随机过期时间、高可用集群。
- 双写一致性:先删缓存还是先改库?延时双删?Canal 订阅 Binlog?
Day 4: 分布式理论
- CAP 定理:深入理解 P 发送时 C 和 A 的权衡。
- BASE 理论:基本可用、软状态、最终一致性。
- 分布式锁:Redis
setnx+lua脚本(看下 redsync 包)。
📅 第二周:项目大改造 (ServiceTelemetry)
目标:把现有的 ServiceTelemetry 项目包装成一个高并发、微服务架构的亮点项目。
Day 5: 引入 Kratos 微服务改造
- Protobuf 定义接口:把 HTTP API 改为 gRPC 定义。
- 引入 Etcd:做服务注册与发现(解决 CAP 中的 CP 问题)。
- 引入 Redis:缓存热点遥测数据(解决查询压力)。
Day 6: 解决难点 (给自己挖坑再填坑)
- 场景:假设每秒上万个遥测数据上报。
- 优化:
- 使用 Kafka 削峰填谷(引入消息队列)。
- 数据库使用 时序数据库 (InfluxDB) 或 MySQL 分表。
- Go 优化:使用
sync.Pool复用对象,减少 GC。
Day 7: 整理项目话术 (STAR 法则)
- S (背景):为了解决大规模设备监控数据上报的高并发问题。
- T (任务):设计一个高可用、可扩展的微服务后端。
- A (行动):
- 使用 Kratos 拆分服务。
- 引入 Redis 缓存热点数据,解决击穿问题。
- 使用 Kafka 异步处理写入。
- R (结果):单机 QPS 从 500 提升到 5000,延迟降低 80%。
📅 第三周:算法 & 查漏补缺
目标:保持手感,攻克 Hard 题,补齐底层原理。
Day 8-10: 飞书高频算法题(前 50)
- 链表:K 个一组翻转 (Hard)、合并 K 个升序链表。
- 数组/字符串:最长回文子串、无重复字符最长子串、接雨水。
- 二叉树:层序遍历 (Z字形)、最近公共祖先。
- 动态规划:爬楼梯、最大子序和、股票买卖。
Day 11: 计算机原理扫盲
- 浮点数:IEEE 754 标准,二进制小数表示。
- CPU:缓存行 (Cache Line)、伪共享 (False Sharing)。
- Linux:零拷贝 (Zero Copy)、IO 多路复用 (Epoll 源码级理解)。
🚀 每日习惯
- 早起手撕一题:保持手感。
- 模拟面试:对着镜子讲项目,特别是”为什么用 Redis?” “如果有 10 倍流量怎么办?”。
- 看面经:牛客网/Boss 上搜”飞书 Go 面经”,查漏补缺。
给你的建议: 面试官看你没项目才问 Kaggle 的。如果你能把 ServiceTelemetry 讲得头头是道(微服务、缓存、消息队列、高并发优化),面试官绝对会眼前一亮!不用真做完所有功能,但原理一定要懂,话术一定要溜。