清晨六点半,鹏城的天刚蒙蒙亮。
林晨已经坐在书桌前,屏幕上是Leetcode的t厂高频150题列表。他昨晚只睡了不到六小时,但此刻精神异常亢奋——距离后天的技术面试,只剩下不到两天了。
“先从动态规划开始”。他自言自语,点开第一题“最长递增子序列”。
手指在键盘上敲击,思路在脑海中流转。这半年自学AI,他其实没怎么刷算法题,大部分时间都花在机器学习理论和实战项目上。但t厂的面试传统他很清楚:算法是基本功,过不了这一关,再好的项目经验也白搭。
第一题顺利解出,时间复杂度o(n2)。他皱了皱眉,切换到题解区,看到最优解是o(n log n)的贪心+二分法。
“得优化”。他重新打开编辑器。
这不是简单的刷题,而是重建算法思维的过程。他需要把那些被深度学习框架封装起来的底层逻辑重新激活——数组、链表、树、图、递归、分治、动态规划……这些计算机科学的基础构件,就像建筑的地基,决定了上层AI模型能建多高。
上午九点,苏婉轻轻推开书房门,端来一杯热牛奶和两个包子。
“先吃点东西”。她把早餐放在桌角,“乐乐已经送去幼儿园了”。
林晨这才从代码中抬起头,揉了揉发酸的眼睛:“谢谢老婆”。
“准备得怎么样”?苏婉看着他布满血丝的眼睛,有些心疼。
“算法题刷了二十道,正确率还行,但有些解法不够优雅”。林晨咬了口包子,“下午面试官肯定会追问优化思路,我得把每种解法的时间复杂度和空间复杂度都吃透”。
苏婉在他身边坐下:”你那个投资系统的代码,要不要再梳理一遍?之前你自己练习时,我觉得你讲技术架构讲得特别好”。
“对,这是重头戏”。林晨快速吃完早餐,打开另一个文件夹,“这是我用pytorch写的量化交易模型,融合了LStm时序预测和强化学习策略优化。面试时如果问到实战项目,我就拿这个举例”。
他点开代码文件,一行行解释给苏婉听——虽然妻子不是技术出身,但她的反馈能帮他判断讲解是否通俗易懂。
“你看这里,我用了注意力机制来捕捉市场中的异常波动信号”。林晨指着屏幕,“传统的技术指标比如mAcd、RSI,都是基于固定公式,但市场是动态的。我的模型会学习在不同市场环境下,哪些指标更有效”。
苏婉认真听着,偶尔提问:“那你怎么防止过拟合?万一模型只在历史数据上表现好呢”?
“问得好”!林晨眼睛一亮,“这正是我花心思最多的地方。我做了三件事:第一,数据增强,用随机噪声和时序切片来扩充训练集;第二,早停策略,监控验证集损失,一旦连续五个epoch不下降就停止训练;第三,集成学习,训练多个不同结构的模型,投票决定最终交易信号”。
他边说边调出模型训练日志,展示给苏婉看。那些曲线图、数据表、回测结果,都是这半年心血的结晶。
上午十点半,算法题刷到第四十道时,林晨的手机响了。
是张伟。
“晨哥,准备得咋样了”?电话那头传来熟悉的声音。
“正在拼命”。林晨活动了下僵硬的脖子”,后天上午面试,面试官是技术总监陈博士”。
“陈博士啊……”张伟语气严肃起来,“那可是t厂AI部门的定海神针。我打听过了,他面试有个特点:不喜欢炫技,喜欢问基础。你机器学习理论复习得怎么样”?
“正在看”。林晨切换到另一个窗口,上面是《pattern Recognition and machine Learning》的电子版,“贝叶斯估计、支持向量机、集成学习这些经典算法,还有深度学习里的反向传播、梯度消失、正则化……”
“不够”。张伟打断他,“陈博士可能会问得更深。比如,你能从信息论的角度解释dropout为什么能防止过拟合吗?或者,transformer里的位置编码,为什么用正弦余弦函数而不是可学习参数”?
林晨愣住了。
这些问题他确实没深入思考过。平时用pytorch搭模型,都是调现成的模块,底层原理虽然知道个大概,但真要上升到数学本质的层面……
“我明白了”。他深吸一口气,“还有四个小时,我重点补这些理论深度”。
挂断电话,林晨立刻调整复习策略。他不再盲目刷题,而是打开笔记本,开始系统梳理机器学习的关键概念。
偏差与方差的权衡——模型复杂度和泛化能力的关系,用公式推导最优解。
梯度下降的收敛性证明——从泰勒展开到学习率的选择,为什么Adam优化器比SGd更稳定。
卷积神经网络的平移不变性——从数学上解释为什么cNN适合图像识别。
注意力机制与人类认知的类比——为什么transformer在NLp任务上碾压RNN。
时间一分一秒流逝。书房里只有键盘敲击声和偶尔的翻书声。林晨完全进入了心流状态,那些抽象的理论在他脑海中逐渐具象化,变成可理解的逻辑链条。
中午十二点,苏婉做了简单的面条。林晨边吃边在餐桌上画系统架构图。
“如果面试官让我设计一个推荐系统,我要从这几个层面回答”。他用筷子在桌面上比划,“数据层:用户行为日志怎么收集和清洗;特征层:用户画像、物品属性、上下文特征怎么构建;模型层:协同过滤、矩阵分解、深度学习模型怎么选型和融合;服务层:怎么保证高并发下的实时推荐……”
苏婉看着他专注的样子,忍不住笑了:“你现在像个备战高考的学生”。
“比高考压力大”。林晨苦笑,“高考考砸了还能复读,这次面试要是没过,我不知道还有没有勇气继续找”。
“别说丧气话”。苏婉握住他的手,“你这半年的努力我看在眼里。从零开始学AI,还能做出能赚钱的投资系统,这已经证明你的能力了。面试只是让更多人看到你的价值”。
林晨点点头,心里暖了一下。
下午一点,他开始最后的模拟演练。
打开摄像头,对着屏幕自我介绍:“面试官好,我是林晨,有十年全栈开发经验,最近半年专注于AI和量化交易领域。我独立开发了一套智能投资系统,融合了深度学习和强化学习,在A股实盘运行半年,年化收益率达到……”
语速、语调、重点突出。他反复练习了三遍。
然后是技术问题的模拟回答。他假设了各种可能的问题:
“请解释反向传播算法的推导过程”。
“如果让你优化一个日均百亿请求的推荐系统,你会从哪些方面入手”?
“如何看待大模型时代的AI伦理问题”?
每个问题他都准备了不同深度的回答版本——浅层解释给非技术面试官听,深度剖析给技术专家听。
傍晚六点,林晨终于合上了电脑。
晚饭后,他继续复习。十点钟,乐乐已经睡了,苏婉端来一杯热牛奶。
“张伟刚才打电话来了”。苏婉说”,他说明天下午可以帮你安排一场模拟面试,就在t厂内部,找一个资深工程师帮你找找感觉”。
林晨一愣,随即感激地点点头:”太好了。麻烦他了”。
“他说时间定在明天下午两点,让你一点半到t厂”。
“好”。林晨看了眼时间”,我今晚再看一会儿,明天一早再过一遍重点”。
“别太晚”。苏婉轻轻拍了拍他的肩膀。
林晨继续看着屏幕上的笔记,那些公式、概念、架构图像一张张卡片,被他在脑海中反复梳理、分类、连接。
十一点半,他合上电脑,躺到床上。窗外,鹏城的夜色正浓,远处的高楼灯火通明。
明天是模拟面试,后天是正式面试。
他闭上眼睛,深吸一口气。
三天。从接到通知到正式面试,只有三天。这三天里,他要把自己这半年的所学、所思、所做,全部调动起来,在几个陌生人面前展示出来。
压力很大,但他知道,他已经准备好了。
至少,他比半年前那个被裁员时茫然无措的自己,准备好了太多。