返回博客列表
软件开发 SDE

Databricks SWE New Grad面试题和答案

New Grad Interview Questions & Answers

2025-02-15
20分钟阅读
Interview Expert

Databricks的面试是真硬核,尤其对New Grad,bar不比senior岗低。今天就来复盘一下我踩过的坑和一些血泪教训,希望能帮到正在准备的你。

整个流程下来,感觉Databricks非常看重候选人的Coding能力和对分布式系统的理解,毕竟是做大数据的公司嘛。流程基本是:Recruiter Call -> OA -> Technical Phone Screen -> Virtual Onsite -> Hiring Manager Round。每个环节都可能挂人,所以千万不能掉以轻心。

OA是在CodeSignal上做的,70分钟4道题,难度在LC Easy到Medium之间。我碰到两道Easy两道Medium,时间有点紧。建议大家刷题时一定要掐着时间练。全程开摄像头,单页面,别想查资料了。我记得一道Medium是关于Graph的,好像是找最短路径相关的,但不是简单的Dijkstra,加了一些限制条件。另一道是DP,题目背景挺绕的,读题就花了我快10分钟,最后 겨우做出来。所以,读题速度和理解能力也很重要。

Technical Phone Screen我被问到一道IP Firewall的题,是LC 751 (IP to CIDR) 的变种。给你一堆ALLOW或DENY的规则(IP或CIDR block),判断一个IP是否被允许。规则顺序匹配,第一个匹配就决定结果。这题我卡了快20分钟,主要在IP和CIDR的转换上。一开始想用string manipulation来搞,结果越写越复杂,后来才醒悟过来,这种跟IP地址相关的题,终极奥义就是转成整数处理!

解题思路:

  1. 写一个helper function把IP地址字符串(比如"192.168.1.1")转换成32位整数。这个不难,就是split然后做位运算。
  2. 再写一个helper function来解析CIDR block(比如"192.168.1.0/24"),得到起始IP和结束IP的整数表示。对于单个IP的规则,可以看作是/32的CIDR。这里要用到子网掩码的知识,比如/24的掩码就是0xFFFFFFFF << (32-24)

3. 把所有规则预处理成(action, start_ip, end_ip)的格式存起来。

4. 查询时,把要查询的IP也转成整数,然后遍历预处理好的规则列表,找到第一个匹配的就行。

Virtual Onsite是车轮战,我面了四轮:Cross Functional + BQ, Algorithm, System Design, 和一轮纯Coding。

Algorithm轮碰到的是LC 695 (Max Area of Island) 的题。给你一个二维矩阵,找最大的连通陆地面积。经典题,用DFS或者BFS都能解。我当时用的DFS,写起来快。思路就是遍历每个格子,如果是陆地,就从这个格子开始DFS,把所有相连的陆地都访问到并计数,同时标记访问过的。面试官还问了DFS和BFS的优劣,我回答说BFS能找最短路径,但这题不关心,所以两者都行,DFS递归写起来更简洁。他还追问了如果Grid特别大,递归可能爆栈怎么办,我说可以用一个explicit stack来模拟DFS,或者用BFS。

Coding轮的题是实现一个in-place的数组增量编码。第一个数不变,后面的每个数都存成和前一个数的差值。比如 [10, 12, 15, 12] 编码后变成 [10, 2, 3, -3]。这题的坑在于in-place,如果你从前往后遍历,array[i]会被你改掉。血泪教训啊!正确的做法是从后往前遍历。

System Design问的是如何给一个类似数据库的服务增加删除和回收站功能。我提出的方案是soft delete,加一个is_deleted的boolean flag。好处是恢复数据方便,坏处是存储会一直增长。面试官追问性能优化,我提了可以搞asynchronous和parallel processing来处理这些标记删除的请求,比如用一个Message Queue,把删除请求放进去,然后有worker去异步处理。对于存储增长的问题,可以定期清理被标记超过一定时间(比如30天)的数据。我们还讨论了index的问题,加了is_deleted flag之后,查询语句都需要带上WHERE is_deleted = false,需要给这个flag建索引。

最后是Behavioral Question,Databricks的BQ问的非常细。主要就是围绕你简历上的项目,深挖技术细节。比如“你做过的最复杂的系统是什么?”“讲一次你和同事有技术分歧的经历?”“有没有重构过很烂的代码,怎么保证没搞挂?” 准备BQ真的没有捷径,就是要把自己的项目经历揉碎了,想清楚每个技术决策背后的why。STAR原则一定要用,但不要太死板,要讲成一个有起伏的故事。比如讲技术分歧,不要只说“我提出了A方案,他提出了B方案,最后我们选了A”,要讲清楚你们俩方案的trade-off,你们是怎么通过数据或者实验来做决定的,最后你从中学到了什么。

总的来说,Databricks的面试体验还是不错的,面试官都很专业。虽然难度不小,但准备充分的话还是很有机会的。我感觉他们特别喜欢对数据和分布式有热情的人。希望能帮到大家!

#Databricks #面试经验 #SoftwareEngineer #NewGrad #北美求职 #面经 #Coding #SystemDesign #FLAG #求职

延伸阅读 Recommended Reading

sdeInterviewQuestionsGuide2025

免费咨询美国求职

扫码添加小助手
获取更多干货与内推机会

WeChat QR Code
US Job Search Companion