拿下技术面上传简历

一个常驻服务启动时把一份 100 万行的 CSV 一次性载入内存,每行解析成 dict 缓存起来(8 个字段:3 个短字符串、2 个 int、1 个 float、1 个 bool、1 个时间戳字符串)。实测进程 RSS 约 800MB,而机器只给了 1GB,跑一段时间后被 OOM Killer 干掉。你会怎么把常驻内存压下来?请说出你会选的具体方案、预估能降到多少、以及这个方案让你牺牲了什么。

工程与系统设计代码与工程3-5 年知识点 1 个

面试官在考什么

判断他是否真的理解 CPython 对象模型与内存开销的来源,还是只会背 __slots__ / namedtuple 的名词;以及在机器规格这种成本约束下能否做出可落地的取舍。

Python 语言特性

回答框架 · 前两步

  1. 先定位开销来源:开销大头是「每行一个容器对象 + 每行一个 __dict__ + 每行若干个独立 str 对象」,而不是数据本身;一个装了 8 个 key 的 dict 加上它的 __dict__ 与 8 个字段对象,量级在几百字节/行。
  2. 方案一:换成 dataclass(slots=True) 或 namedtuple,去掉每行的 __dict__ 与哈希表,通常能省 30%~50%。

还有 3 条答案要点、 3 层追问、 4 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

同一能力域的其他题