技术探索与实践总结:一个被裁员后啃区块链、刷面试题的异地程序员自白
去年十月的一个周五晚上,我坐在出租屋的飘窗上,窗外是杭州西溪湿地模糊的轮廓。屋里只有显示器幽幽的蓝光,键盘上还沾着中午点的外卖饭粒。老婆刚打完视频电话,说下周项目上线,可能又要推迟见面。我盯着 Slack 上那条“全员会议通知”,心里莫名发毛——大厂又开始“优化”了。
果然,周一早上九点半,HR 和直属领导把我叫进小会议室。没有寒暄,开门见山:“公司战略调整,你的岗位在本轮 HC(人力成本)削减范围内。”
月薪从 22k 到 0,房租 3500,异地恋爱每月高铁票 800+……那一刻,我脑子里跑的不是代码,是房贷计算器。
被裁之后:焦虑、刷题、和凌晨三点的区块链白皮书
失业头三天,我瘫在床上刷 BOSS 直聘,投了 47 份简历,只收到 3 个回复。其中两个是外包,一个让我“先做一套笔试题”。
老婆在电话里安慰我:“要不回老家考公务员?”
我说:“我连 Redis 缓存穿透都还没搞明白,你让我去背申论?”
不行,得自救。
我翻出压箱底的《区块链原理与应用》,这本书还是 2019 年在某次技术大会上顺的,扉页上写着“颠覆未来”,结果一直躺在书架上吃灰。当时觉得这玩意儿太虚,不如多刷几道 LeetCode 实在。可现在,市场变了。
“区块链工程师”岗位的薪资中位数涨到了 30k+,虽然要求也离谱——既要懂智能合约,又要会零知识证明,还得熟悉以太坊、Solana、Cosmos 多链架构。但对我这种被裁的老兵来说,与其在 Java 后端红海里卷,不如赌一把新赛道。
于是我给自己定了个计划:
- 白天:刷 LeetCode + 看面经
- 晚上:啃区块链文档 + 动手写 Demo
- 周末:远程和老婆视频,顺便让她帮我 mock 面试(她也是程序员,阿里 P7)
面试题挑战:从“讲讲 HashMap”到“如何防止重放攻击”?
刚开始复习,我以为还是老一套:
“HashMap 底层怎么实现的?”
“JVM 内存模型说一下。”
“MySQL 索引失效场景?”
结果第一场面试就给我上了一课。
对方是个 Web3 初创公司的 CTO,上来就问:
“如果用户用同一个私钥在多个链上签名交易,会不会有安全风险?你怎么设计 nonce 机制防止重放攻击?”
我当场懵了。脑子里只有“nonce 是个计数器”,但具体怎么跨链防重放?完全没实操过。
挂掉电话后,我立马打开 Geth 源码,搭了个本地以太坊节点,用 Hardhat 写了个简单的 ERC-20 合约,然后故意重复提交同一笔交易——果然被拒绝了。再看日志,原来每个账户的 nonce 是全局递增的,交易必须严格按序执行。
那一刻我意识到:光背概念没用,得动手。
于是接下来两周,我干了三件事:
用 Solidity 重写了之前做的电商优惠券系统
把“领券-核销”逻辑搬上链,用户地址作为唯一 ID,couponID 用 mapping 存储状态。虽然 gas 费贵得肉疼(测试网也要 0.002 ETH/笔),但至少理解了事件日志、gas 优化、reentrancy 攻击防护。参加了一场线上“面试题挑战”活动
是某个社区组织的,每周五晚八点,10 个人连麦互问区块链难题。第一次我被问:“Merkle Tree 在以太坊区块头里起什么作用?”
我支支吾吾说“校验交易”,人家直接甩出黄皮书第 4.3 节截图:“是 State Root、Transaction Root 和 Receipts Root 三个 Merkle Root 共同构成区块头完整性验证。”
那天晚上我脸红得像部署失败的红色日志。给老婆演示我的“去中心化约会记录” DApp
用 IPFS 存我们每次见面的照片哈希,链上记录 date_id 和 timestamp。她说:“这不就是个 fancy 的备忘录?”
我说:“重点是不可篡改!以后吵架你说‘上次明明是你迟到’,我直接 show 交易哈希!”
她笑出声:“你怕不是想用区块链管我吧?”
实践出真知:从理论到落地的坑
真正让我对区块链改观的,是一次“失败”的实践。
我想做个简单的 NFT 门票系统,用于线下技术沙龙。用户 mint 一个 NFT,扫码入场时验证 ownership。听起来简单吧?
结果踩了三个大坑:
- Gas 费太高:mint 一次要 0.01 ETH(当时约 15 刀),没人愿意为免费活动付钱。后来改成 lazy mint(链下签名,入场时才上链),成本降了 90%。
- 钱包兼容性问题:有人用 MetaMask,有人用 Coinbase Wallet,还有人用国产钱包。Web3.js 的 provider 注入方式五花八门,最后不得不封装一层 adapter。
- 前端体验灾难:用户点“连接钱包”后弹出 5 个确认框,直接关页面走人。我这才明白为什么很多 DApp 用户流失率超高——技术很酷,但 UX 不是人用的。
这些坑,光看白皮书永远学不会。只有亲手部署、被用户骂、看 analytics 数据暴跌,才能长记性。
面试逆袭:当“区块链经验”变成谈薪筹码
今年二月,我面一家做 DeFi 协议的公司。终面时,面试官(后来的 boss)问我:“看你简历写做过 NFT 门票系统,遇到的最大挑战是什么?”
我没背标准答案,直接打开 GitHub,show 了那段处理 lazy mint 的代码,还吐槽了 MetaMask 的 provider 检测 bug。
他说:“你这代码风格……有点像我们早期的 commit。”
一周后 offer 到手:月薪 28k,比裁员前高了 6k。更重要的是,他们接受我 remote —— 这意味着我可以搬到老婆所在的城市,结束异地。
谈薪时 HR 问:“你期望多少?”
我说:“28k 可以,但我希望每周三能早走两小时,陪她去医院复查(她去年做了甲状腺手术)。”
HR 愣了一下,笑着说:“我们 CEO 也是异地过来的,理解。批了。”
写在最后:技术探索的本质,是解决真实问题
回顾这半年,我最大的感悟不是“区块链多牛”,而是:所有技术探索,必须锚定在真实场景里才有价值。
很多人(包括曾经的我)学新技术,是为了“显得前沿”,为了简历好看。但当你真正用它解决一个问题——哪怕只是“证明我和老婆确实见过面”——技术才活过来。
我也终于明白,为什么大厂面试越来越爱问“你做过什么项目”而不是“背过什么概念”。因为能跑通的代码,比完美的理论更有说服力。
至于“面试题挑战”?它不该是背题库,而应是检验你是否真的理解、是否能动手、是否能在压力下清晰表达。就像我老婆 mock 我时说的:“别背八股文,说人话。就像你现在跟我解释一样。”
给同样在路上的你几点建议
别怕从“玩具项目”开始
我的第一个合约只有 20 行,还漏了 require 校验。但正是这个破玩意儿,让我理解了 msg.sender 和 tx.origin 的区别。把学习过程公开化
我在 GitHub 写 weekly log,记录每天学了啥、卡在哪。意外收获了几个同行关注,甚至因此拿到内推。技术之外,别忘了生活
异地那半年,我常因焦虑熬夜 coding,结果效率低下还伤身体。后来和老婆约定:每晚十一点必须关电脑,视频聊半小时天。代码可以重构,但陪伴不能重来。面试不是考试,是对话
遇到不会的,直接说“这块我不熟,但我猜可能是 XXX,回去我查证”。诚实比装懂强一百倍。
如今,我坐在新城市的公寓里,窗外是长江。桌上摆着两台显示器,一台跑着 Hardhat 测试,一台开着 Zoom——老婆在隔壁房间加班。
下个月,我们打算用自己写的 DApp 记录结婚纪念日。链上存誓言,IPFS 存照片,gas 费我出。
毕竟,最好的技术实践,从来不是为了炫技,而是让生活,哪怕只有一点点,变得更值得记住。
共勉。

评论 0