周一上午九点,林晨的手机震动起来。
他正在书房里整理最近自学AI的笔记,看到屏幕上显示的陌生座机号码,心跳不由自主地加快了几分。
“喂,您好”。他接起电话,声音尽量平稳。
“请问是林晨先生吗?我这边是星海科技的人力资源部,收到了您投递的后端开发工程师简历。想邀请您明天下午两点来公司参加面试,方便吗”? 星海科技。林晨快速在脑海中搜索——一家做企业SaaS服务的互联网公司,规模中等,大约三百人,在南山科技园有独立办公楼。他上周在招聘网站上海投时顺手投的,没想到这么快有回音。 “方便的,谢谢”。林晨记下了地址和联系人,挂断电话后,长长舒了一口气。
自从上次那家金融科技公司因为薪资期望谈崩后,已经过去两周。这两周里,他又陆续面了三家小公司,要么是技术栈过于陈旧(还在用Struts和jquery),要么是薪资低得离谱(开口就是15K)。每一次面试失败,都像在提醒他“35岁”这个标签在就业市场上的重量。
但这次不一样。星海科技至少是正经的互联网公司,产品有一定市场占有率,技术栈应该不会太落后。更重要的是——有面试机会,就意味着还有希望。
第二天下午一点半,林晨提前到达星海科技所在的写字楼。大厦不算新,但维护得不错,大堂里进出的大多是背着双肩包、穿着休闲的年轻人。
他对着电梯里的镜子整理了一下衬衫领子,看到自己眼角的细纹和略微发际线后移的额头,心里那股熟悉的自我怀疑又冒了出来。 “稳住”。他暗自默念,“技术过关就行”。
面试安排在二楼的一间小会议室。第一轮是技术一面,面试官是个三十出头的男子,戴着黑框眼镜,自我介绍叫王工。 问题从基础的Java集合框架开始,到多线程并发、JVm内存模型,再到Spring框架的核心原理。林晨答得流畅——这些都是他过去十年吃饭的本事,早已刻在肌肉记忆里。几个稍微深入的问题,比如“concurrenthashmap在JdK8中的优化细节”和“Spring循环依赖的解决机制”,他也结合源码实现和自己的项目经验,给出了清晰的解释。
王工一边在笔记本上记录,一边点头:“基础很扎实。那我们聊聊项目吧,您简历上写的那个跨境电商订单系统,峰值qpS能做到多少?怎么保证高可用”?这是林晨的得意之作。他详细介绍了系统架构:分库分表策略、读写分离、缓存层设计、熔断降级机制。讲到关键处,他甚至顺手在会议室的玻璃白板上画起了架构图。 “当时我们用了Redis集群做热点数据缓存,消息队列做订单异步处理,数据库层面做了主从切换和延迟监控”。林晨的语速加快,眼睛里有了光,“最紧张的一次是‘黑五’大促,订单量涨了五倍,我们提前做了全链路压测和预案,最后平稳度过”。
王工推了推眼镜:“压测数据有吗?当时发现了什么瓶颈”? “有,主要瓶颈在数据库连接池和第三方支付接口的调用超时上。我们调整了连接池参数,对支付接口做了降级策略——如果超时率超过阈值,就切换到备用通道”。林晨答道,“这些都在事后复盘文档里”。
一轮面试持续了五十分钟。结束时,王工主动和他握了握手:“林工经验很丰富,我这边没什么问题了。稍等,二面面试官马上来”。
林晨心里一松。第一关过了。 二面面试官看起来更资深些,四十岁左右,自称是技术部的高级架构师。问题开始偏向系统设计和实战场景。 “如果让你设计一个类似美团外卖的骑手调度系统,你会怎么考虑”?架构师抛出问题。 林晨思考了几秒,开始拆解:“核心是实时匹配订单和骑手,关键指标是配送效率和成本。我会分成几个模块:订单池管理、骑手状态管理、匹配算法引擎、派单执行和监控反馈。匹配算法要考虑骑手实时位置、订单目的地、骑手负载、路线规划、甚至天气因素……” 他越说越投入,从数据库选型讲到缓存策略,从算法优化讲到容灾设计。
架构师不时追问细节:“实时位置更新频率怎么定?数据量大时怎么存储和检索?匹配算法如果出现局部最优解陷阱怎么办”?这些问题有些棘手,但林晨凭借多年的实战经验,给出了务实的解决方案:“位置更新可以分级处理,空闲骑手低频更新,接单骑手高频更新;数据存储可以用时空索引数据库如postGIS,或者用Redis Geo;算法陷阱可以通过引入随机扰动和定期全局重平衡来缓解……”。 “嗯”。架构师在笔记本上写着什么,“你对微服务架构怎么看?你们之前的系统是单体还是微服务”? “我们是渐进式改造,核心订单模块先拆成了微服务”。
林晨实话实说,“微服务有好处,比如独立部署、技术栈灵活,但代价也不小——分布式事务、链路追踪、运维复杂度都上来了。我的体会是,不要为了微服务而微服务,业务规模和团队规模到了再考虑拆分”。架构师点了点头,似乎认可这个务实观点。
二面又持续了近一小时。结束时,架构师说:“我这边也差不多了。最后一面是我们技术总监,他刚好现在有时间,你直接去他办公室吧”。
林晨心里涌起一阵期待——三轮技术面,说明公司对这次招聘很重视。而且一面二面都顺利,总监面应该更多是综合评估和薪资沟通。
技术总监的办公室在走廊尽头,玻璃隔断,能看到里面摆着书架和绿植。总监姓李,看起来四十多岁,穿着poLo衫,气质更偏向管理者而非纯技术。 “请坐”。李总监示意林晨坐下,快速浏览着前两轮的面试评价,“王工和刘工对你的技术评价都不错。我简单问几个问题吧——你离开上一家公司后,这段时间在做什么”? 林晨早有准备:“主要在系统性地学习新技术,比如深入研究了Kubernetes和云原生架构,也在补AI和机器学习的基础知识。我觉得技术人需要持续更新知识库”。
“AI”?李总监抬了抬眼,“怎么想到学这个”? “我觉得这是未来趋势。而且AI和传统后端系统结合的场景越来越多,比如智能推荐、风险控制、运营自动化”。林晨回答得谨慎,没有透露自己正在秘密开发的投资系统。
李总监不置可否,转而问道:“你对加入星海有什么期望?包括技术方向和职业发展”。
林晨斟酌着用词:“我希望能在有挑战的业务场景里发挥技术价值。星海做企业SaaS,系统稳定性和扩展性要求很高,这正是我擅长的。职业发展上,我希望能在架构层面有更多贡献,也可以带团队”。
“薪资期望呢”?李总监问到了关键。 林晨心里快速盘算。星海不是大厂,但规模尚可,自己虽然有120万的长期目标,但眼下急需一份工作稳定家庭。他报出了一个务实但不算低的数字:“月薪希望能在40K到45K之间,看总包结构”。 李总监没有立即回应,在笔记本上记了一笔,然后问了几个团队管理和跨部门协作的问题。
林晨结合过去带小团队的经验,回答得中规中矩。 最后,李总监站起身:“今天的面试就到这儿。我们会在三天内给答复,无论是否通过,hR都会联系你”。
“谢谢李总”。林晨礼貌告辞。 走出星海科技的办公楼,已经是下午四点多。阳光透过科技园高楼间的缝隙洒下来,照在身上暖洋洋的。林晨站在路边,深吸了一口气。 三轮技术面试,他感觉自己发挥得不错。问题都答上来了,项目经验也得到了认可。尤其是最后总监面,虽然李总监表情平淡,但至少没有当场表现出不满意。 也许这次真的有机会。 他拿出手机,想给苏婉发条微信说下面试情况,但打了几行字又删掉了——还是等有确定结果再说吧,免得她空欢喜一场。
地铁上开始拥挤起来了。林晨站在车厢连接处,看着窗外飞速掠过的城市景观,心里那点期待像小火苗一样慢慢燃起来。如果星海能给到40K,哪怕14薪,一年也将近六十万。虽然离他曾经的百万年薪还有距离,但至少能缓解房贷压力,让苏婉不用再担心同事的议论。 更重要的是——这是一份正经的互联网技术工作,能让他保持技术手感,同时有时间继续钻研AI。
他最近已经用python搭起了简单的神经网络模型,正在用股票历史数据做训练。如果能入职星海,白天工作,晚上和周末继续研究,两不耽误。
回到家时,苏婉正在厨房准备晚饭。林晨放下背包,走到厨房门口:“今天面试了一家做SaaS的公司,感觉还行”。 苏婉转过头,眼睛亮了一下:“怎么样”?“三轮技术面都过了,等消息”。林晨尽量语气平静,“公司规模中等,技术栈应该比较新”。 “那就好”。苏婉笑了笑,继续切菜,但林晨能看出她动作轻快了些。
晚饭后,林晨陪乐乐搭了一会儿积木,然后回到书房。他没有开电脑学习,而是拿出笔记本,复盘今天的面试问题。哪些答得好,哪些可以优化,哪些知识点还需要巩固。这是他多年养成的复盘习惯——每一次面试都是学习和改进的机会。
睡前,他又刷新了一次邮箱,没有新邮件。心里那点期待开始掺杂进一丝不安。
三天内给答复,明天、后天、大后天……他默默计算着时间。
窗外夜色渐深,鹏城的霓虹灯光透过窗帘缝隙渗进来。林晨躺在床上,闭上眼睛,脑海里却反复回放着面试时的对话片段。李总监最后那个平淡的表情,到底意味着什么? 他翻了个身,告诉自己:别多想,等消息就是。
三天后,邮箱里准时收到一封来自星海科技hR的邮件。 林晨点开,心跳如鼓。 邮件正文很简短:“感谢您参加星海科技的面试。您的技术能力给我们留下了深刻印象,但经过综合评估,我们认为您与当前岗位的匹配度尚有差距。我们已经将您的简历存入人才库,期待未来有机会合作……” 后面的话,林晨没有再往下看。 他坐在电脑前,盯着屏幕,足足五分钟没有动。
窗外阳光明媚,书房里安静得能听见自己的呼吸声。 又一次。 期待燃起,又无声熄灭。