技术探索与实践总结:一个被裁员后啃区块链、刷面试题的异地程序员自白

清醒开发者
2025-12-12 20:03
阅读 251

去年十月的一个周五晚上,我坐在出租屋的飘窗上,窗外是杭州西溪湿地模糊的轮廓。屋里只有显示器幽幽的蓝光,键盘上还沾着中午点的外卖饭粒。老婆刚打完视频电话,说下周项目上线,可能又要推迟见面。我盯着 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 是全局递增的,交易必须严格按序执行。

那一刻我意识到:光背概念没用,得动手。

于是接下来两周,我干了三件事:

  1. 用 Solidity 重写了之前做的电商优惠券系统
    把“领券-核销”逻辑搬上链,用户地址作为唯一 ID,couponID 用 mapping 存储状态。虽然 gas 费贵得肉疼(测试网也要 0.002 ETH/笔),但至少理解了事件日志、gas 优化、reentrancy 攻击防护。

  2. 参加了一场线上“面试题挑战”活动
    是某个社区组织的,每周五晚八点,10 个人连麦互问区块链难题。第一次我被问:“Merkle Tree 在以太坊区块头里起什么作用?”
    我支支吾吾说“校验交易”,人家直接甩出黄皮书第 4.3 节截图:“是 State Root、Transaction Root 和 Receipts Root 三个 Merkle Root 共同构成区块头完整性验证。”
    那天晚上我脸红得像部署失败的红色日志。

  3. 给老婆演示我的“去中心化约会记录” 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 我时说的:“别背八股文,说人话。就像你现在跟我解释一样。”


给同样在路上的你几点建议

  1. 别怕从“玩具项目”开始
    我的第一个合约只有 20 行,还漏了 require 校验。但正是这个破玩意儿,让我理解了 msg.sender 和 tx.origin 的区别。

  2. 把学习过程公开化
    我在 GitHub 写 weekly log,记录每天学了啥、卡在哪。意外收获了几个同行关注,甚至因此拿到内推。

  3. 技术之外,别忘了生活
    异地那半年,我常因焦虑熬夜 coding,结果效率低下还伤身体。后来和老婆约定:每晚十一点必须关电脑,视频聊半小时天。代码可以重构,但陪伴不能重来

  4. 面试不是考试,是对话
    遇到不会的,直接说“这块我不熟,但我猜可能是 XXX,回去我查证”。诚实比装懂强一百倍。


如今,我坐在新城市的公寓里,窗外是长江。桌上摆着两台显示器,一台跑着 Hardhat 测试,一台开着 Zoom——老婆在隔壁房间加班。

下个月,我们打算用自己写的 DApp 记录结婚纪念日。链上存誓言,IPFS 存照片,gas 费我出。

毕竟,最好的技术实践,从来不是为了炫技,而是让生活,哪怕只有一点点,变得更值得记住。

共勉。

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝