裸辞半年后,我在面试题里找回了技术初心
杭州·文一西路某小区 · 2024年3月12日 · 凌晨1:23
窗外下着小雨,阳台晾着的衬衫还没干。我靠在飘窗上,笔记本屏幕泛着蓝光,手指在键盘上敲出一行又一行代码。这不是在赶项目 deadline,也不是在修线上 bug——而是在刷一道 LeetCode 面试题。
是的,你没看错。一个已经裸辞半年、每月背着 6800 块房贷的人,深夜还在跟算法较劲。
这事儿说来有点荒诞,但又无比真实。
一、“我是不是废了?”
时间倒回去年十月。那天是周五,我交完辞职信走出公司大楼时,杭州刚入秋,空气里带着桂花香。前东家是某一线大厂,坐标未来科技城,月薪 22k,年终奖稳定拿满。听起来挺光鲜,对吧?
但只有我知道,那半年我像一台卡死的服务器:需求排期压得喘不过气,技术债堆成山,连写个新功能都要绕过三个“祖传”模块。更糟的是,我已经三个月没碰过任何新技术了——每天的工作就是改 bug、回邮件、开会、再改 bug。
老婆(当时还是女友)问我:“真要裸辞?房贷怎么办?”
我说:“再这样下去,我怕自己变成‘人肉运维’,连手都不会写了。”
她沉默了一会儿,说:“行,最多撑半年。要是找不到工作,咱就回老家。”
于是,我成了“自由职业者”——其实是失业人员。头一个月还挺潇洒:睡到自然醒,打游戏,陪她逛西溪湿地。但第二个月开始,焦虑像藤蔓一样爬上来。
最致命的不是没钱,而是“手生”。
有一次朋友内推了个初创公司面试,问了个基础问题:“Redis 的 ZSET 底层是怎么实现的?”
我支吾了半天,只答出“跳表”,连压缩列表(ziplist)都忘了提。面试官礼貌微笑,但眼神里分明写着:“这人是不是躺平太久?”
回家路上,地铁上刷脉脉,看到有人发帖:“裸辞三个月,面了八家全挂,怀疑人生。”
我点了个赞,心里默默加了一句:“+1”。
二、从“面试题挑战”开始自救
转机出现在十二月底。那天我翻 GitHub Trending,看到一个叫《100 Days of Coding Interview》的仓库,作者是个湾区工程师,每天打卡一道题,并附上解题思路和性能分析。
我心想:反正闲着也是焦虑,不如试试?
于是,我给自己定了个“面试题挑战”计划:
- 每天至少刷 1 道中等难度以上算法题
- 每周复现 1 个经典系统设计(比如短链服务、限流组件)
- 每月做 1 个 mini 项目,用上最近学的新技术
第一周就差点放弃。
那天题目是“实现 LRU 缓存”,要求 O(1) 时间复杂度。我自信满满地用 HashMap + 双向链表开写,结果边界条件漏了一堆:缓存满了怎么删?key 不存在怎么处理?测试用例跑了十次挂九次。
凌晨三点,我盯着报错信息,突然想起三年前面试阿里的场景——当时也是这道题,我答得磕磕巴巴,最后靠嘴硬“工程经验”混过去了。
现在没人给你嘴硬的机会了。
但奇怪的是,那种久违的“烧脑感”回来了。就像生锈的齿轮重新转动,虽然卡顿,但确实在转。
三、技术分享:不是为了装,是为了“逼自己懂”
刷题一个月后,我开始在知乎和掘金发技术笔记。不是为了涨粉,纯粹是“费曼学习法”——教别人,是最好的学。
比如我写了一篇《从零实现一个分布式锁》,本来以为只是记录思路,结果评论区炸了:
“你这个 Redisson 的 watch dog 机制没考虑主从切换啊!”
“建议对比下 etcd 的 lease 机制,更可靠。”
“兄弟,你的代码有 ABA 问题!”
一开始脸红,后来反而兴奋。这些批评逼我去查官方文档、读源码、跑 benchmark。为了回应一条质疑,我甚至搭了个三节点 Redis 集群,模拟网络分区。
技术分享的本质,是把自己的知识漏洞暴露在阳光下。
有一次,我分享了一个自研的“本地缓存淘汰策略”,用了滑动窗口 + 权重评分。结果被一位阿里 P7 指出:“你这在高并发下会有竞争条件,CAS 操作没加 volatile。”
我当场愣住——这细节我真忽略了。但感谢他,让我意识到:你以为的“优化”,可能只是“自嗨”。
四、真实的踩坑:那些没人告诉你的事
坑1:盲目追新,不如把基础打穿
裸辞初期,我看啥都想学:Rust、WASM、eBPF、Dapr……结果每个都浅尝辄止。直到一次面试,面试官问:“HTTP/2 的多路复用和 TCP 的拥塞控制冲突吗?”
我懵了。回去一查,才发现自己连 TCP 的慢启动、CUBIC 算法都说不清。
教训:框架会过时,协议和原理不会。
后来我把重点放回基础:操作系统、网络、数据库。花两周重读《CSAPP》,用 Go 手写了个简易 HTTP 服务器,连 epoll 和 IO 多路复用都自己模拟了一遍。
面试时再被问“为什么 select 有 fd 数量限制”,我能从 fd_set 的位图结构讲到 poll 的链表改进,再到 epoll 的红黑树 + 回调——面试官眼睛亮了。
坑2:只刷题不实践,等于纸上谈兵
LeetCode 刷到 200 题后,我一度膨胀。结果面一家做实时音视频的公司,对方让我设计一个“低延迟的弹幕系统”。
我张口就来:“用 Kafka 做消息队列,WebSocket 推送……”
对方打断:“Kafka 有秒级延迟,我们的要求是 200ms 内。”
瞬间冷汗。回去后,我用 Netty + Redis Streams 重做方案,甚至测了不同 payload 下的吞吐量。这才明白:面试题不是考你会不会背答案,而是看你能不能把技术落地到具体场景。
坑3:闭门造车,不如加入社区
有段时间我特别孤僻,觉得“只要技术够硬,offer 自来”。结果投了 20+ 简历,回复率不到 10%。
后来在杭州 Gopher Meetup 上认识了个字节的哥们。聊到我在做的“基于 eBPF 的 API 监控工具”,他直接拉我进了他们的开源 SIG。不仅帮我 review 代码,还内推了三个岗位。
技术人的社交,不是喝酒吹牛,而是代码互审、issue 讨论、PR 合并。
五、转折:当“技术探索”变成“价值输出”
今年二月,我接到一个意外电话——是之前分享过的一篇《Go 内存池优化实战》被某 SaaS 公司 CTO 看到了。他们正遇到内存频繁分配导致 GC 压力大的问题。
面试很特别:没有算法题,而是直接给生产日志,让我现场分析 heap profile。我用了 pprof + flame graph 定位到某个高频调用的 struct 没做对象复用,建议引入 sync.Pool。
他们当场决定给 offer,薪资比裸辞前高了 15%。
签 offer 那天,老婆问我:“这次为啥这么顺利?”
我说:“因为我不是在‘找工作’,而是在‘解决问题’。”
六、给同样迷茫的技术人的几点真心话
裸辞不可怕,可怕的是停止输入
即使没工作,也要保持“技术手感”。每天写代码,哪怕只是 30 分钟。面试题是镜子,照出你的知识盲区
别把它当成考试,当成自我诊断工具。每错一道题,都是升级的机会。分享不是炫耀,是构建技术信用
你在社区留下的每一篇笔记、每一个 PR,都是未来的“简历外挂”。房贷和焦虑真实存在,但别让它定义你
我也曾盯着银行卡余额失眠,但记住:市场永远需要能解决问题的人,而不是“完美履历”的人。
最后:技术人的 Gap Year,也可以是“加速期”
现在回头看这半年,它不是空白,而是一次强制重启。我重新学会了“为兴趣编码”,而不是“为 KPI 堆屎山”。
上周五晚上,我和老婆在小区楼下散步。她说:“你最近眼睛有光了。”
我笑:“因为终于不用天天改‘紧急修复线上样式错位’的需求了。”
下周我就要去新公司报道了。岗位是高级后端工程师,base 28k,还有期权。更重要的是,团队在做云原生可观测性平台——正是我这半年深挖的方向。
房贷还在,但我不慌了。
因为我知道,只要手还能敲代码,脑子还能思考,就永远有出路。
技术这条路,拼的从来不是谁跑得快,而是谁能在低谷时,依然愿意点亮 IDE 的那盏灯。
P.S. 如果你也在 Gap,或者正准备裸辞——别怕。
我在 GitHub 开了个仓库 gap-year-coding,记录了这半年的所有学习路径、项目代码和面试复盘。
欢迎 Star,更欢迎 PR。毕竟,程序员的世界,从来不是一个人的战斗。

评论 0