Snowflake 面试中会遇到哪些问题?
作者 Aaron Cao · 更新于

你会遇到架构问题(存储与计算分离、虚拟仓库、云服务层)、存储问题(微分区、聚类键、分区剪枝)、数据生命周期问题(Time Travel、零复制克隆、Snowpipe、流与任务),以及仓库规模过大或查询扫描数据过多的成本或性能情景题。面试更看重推理,而不是记忆。
Snowflake 面试通常以哪些架构问题开场?
Snowflake 面试通常从架构开始,因为后续每个问题都以此为基础。你需要能用自己的话描述三个层次:存储层将数据以压缩的列式微分区形式保存在云对象存储中;计算层由虚拟仓库组成,每个仓库都是运行查询的独立集群;云服务层负责身份验证、元数据、查询解析与优化,以及事务。第一个追问通常是为什么存储与计算分离很重要,答案在于独立性:多个团队可以使用各自的仓库访问同一份数据,不会争用相同的处理器,而且只有仓库运行时才需要支付计算费用。
- 虚拟仓库。规模、自动挂起与自动恢复,以及用于并发处理的多集群仓库。追问:更大的仓库能加速什么,又不能加速什么?
- 结果与元数据缓存。完全相同的重复查询可以直接使用结果缓存;请说明什么情况会使缓存失效。
- 版本与账户。角色、用户,以及用于访问控制的角色层级;需要说明为什么向角色而不是用户授予权限更易于扩展。
- 半结构化数据。
VARIANT类型、JSON 的存储与查询方式,以及何时应将其展开为列。
回答时要说明机制及其一个后果。说计算可以独立扩展只是一句口号;解释更大的仓库有助于大规模扫描,却无法改善受延迟限制的小型查询,才是面试官期望的深度。
应该准备哪些存储与性能问题?
你每天都使用 Snowflake,却担心问题会深入到日常编写的 SQL 之下。确实如此,因此下面按照通常的提问顺序介绍存储模型,并附上每一项常见的追问。
- 微分区。数据存储在不可变的数据块中,其中包含各列值范围的元数据。追问:优化器如何利用这些元数据跳过分区,分区剪枝又取决于什么?
- 聚类。自然聚类来自加载顺序;聚类键会重新组织大表,使针对相应列的筛选能够有效进行分区剪枝。追问:为什么聚类会产生成本,而不是免费的性能收益?如何判断一张表是否需要聚类?
- 查询剖析。查询缓慢时应检查哪些方面:扫描分区数与总分区数的对比、数据是否溢出到本地或远程存储,以及联接是否导致数据量激增。
- 物化视图与搜索优化。两者分别能加速什么,以及各自增加了哪些维护成本。
- Time Travel 与 Fail-safe。在保留期内查询或恢复更改前的数据;需要说明保留期是一项设置,也会产生成本,并解释 Fail-safe 的用途。
- 零复制克隆。在任意一方发生变化前,克隆与原对象共享底层微分区,因此克隆大表速度很快,且最初不产生额外存储费用。
谈到每项功能时,都要说明它的成本。对于需要支付 Snowflake 账单的公司,面试官更重视这种成本意识,而不只是功能名称。
数据管道与成本情景题通常如何提问?
高级职位的多轮面试会给出具体情景。一个典型例子是:某位应聘保险公司分析平台岗位的数据工程师得知,在数据量几乎没有增长的情况下,每月 Snowflake 账单却翻了一番。出色的回答会按顺序调查:哪些仓库消耗了最多额度;是否已设置自动挂起,让闲置仓库停止计费;某个计划任务是否运行在规模过大的仓库上;重复加载的仪表板是否未命中结果缓存;以及是否有少数查询因为筛选列并非数据的聚类依据而扫描整张表。面试官评估的是调查顺序,而不是某一个修复方案。
其他常见情景包括:比较使用 Snowpipe 持续摄取与定期执行 COPY 加载时各自的延迟;使用流和任务进行变更捕获,以及如何让任务具备幂等性;有人误截断表后如何使用 Time Travel 恢复;合作伙伴要求在不复制数据的情况下获得读取权限,此时应使用安全数据共享;以及如何为不断扩大的组织设计角色。先说明约束,再选择机制,并指出其成本。
面试前应大声演练这些问题及其追问;模拟面试模式会提出情景题并进一步追问,其他数据与工程题库则汇总在按职位和主题分类的面试问题中。
AI 面试助手能帮助回答 Snowflake 问题吗?
在对话式面试环节中可以,但要遵守明确的使用边界。SubcueAI 的原生 macOS 和 Windows 桌面应用会采集系统音频和你的麦克风音频,并在本地浮层中显示简短的回答建议。因此,当面试官询问聚类键为了实现分区剪枝需要付出什么代价时,相关机制会显示在你的屏幕上,而你可以用自己的话进行解释。浏览器扩展适用于 Chrome 和 Edge 中基于浏览器标签页的通话,并且只采集会议标签页的音频。不会有机器人加入通话,也不会向会议页面注入任何内容;设置方法请参阅教程页面。
使用边界包括:受监考的 SQL 测评、屏幕录制、公司管理的笔记本电脑,以及在他人观察下编写查询的实时练习,均不在适用范围内。SubcueAI 创始人 Aaron Cao 将产品描述为对你已有知识的提示,而不是知识的替代品;因此,它会根据你的简历和你自己的表达方式提供帮助。具体边界已整理在可检测性专题中。