面试官翻着我的简历,看到Python这一栏,眼神里带着点怀疑。我没多解释,直接打开笔记本,敲了20行代码给他看。
那是一段用Python写的数据清洗脚本。没有用pandas,没有用numpy,就纯标准库。面试官看完,问了一句,这能跑吗。我按下回车,数据在屏幕上刷了一屏,他点了点头。
代码的核心就一个函数,处理那种乱七八糟的日志文件。文件里混着空行,重复项,还有格式不对的时间戳。我用生成器逐行读,避免了内存爆炸。
关键在哈希去重,用set记住见过的行,垃圾数据直接丢。时间戳用了正则匹配,匹配不上的行单独归档,不报错,不中断。
面试官问我为什么不用现成库。我说生产环境有时候装不了pandas,但Python标准库每个环境都有。代码跑起来不带依赖,放到服务器上直接能用。这句话他听进去了。
整个脚本不超过40行,核心逻辑就那20行。每个函数只干一件事,名字起得直白,clean_line就做清洗,parse_time就解析时间。变量名也简单,line就是一行,seen就是见过的集合。
没有花哨的装饰器,没有复杂的类继承。就是循环,判断,赋值。Python最基础的东西,组合起来解决一个实际问题。面试官问我设计思路,我说先处理最简单的数据,再慢慢加边界条件。
他让我现场加一个功能,把清洗后的数据按天分组统计条数。我改了三行,加了两个变量,跑通。他笑了,说这才是他想要的Python开发者。不是说会用多少花架子,是能拿代码干实事。
那20行代码的核心逻辑,现在回想起来就四句话。读一行,判一行,存一行,算一行。不整虚的,不绕弯子,数据进来,结果出去。
面试结束的时候,他跟我说,那个脚本他其实半年前处理同样的问题写过,用了30行,慢了一倍。我那个set去重和生成器的组合,他没想到。我说Python的set查找是O(1),生成器省内存,组合起来就是快。
最后他给我的评价就一句,这人写代码有脑子。我觉得这句话比什么证书都值钱。