Snowflake 面试中会遇到哪些问题?

作者 Aaron Cao · 更新于

Snowflake 面试中会遇到哪些问题?
你会遇到架构问题(存储与计算分离、虚拟仓库、云服务层)、存储问题(微分区、聚类键、分区剪枝)、数据生命周期问题(Time Travel、零复制克隆、Snowpipe、流与任务),以及仓库规模过大或查询扫描数据过多的成本或性能情景题。面试更看重推理,而不是记忆。

你会遇到架构问题(存储与计算分离、虚拟仓库、云服务层)、存储问题(微分区、聚类键、分区剪枝)、数据生命周期问题(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 将产品描述为对你已有知识的提示,而不是知识的替代品;因此,它会根据你的简历和你自己的表达方式提供帮助。具体边界已整理在可检测性专题中。

常见问题

为什么 Snowflake 要将存储与计算分离?

这样,多个虚拟仓库就能独立查询同一份数据,而不会争用处理器,并且只有仓库运行时才会产生计算费用。存储随数据量增长,计算随工作负载增长,两者可以分别扩展。

什么是微分区?

微分区是表中不可变、经过压缩的列式数据块,包含各列值范围的元数据。优化器利用这些元数据跳过查询不可能需要的分区,这种分区剪枝是大多数性能问题答案的基础。

Snowflake 表应在什么情况下设置聚类键?

当表很大、查询会筛选少数几列,并且自然加载顺序无法将这些值聚集在一起时。维护聚类需要消耗额度,因此是否采用它应以查询剖析结果为依据,而不应作为默认选择。

什么是零复制克隆?

克隆对象指向与原对象相同的微分区,因此创建速度很快,而且在任意一方发生变化前不会增加存储用量。这是为生产数据创建测试或开发副本的标准方式。

SubcueAI 能在受监考的 Snowflake SQL 测试中提供帮助吗?

不能。受监考和录制的测评不在适用范围内,在他人观察下编写查询必须由你独立完成。它专为对话式面试环节设计;模拟面试模式才是提前练习这些内容的地方。

相关问题

← 更多关于 按岗位与主题分类的面试问题