顾隐走出地铁口,阳光刺得他眯了下眼。他抬手挡了挡,脚步没停,顺着人流往前走。街边店铺陆续开门,早餐摊的油锅滋啦作响,有人蹲在路边吃煎饼果子,手里还攥着热豆浆。他穿过路口,拐进一条稍安静的街道,抬头看了眼路牌,确认方向没错。
那家公司就在前面一栋灰白色写字楼里。
他提前十分钟到了,在楼下便利店买了瓶冰水,拧开喝了一口。水凉,但不冰牙。他低头看了眼自己这身——灰色连帽卫衣、黑色工装裤,帆布鞋边有点磨白。很普通,和这座城里每天穿行的无数年轻人一样。他拉了拉帽子,把头发压住,推门进了大楼。
前台登记后,他在会客区坐了五分钟,被一个穿浅蓝衬衫的男人带去会议室。那人三十来岁,戴眼镜,手里拿着一叠简历,进门时扫了他一眼,说:“你是顾隐?”
“是我。”
“我是技术部主管,姓李。”对方坐下,翻开简历,“你投的是初级程序员岗,对吧?”
“是。”
李主管没再说话,低头看材料。顾隐坐着不动,双手放在膝盖上,背挺直,但不僵。他盯着桌角一块划痕,耳朵听着空调出风的声音。
过了十几秒,李主管抬眼:“你这简历上写,前年在一家数据公司做过三个月项目开发,用的是Java和Spring Boot框架,参与过用户权限模块设计。有这回事?”
“做过。”
“可我们联系了那家公司人事,他们查了记录,说没有你这个人入职过。”李主管把简历轻轻拍了两下,“你解释一下?”
顾隐没动,也没抬头。
“确实没正式入职。”他说。
李主管挑眉。
“我在那段时间远程协助过他们的外包项目,没走公司流程,所以人事系统里查不到。”顾隐语气平,像在陈述一件再平常不过的事,“代码提交记录还在GitHub上,如果需要,我可以现场登录账号,调出当时的分支日志和合并记录。”
李主管皱眉:“那你为什么不写清楚‘远程协作’,而是写成‘在职参与’?这不是误导?”
“是为了让简历看起来完整一点。”顾隐终于抬头,眼神平静,“我知道这不好,但我刚来这座城市,没熟人,没背景,连租房都是现金付的。我想找份工作,就得让简历看起来像那么回事。修饰了一下,但没编造技术能力。”
会议室安静了几秒。
李主管靠回椅背,手指敲了敲桌面:“所以你是承认造假了?”
“我承认写得不够准确。”顾隐说,“但我能写代码,也能解决问题。要不要试一道题?随便您出,现场写,不限语言。”
李主管盯着他看了几秒,忽然笑了下,不是嘲讽,倒像是有点意外。
他抽出一张打印纸,往桌上一放:“好啊。这是我们上个月优化的一个调度算法,原本用贪心策略,但负载均衡效果不好。你看看,能不能改进。”
纸上是一段简化的任务分配逻辑,附带一组测试数据。
顾隐拿过笔,扫了一遍,没急着写。他先问:“实际运行环境是多线程还是协程模型?”
“Go写的,协程池。”
“那要考虑上下文切换成本。”他点点头,开始写。
笔尖在纸上移动得稳,字迹工整,逻辑清晰。他先拆解问题瓶颈,指出原方案在高并发下会产生资源争抢,然后画了个简单的优先级队列结构,补充了一个动态权重调整机制。最后写了三行伪代码,标注了关键函数的作用。
全程没超过八分钟。
李主管接过纸,仔细看了一遍,眉头慢慢皱起。他翻到背面,发现下面还写着一行小字:“另附:当前数据库索引未覆盖查询字段,会导致全表扫描,建议加复合索引(字段A+B),预计响应时间可降60%以上。”
他抬眼:“这是你们系统的问题?你怎么知道?”
“刚才等的时候,我看了一眼你们官网的接口响应时间。”顾隐说,“加上这个调度服务部署路径暴露了部分架构信息,推测出来的。不算难。”
李主管沉默了。
他重新看那份简历,又看看眼前这个人——穿着旧卫衣,脸没什么表情,眼镜片反着光,看不清眼神。但他刚才写字的样子,太稳了。不是那种急于表现的人会有的节奏,而是一种……习惯性掌控。
“你这水平,不至于只应聘初级岗。”他说。
“我没证明过自己。”顾隐说,“现在也没拿到offer。”
李主管合上文件夹,站起身:“今天面试就到这里。结果明天通知。”
“好。”
顾隐也站起来,背包背上肩。走到门口时,他停下,从包里抽出一张A4纸,放在会议桌一角。
“这是我对你那个调度问题的补充思路,加了异常熔断和回滚机制。”他说,“如果以后有攻坚项目缺人,我可以随时到岗。”
说完,他开门出去。
走廊灯光白亮,地面反光。他脚步没停,穿过办公区,等电梯,下去,出门。
外头太阳已经升高,风吹过来带着点热气。他站在路边,手里还捏着那份没收回的简历复印件。前方车流缓缓移动,行人匆匆。
他目光扫过街对面。
那里有家网吧,招牌亮着,灯管闪了两下,映在玻璃门上。里面已经有几个人坐在机位前,屏幕亮着蓝光。
他看了两秒,抬脚过马路。