Databricks面试会问哪些问题?
作者 Aaron Cao · 更新于

通常分为四类:Delta Lake(事务日志、ACID保证、时间旅行、MERGE)、奖牌架构(青铜层、白银层、黄金层)、Databricks上的Spark(分区、混洗、缓存、集群规模),以及治理(Unity Catalog、工作区、作业)。场景题会给你一条缓慢或失败的管道,并根据你的排查过程评分。
首先会问哪些Delta Lake问题?
Databricks面试通常从Delta Lake开始,因为该平台正是构建在它之上的。你需要能够说明Delta表相较于普通Parquet文件增加了什么:记录每次提交的事务日志,由此实现原子写入、一致性读取,以及查询表的早期版本。后续问题通常可以预见:时间旅行如何工作(读取日志的早期快照)、VACUUM会删除什么以及它为何会限制可回溯的时间范围,还有MERGE如何实现更新插入和变更数据捕获模式。
- 架构强制与演进。不符合架构的写入会被拒绝,除非启用了架构演进;请说明你会在什么情况下允许演进。
- OPTIMIZE与文件布局。小文件会降低读取性能;压缩会重写这些文件,而聚类或Z-ordering会将查询所筛选的值放置在相近位置。
- 在同一张表上进行流处理和批处理。同一张Delta表既可以是流式接收端,也可以是批处理数据源;请解释Structured Streaming作业写入Delta时,“恰好一次”具体意味着什么。
- Delta Live Tables与管道。带有数据质量期望的声明式管道;你需要说明某行数据未满足期望时会发生什么。
回答时要讲清机制。说Delta符合ACID只是口号;说明事务日志如何让读取方看不到部分失败的写入,才是真正的答案。
奖牌架构和管道设计题会怎么问?
你已经构建过青铜层、白银层和黄金层,而且怀疑面试官想听的不只是这些名称。确实如此,因此本节会介绍每一层背后的设计思路,以及用于检验这些思路的问题。
- 青铜层。原始数据摄取、仅追加,并保留数据到达时的架构。追问:既然白银层更干净,为什么还要保留原始数据?为了重新处理和审计。
- 白银层。经过清洗、去重和标准化的记录。追问:对于可能延迟到达或重复到达的事件流,如何去重?水印在其中发挥什么作用?
- 黄金层。供分析师和仪表盘使用的聚合数据与业务级表。追问:谁负责定义这些指标?如何避免两张黄金层表中的收入数据不一致?
- 编排。作业、任务依赖、重试和告警。追问:如何让作业具有幂等性,从而避免重新运行时重复计数?
- 数据摄取。使用Auto Loader进行增量文件发现,以及简单的目录遍历为何无法扩展。
面试官还会询问成本:为什么通用集群不适合运行计划作业,何时应使用作业集群或无服务器计算,以及自动扩缩容和竞价实例会如何改变账单。说明约束条件,选择实现机制,并指出成本。
应该准备哪些Spark调优题和场景题?
资深岗位的面试会直接给你一个故障症状。一个典型例子是:某零售公司的平台岗位候选人被告知,一项将订单与客户维度表连接的夜间作业,在数据量激增后从几分钟延长到了数小时。出色的回答会先查看查询计划和Spark UI,而不是立即扩大集群:检查连接是否从广播连接变成了混洗连接、是否有少数键出现数据倾斜、混洗分区数是否仍与数据量匹配,以及源表是否存在可通过OPTIMIZE修复的小文件问题。面试官会根据你的排查顺序评分。
其他常见场景包括:流式作业的延迟不断增加,以及触发间隔、状态大小与水印如何相互影响;某个笔记本对一位用户可用、对另一位用户却失败,这通常是权限问题,并会引出Unity Catalog、工作区和服务主体;分析师抱怨某张表的数据陈旧,这属于数据时效性和编排问题;还有如何安全地向另一个团队开放数据,这会涉及Delta Sharing和目录级授权。
在正式通话前,大声演练这些问题及其追问;模拟面试模式专为场景题而设计,更广泛的数据与工程题库则位于按职位和主题分类的面试题页面。
AI面试助手能帮助回答Databricks问题吗?
在对话式面试环节中可以,但需要明确合理的使用边界。SubcueAI的原生macOS和Windows桌面应用会采集系统音频和你的麦克风声音,并在本地浮层中显示简短的回答建议。因此,当面试官询问水印在流式去重中的作用时,你可以在屏幕上看到相关机制,再用自己的语言进行解释。浏览器扩展支持Chrome和Edge中的浏览器标签页通话,并且只采集会议标签页的音频。不会有机器人加入通话,也不会向会议页面注入任何内容;设置步骤请参阅教程页面。
使用边界包括:受监考的测评、屏幕录制、公司管理的笔记本电脑,或在监督下编写PySpark的实时笔记本练习,均不适用,而Databricks面试最难的部分往往正是在这些环节。该助手最适合辅助架构与权衡取舍类问题。请先上传你的简历,让建议能够反映你实际构建过的管道;简历生成器会保存这份资料。