第一个是在校生,深海科技大学计算机系大三,暑假找实习。林子轩问了一个问题。
“单链表的头插法和尾插法分别怎么实现。”
他想了一分钟,说不会,然后自己站起来走了。
第二个是毕业两年的程序员,在一家外包公司写过后台管理系统。他进门的时候手里拎着一杯奶茶,坐下来之后先问每天几点下班,有没有加班费。
孟缘说了实话。加班会有,但暂时没有专门的加班费。
奶茶哥看了一眼墙角堆成山的泡面盒,说回去考虑一下。后来没有再联系。
第三天下午,陈声在开发者论坛上翻到一个帖子。发帖人自称自学编程,用九命引擎的测试版本做了一个简单的3D场景De,在帖子里附了截图。
截图里是一片用低模搭建的森林,树木排布有疏有密,地面上光影从树叶间漏下来。不是随机撒的光斑,是按照树叶遮挡逻辑计算的。
陈声把帖子推到孟缘面前。孟缘看了一眼截图,又看了一眼发帖人的ID。
沈连河。
帖子里写了他自己的情况。不是科班出身,在一家测绘公司做过两年GIS数据处理,自学的图形学。他说九命引擎的渲染管线架构很厉害,他想参与进来。
“让他来面试。”孟缘说。
沈连河第二天上午到的。很瘦,穿着一件洗得起毛边的格子衬衫,背着一只旧到褪色的黑色双肩包,拉链坏了一半。坐下之后没有寒暄,从坏拉链的包里掏出一个U盘和一个很旧的笔记本,放在桌上。
笔记本封面磨得发白,边角贴着透明胶加固,里面夹着好几张手绘的图表。
“我看了你们的引擎结构。渲染管线里有一个问题,多光源场景下的阴影贴图合并逻辑有性能瓶颈。光源超过四个的时候,合并算法的复杂度会指数级上升。”
他说话的时候不太看人,手指无意识地搓着笔记本的边角。
林子轩把棒棒糖从嘴里抽出来,看了他整整五秒。然后把自己面前正在调试的代码窗口转过去给他看。屏幕上正好是多光源阴影合并的那一段。
“你说这个?”
沈连河凑近看了一眼,点了点头。
“这里。”他指着屏幕上的某一行,“合并的时候每个光源都单独做了一次全屏采样,四个光源就是四次。改成棋盘格分块采样,所有光源用同一个pass合并,复杂度降到常数级。”
林子轩盯着他指的那行代码看了很久,然后把一张写满算式的纸推给他,从桌下踢了把旧椅子过去。椅背上还搭着陈声的外套。
“你坐这写。写出伪代码就行。”
沈连河坐下去,从褪色的背包里掏出笔,开始在纸上画算法流程图。动作不快,但每一笔都没有犹豫。
他写了一个多小时。写完最后一页的时候,纸的边角已经被钢笔戳出了好几个小洞。他把纸递回去,林子轩接过看了两遍。
“你之前在测绘公司做什么?”
“GIS数据处理。就是处理地理信息数据,做地形建模和空间分析。”
林子轩看了孟缘一眼。孟缘知道他在想什么。GIS数据处理和游戏引擎的底层架构完全是两个领域,这个人从测绘跨到图形学,中间隔着一整条马里亚纳海沟。
“你自学的图形学?”
“学了四年。”沈连河指了指那个磨得发白的笔记本,声音很轻,“每天下班之后学一点。测绘公司加班多,有时候晚上十点才到家,只能学一个小时。”
面试结束后,孟缘把他送到门口。沈连河犹豫了一下,从那个褪色背包里掏出一个硬盘。
“里面是我这几年写的代码,大概有几千个。光影从树林透下来的逻辑,我之前在GIS里做过类似的。不是同一个问题,但数学公式有共通的。”
他说完这句,转身走了。背影像一棵被风吹了很久的树,终于踩实了脚下的土。
沈连河当天下午就收到了录用通知。孟缘开出的条件是实习工资两千,包吃住。吃是泡面和盒饭,住是出租屋的沙发。
沈连河在通讯软件上回了一个字。
好。
苏景辰放下触控笔,说这是继“嗯”“行”之后橘猫团队收到的第三个单字回复。林子轩难得抬头,说这个人比他还省字。陈声接了一句,省字大赛你俩可以组队参加,冠军奖品一根棒棒糖。
第二个实习生来得更意外。
沈连河入职第五天,孟缘接到一个电话。打电话的是深海科技大学计算机学院的辅导员,姓李,说学院里有几个学生很想找实习,听说橘猫科技是校友企业,想问能不能来参观一下。
孟缘看了一眼出租屋里堆到天花板的泡面箱子和趴在机箱上打盹的橘猫,犹豫了一秒,还是说了欢迎。